[ 
https://issues.apache.org/jira/browse/HDDS-288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tsz Wo Nicholas Sze updated HDDS-288:
-------------------------------------
    Description: 
- OpenContainerBlockMap should not be synchronized for a better performance. 
- addChunkToMap may add the same chunk twice.  See the comments below.
{code}
      keyDataSet.putIfAbsent(blockID.getLocalID(), getKeyData(info, blockID)); 
// (1) when id is absent, it puts
      keyDataSet.computeIfPresent(blockID.getLocalID(), (key, value) -> { // 
(2) now, the id is present, it adds again.
        value.addChunk(info);
        return value;
      });
{code}
- In removeContainer(..), use remove(..) instead of .


  was:
- OpenContainerBlockMap should not be synchronized for a better performance. 
- There is a memory leak in removeContainer(..) -- it sets the entry to null 
instead of removing it.
- addChunkToMap may add the same chunk twice.  See the comments below.
{code}
      keyDataSet.putIfAbsent(blockID.getLocalID(), getKeyData(info, blockID)); 
// (1) when id is absent, it puts
      keyDataSet.computeIfPresent(blockID.getLocalID(), (key, value) -> { // 
(2) now, the id is present, it adds again.
        value.addChunk(info);
        return value;
      });
{code}



> Fix bugs in OpenContainerBlockMap
> ---------------------------------
>
>                 Key: HDDS-288
>                 URL: https://issues.apache.org/jira/browse/HDDS-288
>             Project: Hadoop Distributed Data Store
>          Issue Type: Improvement
>            Reporter: Tsz Wo Nicholas Sze
>            Assignee: Tsz Wo Nicholas Sze
>            Priority: Major
>
> - OpenContainerBlockMap should not be synchronized for a better performance. 
> - addChunkToMap may add the same chunk twice.  See the comments below.
> {code}
>       keyDataSet.putIfAbsent(blockID.getLocalID(), getKeyData(info, 
> blockID)); // (1) when id is absent, it puts
>       keyDataSet.computeIfPresent(blockID.getLocalID(), (key, value) -> { // 
> (2) now, the id is present, it adds again.
>         value.addChunk(info);
>         return value;
>       });
> {code}
> - In removeContainer(..), use remove(..) instead of .



--
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