Skip to content

Client leaking thread-pools after trying to connect with expired refresh token #745

@kdvolder

Description

@kdvolder

Using cf-java-client version 2.11.0.RELEASE.

Might be the result of some incorrect error handling. We pull a refresh token from a config.json file on disk (saved by the cf cli). Try to connect to CF using that as the credentials. This fails with an error if the token is expired.

Normally we would cache and reuse a connection, but if there was an error establishing a connection we don't cache it (to ensure the user doesn't get stuck with a 'broken' state in the cache for extended period of time).

The result of this is that we will try to establish connection again soon thereafter (next time we need the info). And everytime we make an attempt to create a client connection, there are 8 new cloudfoundry-client-nio-* threads being created.

E.g. here's a dump of the list of threads after a few attempts:

Java HotSpot(TM) 64-Bit Server VM [localhost:8000]	
	Thread [main] (Running)	
	Thread [pool-2-thread-1] (Running)	
	Thread [Reconciler-1] (Running)	
	Daemon Thread [reactor-http-nio-1] (Running)	
	Daemon Thread [reactor-http-nio-2] (Running)	
	Daemon Thread [reactor-http-nio-3] (Running)	
	Daemon Thread [reactor-http-nio-4] (Running)	
	Daemon Thread [reactor-http-nio-6] (Running)	
	Daemon Thread [reactor-http-nio-5] (Running)	
	Daemon Thread [reactor-http-nio-7] (Running)	
	Daemon Thread [reactor-http-nio-8] (Running)	
	Daemon Thread [cloudfoundry-client-nio-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-3] (Running)	
	Daemon Thread [cloudfoundry-client-nio-2] (Running)	
	Daemon Thread [cloudfoundry-client-nio-4] (Running)	
	Daemon Thread [cloudfoundry-client-nio-5] (Running)	
	Daemon Thread [cloudfoundry-client-nio-6] (Running)	
	Daemon Thread [cloudfoundry-client-nio-7] (Running)	
	Daemon Thread [cloudfoundry-client-nio-8] (Running)	
	Daemon Thread [cloudfoundry-client-nio-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-2] (Running)	
	Daemon Thread [cloudfoundry-client-nio-3] (Running)	
	Daemon Thread [cloudfoundry-client-nio-5] (Running)	
	Daemon Thread [cloudfoundry-client-nio-4] (Running)	
	Daemon Thread [cloudfoundry-client-nio-7] (Running)	
	Daemon Thread [cloudfoundry-client-nio-6] (Running)	
	Daemon Thread [cloudfoundry-client-nio-8] (Running)	
	Daemon Thread [cloudfoundry-client-nio-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-3] (Running)	
	Daemon Thread [cloudfoundry-client-nio-4] (Running)	
	Daemon Thread [cloudfoundry-client-nio-2] (Running)	
	Daemon Thread [cloudfoundry-client-nio-5] (Running)	
	Daemon Thread [cloudfoundry-client-nio-7] (Running)	
	Daemon Thread [cloudfoundry-client-nio-6] (Running)	
	Daemon Thread [cloudfoundry-client-nio-8] (Running)	
	Daemon Thread [cloudfoundry-client-nio-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-3] (Running)	
	Daemon Thread [cloudfoundry-client-nio-5] (Running)	
	Daemon Thread [cloudfoundry-client-nio-2] (Running)	
	Daemon Thread [cloudfoundry-client-nio-6] (Running)	
	Daemon Thread [cloudfoundry-client-nio-4] (Running)	
	Daemon Thread [cloudfoundry-client-nio-7] (Running)	
	Daemon Thread [cloudfoundry-client-nio-8] (Running)	
	Daemon Thread [elastic-evictor-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-2] (Running)	
	Daemon Thread [cloudfoundry-client-nio-3] (Running)	
	Daemon Thread [cloudfoundry-client-nio-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-4] (Running)	
	Daemon Thread [cloudfoundry-client-nio-6] (Running)	
	Daemon Thread [cloudfoundry-client-nio-5] (Running)	
	Daemon Thread [cloudfoundry-client-nio-7] (Running)	
	Daemon Thread [cloudfoundry-client-nio-8] (Running)	
	Daemon Thread [cloudfoundry-client-nio-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-2] (Running)	
	Daemon Thread [cloudfoundry-client-nio-3] (Running)	
	Daemon Thread [cloudfoundry-client-nio-4] (Running)	
	Daemon Thread [cloudfoundry-client-nio-5] (Running)	
	Daemon Thread [cloudfoundry-client-nio-7] (Running)	
	Daemon Thread [cloudfoundry-client-nio-6] (Running)	
	Daemon Thread [cloudfoundry-client-nio-8] (Running)	
	Daemon Thread [cloudfoundry-client-nio-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-2] (Running)	
	Daemon Thread [cloudfoundry-client-nio-5] (Running)	
	Daemon Thread [cloudfoundry-client-nio-3] (Running)	
	Daemon Thread [cloudfoundry-client-nio-4] (Running)	
	Daemon Thread [cloudfoundry-client-nio-6] (Running)	
	Daemon Thread [cloudfoundry-client-nio-7] (Running)	
	Daemon Thread [cloudfoundry-client-nio-8] (Running)	
	Daemon Thread [cloudfoundry-client-nio-3] (Running)	
	Daemon Thread [cloudfoundry-client-nio-2] (Running)	
	Daemon Thread [cloudfoundry-client-nio-1] (Running)	
	Daemon Thread [cloudfoundry-client-nio-4] (Running)	
	Daemon Thread [cloudfoundry-client-nio-5] (Running)	
	Daemon Thread [cloudfoundry-client-nio-6] (Running)	
	Daemon Thread [cloudfoundry-client-nio-7] (Running)	
	Daemon Thread [cloudfoundry-client-nio-8] (Running)	

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions