From b7e982c5b2a17eab5d3acdd61c5083699e55249a Mon Sep 17 00:00:00 2001 From: "Hung-Han (Henry) Chen" Date: Mon, 22 Nov 2021 17:20:27 +0200 Subject: [PATCH] Create new abort controller Signed-off-by: Hung-Han (Henry) Chen --- src/common/k8s-api/kube-api.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/common/k8s-api/kube-api.ts b/src/common/k8s-api/kube-api.ts index 5d16f366d1..0bc8dd13d3 100644 --- a/src/common/k8s-api/kube-api.ts +++ b/src/common/k8s-api/kube-api.ts @@ -587,20 +587,37 @@ export class KubeApi { } electron.powerMonitor.once("suspend", () => { + logger.info(`[KUBE-API] system suspended, abort watching of ${watchUrl}...`); + + try { + if (opts.abortController) { + opts.abortController.abort?.(); + } else { + abort?.(); + } + } catch (error) { + logger.error(`[KUBE-API] error aborting watch (${watchId})`, error); + } electron.powerMonitor.once("resume", () => { const url = "k8slens.dev"; // url to check if domain names are resolvable. this.whenCanResolveDomainName(url, { retries: 50, maxTimeout: 3000 }).then(() => { logger.info(`[KUBE-API] domain name can be resolved, checking networkOnline:${this.networkOnline.toString?.()}`); + let abortController = opts.abortController; + + if (opts.abortController.signal.aborted) { + abortController = new AbortController(); + } + if (this.networkOnline) { logger.info(`[KUBE-API] system resumed, resume watching of ${watchUrl}...`); - this.watch({ ...opts, namespace, callback, watchId, retry: true }); + this.watch({ ...opts, abortController, namespace, callback, watchId, retry: true }); } else { logger.info(`[KUBE-API] system resumed but network appears to be offline, resume watching when online.`); electron.ipcMain.once("network:online", () => { logger.info(`[KUBE-API] network on line, resume watching of ${watchUrl}...`); - this.watch({ ...opts, namespace, callback, watchId, retry: true }); + this.watch({ ...opts, abortController, namespace, callback, watchId, retry: true }); }); } }).catch((error) => {