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:
|
||||
logger.error("No Tidal refresh token available")
|
||||
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 = {
|
||||
'grant_type': 'refresh_token',
|
||||
|
|
@ -493,10 +501,18 @@ class TidalClient:
|
|||
if self.access_token and time.time() < self.token_expires_at:
|
||||
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
|
||||
if self.access_token and self.refresh_token:
|
||||
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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue