Compare commits
No commits in common. "1a076c49cb0dfc07ee5496550faf1dfffc601d2c" and "ed4baf92404d6dcca71d37078d60ee9713f07b8d" have entirely different histories.
1a076c49cb
...
ed4baf9240
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "real-debrid-downloader",
|
"name": "real-debrid-downloader",
|
||||||
"version": "1.7.100",
|
"version": "1.7.99",
|
||||||
"description": "Desktop downloader",
|
"description": "Desktop downloader",
|
||||||
"main": "build/main/main/main.js",
|
"main": "build/main/main/main.js",
|
||||||
"author": "Sucukdeluxe",
|
"author": "Sucukdeluxe",
|
||||||
|
|||||||
@ -5868,9 +5868,10 @@ export class DownloadManager extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async acquirePostProcessSlot(packageId: string): Promise<void> {
|
private async acquirePostProcessSlot(packageId: string): Promise<void> {
|
||||||
// Honor the user-facing "Parallele Entpackungen" setting for package-level
|
// Extract packages sequentially (one at a time) to focus I/O on finishing
|
||||||
// post-processing so multiple episodes/packages can extract concurrently.
|
// the earliest package first. maxParallelExtract is reserved for future
|
||||||
const maxConcurrent = Math.max(1, Math.min(8, this.settings.maxParallelExtract || 1));
|
// intra-package parallelism.
|
||||||
|
const maxConcurrent = 1;
|
||||||
if (this.packagePostProcessActive < maxConcurrent) {
|
if (this.packagePostProcessActive < maxConcurrent) {
|
||||||
this.packagePostProcessActive += 1;
|
this.packagePostProcessActive += 1;
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -243,42 +243,6 @@ describe("download manager", () => {
|
|||||||
expect((manager as any).shouldCollapseQuickPostProcessRequeue(packageId)).toBe(false);
|
expect((manager as any).shouldCollapseQuickPostProcessRequeue(packageId)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("honors maxParallelExtract for concurrent post-process slots", async () => {
|
|
||||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), "rd-postprocess-slots-"));
|
|
||||||
tempDirs.push(root);
|
|
||||||
|
|
||||||
const manager = new DownloadManager(
|
|
||||||
{
|
|
||||||
...defaultSettings(),
|
|
||||||
token: "rd-token",
|
|
||||||
maxParallelExtract: 4
|
|
||||||
},
|
|
||||||
emptySession(),
|
|
||||||
createStoragePaths(path.join(root, "state"))
|
|
||||||
);
|
|
||||||
|
|
||||||
await (manager as any).acquirePostProcessSlot("pkg-1");
|
|
||||||
await (manager as any).acquirePostProcessSlot("pkg-2");
|
|
||||||
await (manager as any).acquirePostProcessSlot("pkg-3");
|
|
||||||
await (manager as any).acquirePostProcessSlot("pkg-4");
|
|
||||||
|
|
||||||
expect((manager as any).packagePostProcessActive).toBe(4);
|
|
||||||
|
|
||||||
let fifthResolved = false;
|
|
||||||
const fifth = (manager as any).acquirePostProcessSlot("pkg-5").then(() => {
|
|
||||||
fifthResolved = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 30));
|
|
||||||
expect(fifthResolved).toBe(false);
|
|
||||||
|
|
||||||
(manager as any).releasePostProcessSlot();
|
|
||||||
await fifth;
|
|
||||||
|
|
||||||
expect(fifthResolved).toBe(true);
|
|
||||||
expect((manager as any).packagePostProcessActive).toBe(4);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("extractNow only re-arms completed items that are not already extracted", () => {
|
it("extractNow only re-arms completed items that are not already extracted", () => {
|
||||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), "rd-extract-now-"));
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), "rd-extract-now-"));
|
||||||
tempDirs.push(root);
|
tempDirs.push(root);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user