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

Benoy Antony commented on HDFS-5381:
------------------------------------

This makes sense.

But should we use more standard approach as below ? (auto generated from 
eclipse)

{code}
  @Override // Object
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((block == null) ? 0 : block.hashCode());
    result = prime * result + ((poolId == null) ? 0 : poolId.hashCode());
    return result;
  }
{code}



> ExtendedBlock#hashCode should use both blockId and block pool ID
> ----------------------------------------------------------------
>
>                 Key: HDFS-5381
>                 URL: https://issues.apache.org/jira/browse/HDFS-5381
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: federation
>    Affects Versions: 2.3.0
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>            Priority: Minor
>         Attachments: HDFS-5381.001.patch
>
>
> {{ExtendedBlock#hashCode}} contains both a block pool ID and a block ID.  The 
> {{equals}} function checks both.  However, {{hashCode}} only uses block ID.  
> Since HDFS-4645, block IDs are now allocated sequentially.  This means that 
> there will be a lot of hash collisions when federation is in use.  We should 
> use both block ID and block pool ID in {{hashCode}} to prevent this.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to