Skip to content

Leak in KubernetesEndpointGroup #6805

Description

@minwoox
LEAK: ClientFactory.release() was not called before it's garbage-collected. See https://netty.io/wiki/reference-counted-objects.html for more information.
Recent access records:
Created at:
com.linecorp.armeria.client.DefaultClientFactory.<init>(DefaultClientFactory.java:116)
com.linecorp.armeria.client.ClientFactoryBuilder.build(ClientFactoryBuilder.java:1129)
com.linecorp.armeria.client.kubernetes.ArmeriaHttpClientBuilder$ClientFactoryBuilderHolder.maybeBuild(ArmeriaHttpClientBuilder.java:168)
com.linecorp.armeria.client.kubernetes.ArmeriaHttpClientBuilder.clientFactory(ArmeriaHttpClientBuilder.java:146)
com.linecorp.armeria.client.kubernetes.ArmeriaWebSocketClient.webSocketClient(ArmeriaWebSocketClient.java:75)
com.linecorp.armeria.client.kubernetes.ArmeriaWebSocketClient.execute(ArmeriaWebSocketClient.java:110)
com.linecorp.armeria.client.kubernetes.ArmeriaHttpClient.buildWebSocketDirect(ArmeriaHttpClient.java:70)
io.fabric8.kubernetes.client.http.StandardHttpClient.buildWebSocketOnce(StandardHttpClient.java:269)
io.fabric8.kubernetes.client.http.StandardHttpClient.lambda$buildWebSocket$13(StandardHttpClient.java:243)
io.fabric8.kubernetes.client.utils.AsyncUtils.retryWithExponentialBackoff(AsyncUtils.java:75)
io.fabric8.kubernetes.client.utils.AsyncUtils.retryWithExponentialBackoff(AsyncUtils.java:68)
io.fabric8.kubernetes.client.http.StandardHttpClient.retryWithExponentialBackoff(StandardHttpClient.java:163)
io.fabric8.kubernetes.client.http.StandardHttpClient.buildWebSocket(StandardHttpClient.java:241)
io.fabric8.kubernetes.client.http.StandardWebSocketBuilder.buildAsync(StandardWebSocketBuilder.java:44)
io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager.start(WatchConnectionManager.java:75)
io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.startWatch(AbstractWatchManager.java:323)
io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.<init>(AbstractWatchManager.java:146)
io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager.<init>(WatchConnectionManager.java:53)
io.fabric8.kubernetes.client.dsl.internal.BaseOperation.submitWatch(BaseOperation.java:750)
io.fabric8.kubernetes.client.dsl.internal.BaseOperation.watch(BaseOperation.java:729)
io.fabric8.kubernetes.client.dsl.internal.BaseOperation.watch(BaseOperation.java:717)
com.linecorp.armeria.client.kubernetes.endpoints.KubernetesEndpointGroup.doWatchService(KubernetesEndpointGroup.java:491)
com.linecorp.armeria.client.kubernetes.endpoints.KubernetesEndpointGroup.watchService(KubernetesEndpointGroup.java:426)
com.linecorp.armeria.client.kubernetes.endpoints.KubernetesEndpointGroup.doStart(KubernetesEndpointGroup.java:376)
com.linecorp.armeria.client.kubernetes.endpoints.KubernetesEndpointGroup.start(KubernetesEndpointGroup.java:308)
com.linecorp.armeria.client.kubernetes.endpoints.KubernetesEndpointGroup.lambda$new$0(KubernetesEndpointGroup.java:295)
com.linecorp.armeria.client.kubernetes.endpoints.KubernetesEndpointGroup.lambda$safeRunnable$0(KubernetesEndpointGroup.java:804)
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
java.base/java.lang.Thread.run(Thread.java:833)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions