hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-16440) MemstoreChunkPool might cross its maxCount of chunks to pool
Date Tue, 23 Aug 2016 18:05:21 GMT

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

Hudson commented on HBASE-16440:
--------------------------------

FAILURE: Integrated in Jenkins build HBase-Trunk_matrix #1468 (See [https://builds.apache.org/job/HBase-Trunk_matrix/1468/])
HBASE-16440 MemstoreChunkPool might cross its maxCount of chunks to (anoopsamjohn: rev 897631f8d194911e0004b9c98d4040e9794bb2e9)
* (edit) hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.java
* (add) hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Chunk.java
* (edit) hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HeapMemStoreLAB.java
* (edit) hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreChunkPool.java


> MemstoreChunkPool might cross its maxCount of chunks to pool
> ------------------------------------------------------------
>
>                 Key: HBASE-16440
>                 URL: https://issues.apache.org/jira/browse/HBASE-16440
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Anoop Sam John
>            Assignee: Anoop Sam John
>             Fix For: 2.0.0
>
>         Attachments: HBASE-16440.patch, HBASE-16440_V2.patch, HBASE-16440_V3.patch, HBASE-16440_V4.patch
>
>
> {code}
> void putbackChunks(BlockingQueue<Chunk> chunks) {
>     int maxNumToPutback = this.maxCount - reclaimedChunks.size();
>     if (maxNumToPutback <= 0) {
>       return;
>     }
>     chunks.drainTo(reclaimedChunks, maxNumToPutback);
>     // clear reference of any non-reclaimable chunks
>     if (chunks.size() > 0) {
>       if (LOG.isTraceEnabled()) {
>         LOG.trace("Left " + chunks.size() + " unreclaimable chunks, removing them from
queue");
>       }
>       chunks.clear();
>     }
>   }
> {code}
> There is no synchroization. 2 threads might be calling this API as part of a MSLAB close.
(Once the memstore is flushed). It pass all the chunks used by it.  (Those might  not have
been come from pool also).  We try to put back chunks such that it is not crossing maxCount.
  Suppose maxCount is 10 and currently no chunks in 'reclaimedChunks'. Say both threads at
line one. Both see 'maxNumToPutback ' as 10 and that will make 20 chunks being pooled.  Similar
issue is in putbackChunk(Chunk chunk) API also.



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

Mime
View raw message