dromara / dromara/Sa-Token

1.46.0升级后登录报错,其中redis已经升级到7.2版本

Open
#970 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
19k
Forks
2.9k
PR merge metrics
No merged PRs in 30d

Description

报错信息如下,与文档里的常见问题排查中的错误不一样
org.springframework.dao.InvalidDataAccessApiUsageException: ERR invalid expire time in 'set' command. channel: [id: 0x8c6bc329, L:/192.168.31.7:65282 - R:192.168.31.70/192.168.31.70:6379] command: (SET), params: [[65, 117, 116, 104, 111, 114, 105, 122, 97, 116, ...], [123, 34, 64, 99, 108, 97, 115, 115, 34, 58, ...], PX, -2000, XX], promise: java.util.concurrent.CompletableFuture@325b407d[Not completed, 1 dependents]
at org.redisson.spring.data.connection.RedissonExceptionConverter.convert(RedissonExceptionConverter.java:52) ~[redisson-spring-data-35-3.50.0.jar:3.50.0]
at org.redisson.spring.data.connection.RedissonExceptionConverter.convert(RedissonExceptionConverter.java:35) ~[redisson-spring-data-35-3.50.0.jar:3.50.0]
at org.springframework.data.redis.PassThroughExceptionTranslationStrategy.translate(PassThroughExceptionTranslationStrategy.java:40) ~[spring-data-redis-3.5.2.jar:3.5.2]
at org.redisson.spring.data.connection.RedissonConnection.transform(RedissonConnection.java:209) ~[redisson-spring-data-35-3.50.0.jar:3.50.0]
at org.redisson.spring.data.connection.RedissonConnection.syncFuture(RedissonConnection.java:204) ~[redisson-spring-data-35-3.50.0.jar:3.50.0]
at org.redisson.spring.data.connection.RedissonConnection.sync(RedissonConnection.java:375) ~[redisson-spring-data-35-3.50.0.jar:3.50.0]
at org.redisson.spring.data.connection.RedissonConnection.write(RedissonConnection.java:741) ~[redisson-spring-data-35-3.50.0.jar:3.50.0]
at org.redisson.spring.data.connection.RedissonConnection.set(RedissonConnection.java:534) ~[redisson-spring-data-35-3.50.0.jar:3.50.0]
at org.springframework.data.redis.connection.DefaultStringRedisConnection.set(DefaultStringRedisConnection.java:780) ~[spring-data-redis-3.5.2.jar:3.5.2]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[?:?]
at org.springframework.data.redis.core.CloseSuppressingInvocationHandler.invoke(CloseSuppressingInvocationHandler.java:61) ~[spring-data-redis-3.5.2.jar:3.5.2]
at jdk.proxy2/jdk.proxy2.$Proxy358.set(Unknown Source) ~[?:?]
at cn.dev33.satoken.dao.SaTokenDaoForRedisTemplate.lambda$setStringAndKeepTTL$1(SaTokenDaoForRedisTemplate.java:177) ~[sa-token-redis-template-1.46.0.jar:?]
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:413) ~[spring-data-redis-3.5.2.jar:3.5.2]
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:380) ~[spring-data-redis-3.5.2.jar:3.5.2]
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:367) ~[spring-data-redis-3.5.2.jar:3.5.2]
at cn.dev33.satoken.dao.SaTokenDaoForRedisTemplate.setStringAndKeepTTL(SaTokenDaoForRedisTemplate.java:176) ~[sa-token-redis-template-1.46.0.jar:?]
at cn.dev33.satoken.dao.SaTokenDaoForRedisTemplate.update(SaTokenDaoForRedisTemplate.java:108) ~[sa-token-redis-template-1.46.0.jar:?]
at cn.dev33.satoken.dao.auto.SaTokenDaoByObjectFollowString.updateObject(SaTokenDaoByObjectFollowString.java:74) ~[sa-token-core-1.46.0.jar:?]
at cn.dev33.satoken.dao.auto.SaTokenDaoBySessionFollowObject.updateSession(SaTokenDaoBySessionFollowObject.java:55) ~[sa-token-core-1.46.0.jar:?]
at cn.dev33.satoken.session.SaSession.update(SaSession.java:412) ~[sa-token-core-1.46.0.jar:?]
at cn.dev33.satoken.session.SaSession.addTerminal(SaSession.java:343) ~[sa-token-core-1.46.0.jar:?]
at cn.dev33.satoken.stp.StpLogic.createLoginSession(StpLogic.java:507) ~[sa-token-core-1.46.0.jar:?]
at cn.dev33.satoken.stp.StpLogic.login(StpLogic.java:465) ~[sa-token-core-1.46.0.jar:?]
at cn.dev33.satoken.stp.StpLogic.login(StpLogic.java:434) ~[sa-token-core-1.46.0.jar:?]
at cn.dev33.satoken.stp.StpUtil.login(StpUtil.java:186) ~[sa-token-core-1.46.0.jar:?]

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at SaTokenDaoForRedisTemplate.setStringAndKeepTTL around lines 176-177 in the stack trace, then inspect the RedisTemplate call that issues SET with PX -2000. Reproduce the login failure with Redis 7.2 and verify that login completes without an invalid-expire-time error, adding a regression test if the project’s existing tests cover this entry point.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, redis, spring
Domain
authentication, databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
62/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.