From 55e5b0079a1cbfa79b09ff707b713a94b20706cf Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Mon, 2 Mar 2026 21:06:00 +0100 Subject: [PATCH] Fix pause showing Provider-Cooldown, lower extraction I/O priority - Add pause check at top of processItem retry loop so items show "Pausiert" instead of "Provider-Cooldown" when paused - Lower extraction process priority from BELOW_NORMAL to IDLE (IDLE_PRIORITY_CLASS on Windows also lowers I/O priority, reducing disk contention between extraction and active downloads) Co-Authored-By: Claude Opus 4.6 --- package.json | 2 +- src/main/download-manager.ts | 11 +++++++++++ src/main/extractor.ts | 4 +++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5aa6f7f..36b005c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "real-debrid-downloader", - "version": "1.5.19", + "version": "1.5.20", "description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)", "main": "build/main/main/main.js", "author": "Sucukdeluxe", diff --git a/src/main/download-manager.ts b/src/main/download-manager.ts index a337dd5..e4ec98b 100644 --- a/src/main/download-manager.ts +++ b/src/main/download-manager.ts @@ -3510,6 +3510,17 @@ export class DownloadManager extends EventEmitter { const maxStallRetries = maxItemRetries; while (true) { try { + // Wait while paused — don't check cooldown or unrestrict while paused + while (this.session.paused && this.session.running && !active.abortController.signal.aborted) { + item.status = "paused"; + item.fullStatus = "Pausiert"; + item.speedBps = 0; + this.emitState(); + await sleep(120); + } + if (active.abortController.signal.aborted) { + throw new Error(`aborted:${active.abortReason}`); + } // Check provider cooldown before attempting unrestrict const lastProvider = item.provider || ""; const cooldownProvider = lastProvider || this.settings.providerPrimary || "unknown"; diff --git a/src/main/extractor.ts b/src/main/extractor.ts index 8a38705..b913763 100644 --- a/src/main/extractor.ts +++ b/src/main/extractor.ts @@ -445,7 +445,9 @@ function lowerExtractProcessPriority(childPid: number | undefined): void { return; } try { - os.setPriority(pid, os.constants.priority.PRIORITY_BELOW_NORMAL); + // PRIORITY_LOW = IDLE_PRIORITY_CLASS on Windows, which also lowers I/O priority + // so extraction doesn't starve downloads or UI from disk bandwidth + os.setPriority(pid, os.constants.priority.PRIORITY_LOW); } catch { // ignore: priority lowering is best-effort }