Skip to content

Commit 62bd2ee

Browse files
committed
enforcing read-timeout for informer-factory processor to zero
1 parent 7592454 commit 62bd2ee

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

spring/src/main/java/io/kubernetes/client/spring/extended/controller/KubernetesInformerFactoryProcessor.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020
import io.kubernetes.client.openapi.ApiClient;
2121
import io.kubernetes.client.spring.extended.controller.annotation.KubernetesInformer;
2222
import io.kubernetes.client.spring.extended.controller.annotation.KubernetesInformers;
23+
import io.kubernetes.client.spring.extended.controller.factory.KubernetesControllerFactory;
2324
import io.kubernetes.client.util.generic.GenericKubernetesApi;
25+
import java.time.Duration;
26+
import org.slf4j.Logger;
27+
import org.slf4j.LoggerFactory;
2428
import org.springframework.beans.BeansException;
2529
import org.springframework.beans.factory.BeanFactory;
2630
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
@@ -45,6 +49,8 @@ public class KubernetesInformerFactoryProcessor
4549

4650
public static final int ORDER = 0;
4751

52+
private static final Logger log = LoggerFactory.getLogger(KubernetesControllerFactory.class);
53+
4854
private ConfigurableListableBeanFactory beanFactory;
4955

5056
@Override
@@ -122,6 +128,14 @@ private <T extends KubernetesObject> Lister<T> lister(Class<T> type) {
122128
private <T extends KubernetesObject> SharedInformer<T> informer(
123129
Class<T> type, KubernetesInformer kubernetesInformer) {
124130
ApiClient apiClient = this.beanFactory.getBean(ApiClient.class);
131+
132+
if (apiClient.getHttpClient().readTimeoutMillis() > 0) {
133+
log.warn(
134+
"Enforcing read-timeout of the ApiClient to zero so that the watch connection won't abort from client-side");
135+
apiClient.setHttpClient(
136+
apiClient.getHttpClient().newBuilder().readTimeout(Duration.ZERO).build());
137+
}
138+
125139
SharedInformerFactory sharedInformerFactory =
126140
this.beanFactory.getBean(SharedInformerFactory.class);
127141
final GenericKubernetesApi api =

0 commit comments

Comments
 (0)