[ 
https://issues.apache.org/jira/browse/HDFS-13637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16497018#comment-16497018
 ] 

Íñigo Goiri commented on HDFS-13637:
------------------------------------

OK, let's add a comment at least.
Probably a link to Client#nextCallId().
We could even use the full method but let's not over do it for now.

> 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
>            Assignee: CR Hota
>            Priority: Critical
>              Labels: RBF
>         Attachments: HDFS-13637.0.patch, HDFS-13637.1.patch
>
>
> {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-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to