Close is supposed to shutdown everything. What version are you using? Can you create a test case that exhibits the problem?
==================== Jordan Zimmerman > On Feb 7, 2014, at 4:35 PM, Raji Muthupandian <[email protected]> wrote: > > Hi Team, > We have 5 server Zookeeper ensemble. If any one of the server goes down, > connections are balanced to remaining servers. When the down server comes > back, there will not be any connections to this server unless new clients are > connected or connectionLoss happens at client side. This makes a unequal > connection distribution to the servers. > > To avoid this, we thought of having a connection balancer task which closes > the existing connection and creates new connection on every configured time > interval. As part of connection close, we call Curatorframework.close(). > But in some instances , ConnectionStateManager threads are not > closed. Threads are still in WAITING state to take events from eventqueue. > > "ConnectionStateManager-0" - Thread t@272 > java.lang.Thread.State: WAITING > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <3be45251> (a > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) > at > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) > at > java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374) > at > com.netflix.curator.framework.state.ConnectionStateManager.processEvents(ConnectionStateManager.java:170) > at > com.netflix.curator.framework.state.ConnectionStateManager.access$000(ConnectionStateManager.java:40) > at > com.netflix.curator.framework.state.ConnectionStateManager$1.call(ConnectionStateManager.java:104) > at java.util.concurrent.FutureTask.run(FutureTask.java:262) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:724 > > This creates lot of dangling threads over a period of time. Is there a way to > cleanly close the connections ? > > is there any better approach to handle connection balancing.... > > Thanks > Raji
