Account-rotation logging + transient cooldown fixes
- New dedicated account-rotation.log (audit-style) so multi-account/key rotation flow is visible without rd_downloader.log noise - Mega-Debrid: always show "Account X/Y (masked@login)" label even with one account, and log a clear "TESTE Account fuer Link-Generierung..." line BEFORE every network call so the user sees which account is in play even if the call hangs - Mega-Debrid: on FAILED, log which account will be tried next (skipping disabled/limited/cooldown ones), so the rotation is auditable - Mega-Web "Antwort leer" / empty body now uses 20s cooldown instead of 120s — empty responses are typically transient server hiccups, not real failures (caused healthy accounts to be unfairly blocked) - Generic transport/unknown errors: 30s cooldown instead of 120s - Global stall watchdog no longer counts items in "validating" status — per-item validating watchdog already handles them and gives the multi-account rotation enough time. Without this fix the global watchdog could abort the unrestrict mid-rotation (e.g. account 3 of 3 still being tested) just because no download bytes had arrived - Same logging treatment applied to Debrid-Link key rotation
This commit is contained in:
+14
-11
@@ -37,6 +37,7 @@ import { abortActiveUpdateDownload, checkGitHubUpdate, installLatestUpdate } fro
|
||||
import { rotateDebugToken, startDebugServer, stopDebugServer } from "./debug-server";
|
||||
import { encryptBackup, decryptBackup } from "./backup-crypto";
|
||||
import { getAuditLogPath, initAuditLog, logAuditEvent, shutdownAuditLog } from "./audit-log";
|
||||
import { initAccountRotationLog, shutdownAccountRotationLog } from "./account-rotation-log";
|
||||
import { getDebugSetupCheck } from "./debug-setup";
|
||||
import { buildLinkExportSelection, serializeLinkExportText } from "./link-export";
|
||||
import { getRenameLogPath, initRenameLog, shutdownRenameLog } from "./rename-log";
|
||||
@@ -84,6 +85,7 @@ export class AppController {
|
||||
initPackageLogs(this.storagePaths.baseDir);
|
||||
initItemLogs(this.storagePaths.baseDir);
|
||||
initAuditLog(this.storagePaths.baseDir);
|
||||
initAccountRotationLog(this.storagePaths.baseDir);
|
||||
initRenameLog(this.storagePaths.baseDir);
|
||||
initTraceLog(this.storagePaths.baseDir);
|
||||
this.settings = loadSettings(this.storagePaths);
|
||||
@@ -557,21 +559,21 @@ export class AppController {
|
||||
return encryptBackup(payload);
|
||||
}
|
||||
|
||||
public exportSupportBundle(): { buffer: Buffer; defaultFileName: string } {
|
||||
this.audit("INFO", "Support-Bundle exportiert");
|
||||
public exportSupportBundle(): { buffer: Buffer; defaultFileName: string } {
|
||||
this.audit("INFO", "Support-Bundle exportiert");
|
||||
logTraceEvent("INFO", "support", "Support-Bundle erstellt", {
|
||||
packageCount: Object.keys(this.manager.getSnapshot().session.packages).length,
|
||||
itemCount: Object.keys(this.manager.getSnapshot().session.items).length
|
||||
});
|
||||
return {
|
||||
buffer: buildSupportBundle(this.manager, this.storagePaths.baseDir, { hostDiagnosticsMode: "cached" }),
|
||||
defaultFileName: getSupportBundleDefaultFileName()
|
||||
};
|
||||
}
|
||||
|
||||
public getSupportBundleDefaultFileName(): string {
|
||||
return getSupportBundleDefaultFileName();
|
||||
}
|
||||
return {
|
||||
buffer: buildSupportBundle(this.manager, this.storagePaths.baseDir, { hostDiagnosticsMode: "cached" }),
|
||||
defaultFileName: getSupportBundleDefaultFileName()
|
||||
};
|
||||
}
|
||||
|
||||
public getSupportBundleDefaultFileName(): string {
|
||||
return getSupportBundleDefaultFileName();
|
||||
}
|
||||
|
||||
public importBackup(data: Buffer): { restored: boolean; message: string } {
|
||||
let parsed: Record<string, unknown>;
|
||||
@@ -679,6 +681,7 @@ export class AppController {
|
||||
shutdownRenameLog();
|
||||
this.audit("INFO", "App beendet");
|
||||
shutdownTraceLog();
|
||||
shutdownAccountRotationLog();
|
||||
shutdownAuditLog();
|
||||
if (this.settings.historyRetentionMode === "session") {
|
||||
clearHistory(this.storagePaths);
|
||||
|
||||
Reference in New Issue
Block a user