From 89d2c4a8dfddc5d96c4b13473b43c62229977c8d Mon Sep 17 00:00:00 2001 From: Sol Date: Mon, 19 May 2025 11:29:09 +0800 Subject: [PATCH] fix(auth): Optimize the Same-Token refresh task. --- .../runner/SaSameTokenRefreshTask.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/cloud/common/common-auth/src/main/java/com/bgasol/plugin/satoken/runner/SaSameTokenRefreshTask.java b/cloud/common/common-auth/src/main/java/com/bgasol/plugin/satoken/runner/SaSameTokenRefreshTask.java index 6febc98..0b257d0 100644 --- a/cloud/common/common-auth/src/main/java/com/bgasol/plugin/satoken/runner/SaSameTokenRefreshTask.java +++ b/cloud/common/common-auth/src/main/java/com/bgasol/plugin/satoken/runner/SaSameTokenRefreshTask.java @@ -9,7 +9,6 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import java.time.Duration; import java.util.concurrent.TimeUnit; /** @@ -28,19 +27,30 @@ public class SaSameTokenRefreshTask { @Scheduled(cron = "0 0 * * * ?") public void refreshToken() { RLock lock = redissonClient.getLock(LOCK_KEY); + boolean acquired = false; try { - // 尝试获取锁,最多等待1秒,锁自动释放时间30秒 - boolean acquired = lock.tryLock(1, 30, TimeUnit.SECONDS); + acquired = lock.tryLock(1, 30, TimeUnit.SECONDS); if (acquired) { SaSameUtil.refreshToken(); - log.info("Same-Token refresh token success"); - Thread.sleep(Duration.ofSeconds(1).toMillis()); + Thread.sleep(1000); + log.info("令牌刷新令牌成功"); + } else { + log.info("未获取到锁"); } } catch (InterruptedException e) { - Thread.currentThread().interrupt(); // 保留中断信号 - log.error("Same-Token refresh token interrupted", e); + Thread.currentThread().interrupt(); + log.error("被中断", e); + } catch (Exception e) { + log.error("令牌刷新期间出现意外错误", e); } finally { - lock.unlock(); + if (acquired) { + try { + lock.unlock(); + log.info("锁已释放"); + } catch (IllegalMonitorStateException e) { + log.warn("未获取到令牌锁", e); + } + } } } } \ No newline at end of file