From e7943ce05fc0032171fda8992cf6a57ec5ae4be2 Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Wed, 10 Feb 2021 16:27:19 +0200 Subject: [PATCH] review fixes Signed-off-by: Jari Kolehmainen --- src/renderer/api/kube-api.ts | 16 ++++------------ src/renderer/api/kube-object.ts | 4 ++-- src/renderer/kube-object.store.ts | 11 +++++------ 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/renderer/api/kube-api.ts b/src/renderer/api/kube-api.ts index abad60a8e0..97cfb0522b 100644 --- a/src/renderer/api/kube-api.ts +++ b/src/renderer/api/kube-api.ts @@ -381,9 +381,7 @@ export class KubeApi { responsePromise.then((response) => { if (!response.ok && !abortController.signal.aborted) { - if (callback) { - callback(null, response); - } + callback?.(null, response); return; } @@ -424,19 +422,13 @@ export class KubeApi { }, (error) => { if (error instanceof DOMException) return; // AbortController rejects, we can ignore it - if (callback) { - callback(null, error); - } + callback?.(null, error); }).catch((error) => { - if (callback) { - callback(null, error); - } + callback?.(null, error); }); const disposer = () => { - if (!abortController.signal.aborted) { - abortController.abort(); - } + abortController.abort(); }; return disposer; diff --git a/src/renderer/api/kube-object.ts b/src/renderer/api/kube-object.ts index 6914b1f3de..db1f5ef79d 100644 --- a/src/renderer/api/kube-object.ts +++ b/src/renderer/api/kube-object.ts @@ -48,8 +48,8 @@ export interface IKubeStatus { reason?: string; } -export class KubeStatus implements IKubeStatus { - public readonly kind: string; +export class KubeStatus { + public readonly kind = "Status"; public readonly apiVersion: string; public readonly code: number; public readonly message: string; diff --git a/src/renderer/kube-object.store.ts b/src/renderer/kube-object.store.ts index e7b3a5184f..1de9926f78 100644 --- a/src/renderer/kube-object.store.ts +++ b/src/renderer/kube-object.store.ts @@ -288,6 +288,9 @@ export abstract class KubeObjectStore extends ItemSt } private watchNamespace(api: KubeApi, namespace: string, abortController: AbortController) { + let timedRetry: NodeJS.Timeout; + + abortController.signal.addEventListener("abort", () => clearTimeout(timedRetry)); const callback = (data: IKubeWatchEvent, error: any) => { if (!this.isLoaded || abortController.signal.aborted) return; @@ -297,9 +300,7 @@ export abstract class KubeObjectStore extends ItemSt // api has gone, let's not retry return; } else { // not sure what to do, best to retry - setTimeout(() => { - if (abortController.signal.aborted) return; - + timedRetry = setTimeout(() => { api.watch({ namespace, abortController, @@ -309,9 +310,7 @@ export abstract class KubeObjectStore extends ItemSt } } else if (error instanceof KubeStatus && error.code === 410) { // resourceVersion has gone, let's try to reload - setTimeout(() => { - if (abortController.signal.aborted) return; - + timedRetry = setTimeout(() => { (namespace === "" ? this.loadAll({ merge: false }) : this.loadAll({namespaces: [namespace]})).then(() => { api.watch({ namespace,