fix: fix refresh token deadlock (#30828)

This commit is contained in:
wangxiaolei 2026-01-12 09:35:31 +08:00 committed by GitHub
parent a2e03b811e
commit 0c2729d9b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -72,12 +72,12 @@ async function getNewAccessToken(timeout: number): Promise<void> {
} }
function releaseRefreshLock() { function releaseRefreshLock() {
if (isRefreshing) { // Always clear the refresh lock to avoid cross-tab deadlocks.
isRefreshing = false // This is safe to call multiple times and from tabs that were only waiting.
globalThis.localStorage.removeItem(LOCAL_STORAGE_KEY) isRefreshing = false
globalThis.localStorage.removeItem('last_refresh_time') globalThis.localStorage.removeItem(LOCAL_STORAGE_KEY)
globalThis.removeEventListener('beforeunload', releaseRefreshLock) globalThis.localStorage.removeItem('last_refresh_time')
} globalThis.removeEventListener('beforeunload', releaseRefreshLock)
} }
export async function refreshAccessTokenOrRelogin(timeout: number) { export async function refreshAccessTokenOrRelogin(timeout: number) {