Debrid-Link skip-Errors: Key bleibt "ready" statt "error"
fileNotAvailable, disabledServerHost, notFreeHost, serverNotAllowed, freeServerOverload, maintenanceHost, noServerHost sind LINK- oder HOST-level Fehler, nicht Key-level. Der Key antwortet ganz normal und sagt nur "diesen Link kann ich aktuell nicht verarbeiten". Vorher wurde trotzdem der Runtime-Status auf "error" gesetzt — sah in der UI aus als waere der Key kaputt und hat die Rotations-Heuristiken irritiert. Fix: bei failure.category === "skip" den Runtime-Status in Ruhe lassen. Der Key bleibt "ready" (bzw. was er vorher war). Invalid bleibt "invalid", alle anderen fehlerhaften Antworten bleiben "error". Test: Key 1 gibt fileNotAvailable zurueck → Key 2 erfolgreich. Key 1 darf danach NICHT "error" sein (per neuem Test-Helper getDebridLinkKeyRuntimeStateForTests).
This commit is contained in:
+14
-1
@@ -131,6 +131,11 @@ export function primeDebridLinkRuntimeCooldownForTests(keyId: string, cooldownMs
|
||||
setDebridLinkKeyCooldownState(keyId, cooldownMs, message, "temporary");
|
||||
}
|
||||
|
||||
export function getDebridLinkKeyRuntimeStateForTests(keyId: string): DebridLinkRuntimeState | null {
|
||||
const status = debridLinkKeyRuntimeStatuses.get(keyId);
|
||||
return status ? status.state : null;
|
||||
}
|
||||
|
||||
function clearDebridLinkKeyCooldownState(keyId: string): void {
|
||||
debridLinkKeyCooldowns.delete(keyId);
|
||||
debridLinkKeyCooldownDetails.delete(keyId);
|
||||
@@ -2678,7 +2683,15 @@ class DebridLinkClient {
|
||||
}
|
||||
} else {
|
||||
clearDebridLinkKeyCooldownState(apiKey.id);
|
||||
setDebridLinkKeyRuntimeStatus(apiKey.id, failure.category === "invalid" ? "invalid" : "error", failure.message);
|
||||
if (failure.category === "invalid") {
|
||||
setDebridLinkKeyRuntimeStatus(apiKey.id, "invalid", failure.message);
|
||||
} else if (failure.category !== "skip") {
|
||||
// "skip" means the LINK or HOST is unavailable (fileNotAvailable,
|
||||
// disabledServerHost, notFreeHost, freeServerOverload, ...), NOT
|
||||
// that the key is broken. The key responded normally — leave its
|
||||
// runtime status alone so the UI doesn't flag it as errored.
|
||||
setDebridLinkKeyRuntimeStatus(apiKey.id, "error", failure.message);
|
||||
}
|
||||
}
|
||||
if (failure.fatal) {
|
||||
logAccountRotation("ERROR", providerName, rotationLabel, "FATAL", {
|
||||
|
||||
Reference in New Issue
Block a user