ZooSession.connect, which is used by ZooKeeperInstance, takes an argument for a timeout, and utilizes it to an extent-
if (System.currentTimeMillis() - startTime > 2 * timeout)
However, this is only used after a check which uses hardcoded values. Currently, this is set to 10*1000ms. More specifically, it uses this value and checks every 100ms to see if it's connected. So if you have a tiny timeout, there are 2 issues:
- Your timeout is only useful in 10 second increments, rounded up
- You get a nice helpful error message that hides that real lengths of attempt
I think the block of code should be changed to just try to connect for the user specified timeout length, working in the same 100ms increments. This allows more granularity in the handling of the user specified values (and I think it also simplifies the code). This will also make the timeout message more accurate.