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