This error says that start() has not been called on the CuratorFramework instance. You should call start() immediately after allocating it.
-JZ From: Corey Nolet [email protected] Reply: [email protected] [email protected] Date: June 20, 2014 at 9:14:37 PM To: user [email protected] Subject: LeaderSelector throwing exception on mutex.acquire() The exception below is happening quite frequently in my code. It looks like it's because I'm trying to do operations with a client before it has fully initiated a connection to Zookeeper. What is the recommended way to wait until the curatorFramework is connected? Apply a connectionListener and block until a state of CONNECTED is passed into the listener? Thanks! 2014-06-20 22:10:08,335 [leader.LeaderSelector] ERROR: mutex.acquire() threw an exception java.lang.IllegalStateException: instance must be started before calling this method at com.google.common.base.Preconditions.checkState(Preconditions.java:149) at org.apache.curator.framework.imps.CuratorFrameworkImpl.delete(CuratorFrameworkImpl.java:358) at org.apache.curator.framework.recipes.locks.LockInternals.deleteOurPath(LockInternals.java:345) at org.apache.curator.framework.recipes.locks.LockInternals.internalLockLoop(LockInternals.java:335) at org.apache.curator.framework.recipes.locks.LockInternals.attemptLock(LockInternals.java:225) at org.apache.curator.framework.recipes.locks.InterProcessMutex.internalLock(InterProcessMutex.java:221) at org.apache.curator.framework.recipes.locks.InterProcessMutex.acquire(InterProcessMutex.java:77) at org.apache.curator.framework.recipes.leader.LeaderSelector.doWork(LeaderSelector.java:385) at org.apache.curator.framework.recipes.leader.LeaderSelector.doWorkLoop(LeaderSelector.java:443) at org.apache.curator.framework.recipes.leader.LeaderSelector.access$100(LeaderSelector.java:63) at org.apache.curator.framework.recipes.leader.LeaderSelector$2.call(LeaderSelector.java:244) at org.apache.curator.framework.recipes.leader.LeaderSelector$2.call(LeaderSelector.java:238) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) 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)
