Fix Tidal token refresh hammering when client credentials removed
Skip refresh attempt if client_id/secret not configured — clears stale tokens to stop retry loop permanently. Add 5-minute backoff after failed refresh to prevent hammering Tidal API every 2 seconds.
This commit is contained in:
parent
e97dc8f86a
commit
67db796958
1 changed files with 17 additions and 1 deletions
|
|
@ -406,6 +406,14 @@ class TidalClient:
|
||||||
if not self.refresh_token:
|
if not self.refresh_token:
|
||||||
logger.error("No Tidal refresh token available")
|
logger.error("No Tidal refresh token available")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
if not self.client_id or not self.client_secret:
|
||||||
|
logger.debug("Tidal client_id/secret not configured — skipping token refresh")
|
||||||
|
# Clear stale tokens so we stop retrying
|
||||||
|
self.access_token = None
|
||||||
|
self.refresh_token = None
|
||||||
|
self.token_expires_at = 0
|
||||||
|
return False
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'grant_type': 'refresh_token',
|
'grant_type': 'refresh_token',
|
||||||
|
|
@ -493,10 +501,18 @@ class TidalClient:
|
||||||
if self.access_token and time.time() < self.token_expires_at:
|
if self.access_token and time.time() < self.token_expires_at:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# Backoff: if refresh recently failed, don't retry for 5 minutes
|
||||||
|
if hasattr(self, '_refresh_failed_at') and self._refresh_failed_at:
|
||||||
|
if time.time() - self._refresh_failed_at < 300:
|
||||||
|
return False
|
||||||
|
|
||||||
# Token expired but refresh token available — try silent refresh
|
# Token expired but refresh token available — try silent refresh
|
||||||
if self.access_token and self.refresh_token:
|
if self.access_token and self.refresh_token:
|
||||||
logger.info("Tidal access token expired — attempting silent refresh...")
|
logger.info("Tidal access token expired — attempting silent refresh...")
|
||||||
return self._refresh_access_token()
|
result = self._refresh_access_token()
|
||||||
|
if not result:
|
||||||
|
self._refresh_failed_at = time.time()
|
||||||
|
return result
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue