CR Hota created HDFS-13637:
------------------------------

             Summary: RBF: Router fails when threadIndex (in ConnectionPool) 
wraps around Integer.MIN_VALUE
                 Key: HDFS-13637
                 URL: https://issues.apache.org/jira/browse/HDFS-13637
             Project: Hadoop HDFS
          Issue Type: Sub-task
          Components: federation
            Reporter: CR Hota


{code:java}
    int threadIndex = this.clientIndex.getAndIncrement();
    for (int i=0; i<size; i++) {
      int index = (threadIndex + i) % size;
      conn = tmpConnections.get(index);
      if (conn != null && conn.isUsable()) {
        return conn;
      }
    }

{code}
The above code in ConnectionPool.java getConnection method throws 
java.lang.ArrayIndexOutOfBoundsException when clientIndex wraps to 
Integer.MIN_VALUE and makes router reject all requests. threadIndex should be 
reset to 0.
{code:java}
    if (threadIndex < 0) {
        // Wrap around 0 to keep array lookup index positive
        this.clientIndex.set(0);
        threadIndex = this.clientIndex.getAndIncrement();
    }
{code}
 

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to