From cbb050d6b62bf037d28a1fd0f6d0c500a01590fa Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Thu, 24 Nov 2022 09:24:00 +0200 Subject: [PATCH] fix KubeApi watch retry on timeout Signed-off-by: Jari Kolehmainen --- src/common/k8s-api/kube-api.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/common/k8s-api/kube-api.ts b/src/common/k8s-api/kube-api.ts index 593a1de38c..7ca2995906 100644 --- a/src/common/k8s-api/kube-api.ts +++ b/src/common/k8s-api/kube-api.ts @@ -14,7 +14,7 @@ import byline from "byline"; import type { IKubeWatchEvent } from "./kube-watch-event"; import type { KubeJsonApiData, KubeJsonApi } from "./kube-json-api"; import type { Disposer } from "../utils"; -import { setTimeoutFor, isDefined, noop, WrappedAbortController } from "../utils"; +import { isDefined, noop, WrappedAbortController } from "../utils"; import type { RequestInit, Response } from "node-fetch"; import type { Patch } from "rfc6902"; import assert from "assert"; @@ -639,7 +639,7 @@ export class KubeApi< namespace, callback = noop as KubeApiWatchCallback, retry = false, - timeout, + timeout = 600, watchId = `${this.kind.toLowerCase()}-${this.watchId++}`, } = opts ?? {}; @@ -651,8 +651,6 @@ export class KubeApi< clearTimeout(timedRetry); }); - setTimeoutFor(abortController, 600 * 1000); - const requestParams = timeout ? { query: { timeoutSeconds: timeout }} : {}; const watchUrl = this.getWatchUrl(namespace); const responsePromise = this.request.getResponse(watchUrl, requestParams, { @@ -695,8 +693,10 @@ export class KubeApi< }, timeout * 1000 * 1.1); } - if (!response.body) { - this.dependencies.logger.error(`[KUBE-API]: watch (${watchId}) did not return a body`); + if (!response.body || !response.body.readable) { + if (!response.body) { + this.dependencies.logger.warn(`[KUBE-API]: watch (${watchId}) did not return a body`); + } requestRetried = true; clearTimeout(timedRetry);