fabric8io / kubernetes-client

Java client for Kubernetes & OpenShift
http://fabric8.io
Apache License 2.0
3.41k stars 1.46k forks source link

Response Body Not Closed Error Still Happening in version 4.0.0 #1155

Closed RisingPhorce closed 6 years ago

RisingPhorce commented 6 years ago

Getting OkHttp connection leak message.

<dependency>
    <groupId>io.fabric8</groupId>
    <artifactId>kubernetes-client</artifactId>
    <version>4.0.0</version>
</dependency>
Jul 26, 2018 4:21:04 PM okhttp3.internal.platform.Platform log
WARNING: A connection to <redacted> was leaked. Did you forget to close a response body?
java.lang.Throwable: response.body().close()
    at okhttp3.internal.platform.Platform.getStackTraceForCloseable(Platform.java:144)
    at okhttp3.RealCall.captureCallStackTrace(RealCall.java:89)
    at okhttp3.RealCall.execute(RealCall.java:73)
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:379)
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:344)
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:328)
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:584)
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:49)
    <our code starts here>

Randomly offending lines of code:

client.apps().deployments().inAnyNamespace().list().getItems().stream()
    .filter(d -> !d.getMetadata().getNamespace().startsWith("xyz")
            && !d.getMetadata().getName().contains("operator"))
    .collect(Collectors.toList());

or

CustomResourceDefinitionList crdList = client.customResourceDefinitions().list();
CustomResourceDefinition voyagerIng = crdList.getItems().stream().filter(crd -> "ingresses.voyager.appscode.com".equals(crd.getMetadata().getName())).collect(Collectors.toList()).get(0);

or

ScalableResource<Deployment, DoneableDeployment> sr = client.apps().deployments().inNamespace(namespace).withName(name);
return sr.get();
rohanKanojia commented 6 years ago

@RisingPhorce : ah, we have some problems with connection leaks happening at some places across code e.g #1090 . Are you able to reproduce connection leak consistently? A test case for generating leak would be extremely helpful :) .

piyush-garg commented 6 years ago

Duplicate of #1090