Keep session bytes on live update cadence

This commit is contained in:
Sucukdeluxe
2026-08-31 15:56:04 +02:00
parent 9ca5789627
commit 1580a160da
4 changed files with 32 additions and 4 deletions
+4
View File
@@ -4,6 +4,10 @@ All notable changes to Multi-Debrid Downloader are documented in this file.
## [Unreleased] ## [Unreleased]
### Download presentation
- Keep the sidebar session byte counter on the same live snapshot cadence as the remaining byte counter even when large-queue statistics are cached.
### Proxy limit tuning ### Proxy limit tuning
- Increase the default global proxy connection budget for new settings from 20 to 32 and raise the configurable maximum from 32 to 40 while retaining fair sharing and adaptive 429/503 backoff. - Increase the default global proxy connection budget for new settings from 20 to 32 and raise the configurable maximum from 32 to 40 while retaining fair sharing and adaptive 429/503 backoff.
+2
View File
@@ -175,6 +175,8 @@ npm exec -- tsc --noEmit
## Verifizierungen vom 31. August 2026 ## Verifizierungen vom 31. August 2026
- Unveröffentlichter Sidebar-Live-Takt-Fix: Bei laufenden Queues ab 500 Einträgen bleibt der Sitzungs-Bytezähler trotz des 1,5-Sekunden-Statistik-Caches in jedem 750-Millisekunden-Live-Snapshot aktuell. Die Bedeutung des kumulativen Sitzungszählers bleibt unverändert. Der vollständige Download-Manager-Lauf war mit 263 von 263 Tests erfolgreich.
- Vollständiger Client-Lauf nach dem Live-Takt-Fix: 2.658 Tests erfolgreich und 4 optionale JVM-Tests übersprungen; genau ein unveränderter Entpacktest überschritt unter paralleler Gesamtlast einmal sein 5-Sekunden-Limit. Der unmittelbar folgende isolierte Lauf aller 84 Entpacktests war vollständig grün. TypeScript, Main-/Renderer-Build, Self-Check und 16 von 16 Backup-API-Tests waren ebenfalls erfolgreich; die bekannte Vite-Warnung zum rund 576 KiB großen Renderer-Chunk bleibt bestehen.
- Unveröffentlichte 32/40-Limitanpassung: Proxy-Scheduler, Storage, Einstellungen, Renderer-Projektion und visuelle Fixtures 229 von 229 Tests erfolgreich. Die Main-Normalisierung deckt Standard 32, Minimum 2, Maximum 40 und Werte oberhalb des Maximums direkt ab. - Unveröffentlichte 32/40-Limitanpassung: Proxy-Scheduler, Storage, Einstellungen, Renderer-Projektion und visuelle Fixtures 229 von 229 Tests erfolgreich. Die Main-Normalisierung deckt Standard 32, Minimum 2, Maximum 40 und Werte oberhalb des Maximums direkt ab.
- Vollständiger Client-Lauf nach der 32/40-Anpassung ohne die zwei lokal nicht ausführbaren Symlink-Fixtures: 140 Testdateien erfolgreich, 1 JVM-Testdatei übersprungen; 2.658 Tests erfolgreich und 4 übersprungen. Die übrigen 22 Public-Release-Metadatentests liefen separat erfolgreich. Alle 84 Entpacktests sind unverändert grün. - Vollständiger Client-Lauf nach der 32/40-Anpassung ohne die zwei lokal nicht ausführbaren Symlink-Fixtures: 140 Testdateien erfolgreich, 1 JVM-Testdatei übersprungen; 2.658 Tests erfolgreich und 4 übersprungen. Die übrigen 22 Public-Release-Metadatentests liefen separat erfolgreich. Alle 84 Entpacktests sind unverändert grün.
- Nach der 32/40-Anpassung erfolgreich: TypeScript, vollständiger Main-/Renderer-Build, Self-Check und 16 von 16 Backup-API-Tests. Die bekannte Vite-Warnung zum rund 576 KiB großen Renderer-Chunk bleibt bestehen. - Nach der 32/40-Anpassung erfolgreich: TypeScript, vollständiger Main-/Renderer-Build, Self-Check und 16 von 16 Backup-API-Tests. Die bekannte Vite-Warnung zum rund 576 KiB großen Renderer-Chunk bleibt bestehen.
+7 -4
View File
@@ -2853,10 +2853,13 @@ export class DownloadManager extends EventEmitter {
} }
public getStats(now = nowMs()): DownloadStats { public getStats(now = nowMs()): DownloadStats {
const itemCount = this.itemCount; const itemCount = this.itemCount;
if (this.statsCache && this.session.running && itemCount >= 500 && now - this.statsCacheAt < 1500) { if (this.statsCache && this.session.running && itemCount >= 500 && now - this.statsCacheAt < 1500) {
return this.statsCache; return {
} ...this.statsCache,
totalDownloaded: this.sessionDownloadedBytes
};
}
this.resetSessionTotalsIfQueueEmpty(); this.resetSessionTotalsIfQueueEmpty();
+19
View File
@@ -84,6 +84,25 @@ describe("download live update cadence", () => {
vi.useRealTimers(); vi.useRealTimers();
} }
}); });
it("keeps the session byte counter live while large-queue statistics are cached", () => {
const root = fs.mkdtempSync(path.join(os.tmpdir(), "rd-live-session-bytes-"));
tempDirs.push(root);
const session = emptySession();
session.running = true;
const manager = new DownloadManager(defaultSettings(), session, createStoragePaths(path.join(root, "state")));
const internal = manager as unknown as {
itemCount: number;
sessionDownloadedBytes: number;
};
internal.itemCount = 500;
internal.sessionDownloadedBytes = 8 * 1024 * 1024;
expect(manager.getSnapshot().stats.totalDownloaded).toBe(8 * 1024 * 1024);
internal.sessionDownloadedBytes = 16 * 1024 * 1024;
expect(manager.getSnapshot().stats.totalDownloaded).toBe(16 * 1024 * 1024);
});
}); });
describe("snapshot revision", () => { describe("snapshot revision", () => {