Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
0.14.0
-
None
-
None
Description
Currently we use -1, due to which "any" elapsed time is always greater than any timeout value resulting in an unnecessary connection loss exception. Relevant code from curator framework:
private synchronized void checkTimeouts() throws Exception { int minTimeout = Math.min(sessionTimeoutMs, connectionTimeoutMs); long elapsed = System.currentTimeMillis() - connectionStartMs; if ( elapsed >= minTimeout ) { if ( zooKeeper.hasNewConnectionString() ) { handleNewConnectionString(); } else { int maxTimeout = Math.max(sessionTimeoutMs, connectionTimeoutMs); if ( elapsed > maxTimeout ) { if ( !Boolean.getBoolean(DebugUtils.PROPERTY_DONT_LOG_CONNECTION_ISSUES) ) { log.warn(String.format("Connection attempt unsuccessful after %d (greater than max timeout of %d). Resetting connection and trying again with a new connection.", elapsed, maxTimeout)); } reset(); } else { KeeperException.ConnectionLossException connectionLossException = new CuratorConnectionLossException(); if ( !Boolean.getBoolean(DebugUtils.PROPERTY_DONT_LOG_CONNECTION_ISSUES) ) { log.error(String.format("Connection timed out for connection string (%s) and timeout (%d) / elapsed (%d)", zooKeeper.getConnectionString(), connectionTimeoutMs, elapsed), connectionLossException); } tracer.get().addCount("connections-timed-out", 1); throw connectionLossException; } } } }
Attachments
Attachments
Issue Links
- links to