Vaibhav Gumashta created HIVE-8723:
--------------------------------------

             Summary: Set reasonable connection timeout for CuratorFramework 
ZooKeeper clients in Hive
                 Key: HIVE-8723
                 URL: https://issues.apache.org/jira/browse/HIVE-8723
             Project: Hive
          Issue Type: Bug
    Affects Versions: 0.14.0
            Reporter: Vaibhav Gumashta
            Assignee: Vaibhav Gumashta


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:
{code}
 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;
                }
            }
        }
    }

{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to