Overhaul download retry pipeline: circuit breaker, escalating backoff, shelve logic
- Provider circuit breaker: track consecutive failures per provider with escalating cooldowns (30s/60s/120s/300s), auto-invalidate Mega-Debrid session on cooldown - Escalating backoff: retry delays now scale up to 120s (was 30s max), unrestrict backoff exponential instead of linear 15s cap - Shelve logic: after 15 consecutive failures, item pauses 5 min with counter halving for gradual recovery - Periodic soft-reset: every 10 min, reset stale retry counters (>10 min queued) and old provider failures (>15 min), acts like mini-restart - Mega-Debrid queue timeout: 90s wait limit in runExclusive to prevent cascade blocking behind stuck calls - Provider-cooldown-aware retry delays: items wait for provider cooldown instead of retrying against broken service - Fix: reconnect/package_toggle now persist retry counters (previously lost on interruption, defeating shelve logic) - Mega-Debrid generate: tighter timeouts, progressive reload backoff, hoster retry limit (5x max) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
a9c8ee2ff4
commit
550942aad7
@@ -58,7 +58,8 @@ export class AppController {
|
||||
password: this.settings.megaPassword
|
||||
}));
|
||||
this.manager = new DownloadManager(this.settings, session, this.storagePaths, {
|
||||
megaWebUnrestrict: (link: string, signal?: AbortSignal) => this.megaWebFallback.unrestrict(link, signal)
|
||||
megaWebUnrestrict: (link: string, signal?: AbortSignal) => this.megaWebFallback.unrestrict(link, signal),
|
||||
invalidateMegaSession: () => this.megaWebFallback.invalidateSession()
|
||||
});
|
||||
this.manager.on("state", (snapshot: UiSnapshot) => {
|
||||
this.onStateHandler?.(snapshot);
|
||||
|
||||
Reference in New Issue
Block a user