From 53403289d7d07d4d36a82eaeaeff82563f4e54e0 Mon Sep 17 00:00:00 2001 From: Sami Jawhar Date: Tue, 19 Nov 2024 17:00:55 -0800 Subject: [PATCH 1/5] Resolve copy promises --- src/cp.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/cp.ts b/src/cp.ts index b6a4a6bc49..dd4bee7497 100644 --- a/src/cp.ts +++ b/src/cp.ts @@ -36,7 +36,7 @@ export class Cp { const writerStream = fs.createWriteStream(tmpFileName); const errStream = new WritableStreamBuffer(); return new Promise((resolve, reject) => { - this.execInstance + const conn = await this.execInstance .exec( namespace, podName, @@ -67,6 +67,9 @@ export class Cp { }, ) .catch(reject); + conn.onclose = (event) => { + resolve(); + }; }); } @@ -92,7 +95,7 @@ export class Cp { const readStream = fs.createReadStream(tmpFileName); const errStream = new WritableStreamBuffer(); return new Promise((resolve, reject) => { - this.execInstance + const conn = await this.execInstance .exec( namespace, podName, @@ -116,6 +119,9 @@ export class Cp { }, ) .catch(reject); + conn.onclose = (event) => { + resolve(); + }; }); } } From 913a02188b56a654a39ee1cee50a12ebc5a491cd Mon Sep 17 00:00:00 2001 From: Sami Jawhar Date: Tue, 19 Nov 2024 17:03:06 -0800 Subject: [PATCH 2/5] Update cp.ts --- src/cp.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/cp.ts b/src/cp.ts index dd4bee7497..4f54a769b2 100644 --- a/src/cp.ts +++ b/src/cp.ts @@ -66,10 +66,12 @@ export class Cp { } }, ) + .then((conn) => { + conn.onclose = (event) => { + resolve(); + }; + }) .catch(reject); - conn.onclose = (event) => { - resolve(); - }; }); } @@ -95,7 +97,7 @@ export class Cp { const readStream = fs.createReadStream(tmpFileName); const errStream = new WritableStreamBuffer(); return new Promise((resolve, reject) => { - const conn = await this.execInstance + this.execInstance .exec( namespace, podName, @@ -118,10 +120,12 @@ export class Cp { } }, ) + .then((conn) => { + conn.onclose = (event) => { + resolve(); + }; + }) .catch(reject); - conn.onclose = (event) => { - resolve(); - }; }); } } From 10c7f1c445e7d6731da84f1863ab8cac0222c5f5 Mon Sep 17 00:00:00 2001 From: Sami Jawhar Date: Tue, 19 Nov 2024 17:03:35 -0800 Subject: [PATCH 3/5] Update cp.ts --- src/cp.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cp.ts b/src/cp.ts index 4f54a769b2..bea4ec5dd7 100644 --- a/src/cp.ts +++ b/src/cp.ts @@ -36,7 +36,7 @@ export class Cp { const writerStream = fs.createWriteStream(tmpFileName); const errStream = new WritableStreamBuffer(); return new Promise((resolve, reject) => { - const conn = await this.execInstance + this.execInstance .exec( namespace, podName, From eef93d60b3deba3072b6cabcb866d46cc5a8b526 Mon Sep 17 00:00:00 2001 From: Sami Jawhar Date: Sat, 23 Nov 2024 15:18:33 +0000 Subject: [PATCH 4/5] .on('close') instead of .onclose = --- src/cp.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cp.ts b/src/cp.ts index bea4ec5dd7..b74c1249b1 100644 --- a/src/cp.ts +++ b/src/cp.ts @@ -67,9 +67,9 @@ export class Cp { }, ) .then((conn) => { - conn.onclose = (event) => { + conn.on('close', () => { resolve(); - }; + }); }) .catch(reject); }); @@ -121,9 +121,9 @@ export class Cp { }, ) .then((conn) => { - conn.onclose = (event) => { + conn.on('close', () => { resolve(); - }; + }); }) .catch(reject); }); From 5fc727fb32d1150a3da412a322ca7cf25eef0797 Mon Sep 17 00:00:00 2001 From: Sami Jawhar Date: Fri, 29 Nov 2024 20:40:37 +0000 Subject: [PATCH 5/5] Don't resolve twice --- src/cp.ts | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/cp.ts b/src/cp.ts index b74c1249b1..b3672fdc53 100644 --- a/src/cp.ts +++ b/src/cp.ts @@ -35,6 +35,7 @@ export class Cp { command.push(srcPath); const writerStream = fs.createWriteStream(tmpFileName); const errStream = new WritableStreamBuffer(); + let resolved = false; return new Promise((resolve, reject) => { this.execInstance .exec( @@ -60,7 +61,10 @@ export class Cp { file: tmpFileName, cwd: tgtPath, }); - resolve(); + if (!resolved) { + resolved = true; + resolve(); + } } catch (e) { reject(e); } @@ -68,7 +72,10 @@ export class Cp { ) .then((conn) => { conn.on('close', () => { - resolve(); + if (!resolved) { + resolved = true; + resolve(); + } }); }) .catch(reject); @@ -96,6 +103,7 @@ export class Cp { await tar.c({ file: tmpFileName, cwd }, [srcPath]); const readStream = fs.createReadStream(tmpFileName); const errStream = new WritableStreamBuffer(); + let resolved = false; return new Promise((resolve, reject) => { this.execInstance .exec( @@ -116,13 +124,19 @@ export class Cp { ), ); } else { - resolve(); + if (!resolved) { + resolved = true; + resolve(); + } } }, ) .then((conn) => { conn.on('close', () => { - resolve(); + if (!resolved) { + resolved = true; + resolve(); + } }); }) .catch(reject);