@@ -30,7 +30,7 @@ import {
3030import { k8sApi , kubeConfig } from '../../cluster' ;
3131import * as kubernetesApiWrappers from '../../kuberenetes-api-wrappers' ;
3232import { IWorkloadWatchMetadata , FALSY_WORKLOAD_NAME_MARKER } from './types' ;
33- import { ECONNRESET_ERROR_CODE } from '../types' ;
33+ import { RETRYABLE_NETWORK_ERRORS } from '../types' ;
3434
3535/**
3636 * This map is used in combination with the kubernetes-client Informer API
@@ -173,10 +173,11 @@ export async function setupInformer(
173173 namespace : string ,
174174 workloadKind : WorkloadKind ,
175175) : Promise < void > {
176+ const logContext : Record < string , unknown > = { namespace, workloadKind } ;
176177 const isSupported = await isSupportedWorkload ( namespace , workloadKind ) ;
177178 if ( ! isSupported ) {
178179 logger . info (
179- { namespace , workloadKind } ,
180+ logContext ,
180181 'The Kubernetes cluster does not support this workload' ,
181182 ) ;
182183 return ;
@@ -196,7 +197,7 @@ export async function setupInformer(
196197 ) ;
197198 } catch ( err ) {
198199 logger . error (
199- { err , namespace , workloadKind } ,
200+ { ... logContext , err } ,
200201 'error while listing entities on namespace' ,
201202 ) ;
202203 throw err ;
@@ -211,18 +212,22 @@ export async function setupInformer(
211212
212213 informer . on ( ERROR , ( err ) => {
213214 // Types from client library insists that callback is of type KubernetesObject
214- if ( ( err as any ) . code === ECONNRESET_ERROR_CODE ) {
215+ const code = ( err as any ) . code || '' ;
216+ if ( RETRYABLE_NETWORK_ERRORS . includes ( code ) ) {
215217 logger . debug (
216- { } ,
217- `informer ${ ECONNRESET_ERROR_CODE } occurred, restarting informer` ,
218+ logContext ,
219+ `informer ${ code } occurred, restarting informer` ,
218220 ) ;
219221
220222 // Restart informer after 1sec
221223 setTimeout ( async ( ) => {
222224 await informer . start ( ) ;
223225 } , 1000 ) ;
224226 } else {
225- logger . error ( { err } , 'unexpected informer error event occurred' ) ;
227+ logger . error (
228+ { ...logContext , err } ,
229+ 'unexpected informer error event occurred' ,
230+ ) ;
226231 }
227232 } ) ;
228233
@@ -235,7 +240,7 @@ export async function setupInformer(
235240 ( watchedWorkload . metadata && watchedWorkload . metadata . name ) ||
236241 FALSY_WORKLOAD_NAME_MARKER ;
237242 logger . warn (
238- { error , namespace , name, workloadKind } ,
243+ { ... logContext , error , name } ,
239244 'could not execute the informer handler for a workload' ,
240245 ) ;
241246 }
0 commit comments