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

ramkrishna.s.vasudevan commented on HBASE-19732:
------------------------------------------------

The reason is that in latest code - we create a segment scanner once a memstore 
snapshot is created and we have an iterator ready to scan over the segment. 
This internally means we have started a scan so the openScannercount has to be 
incremented. Now in replica though we just create a snapshot we actually don't 
iterate at all and we simply ignore the snapshot. But since the 
openScannercount has already incremented we need to close it. 

> Replica regions does not return back the MSLAB chunks to pool
> -------------------------------------------------------------
>
>                 Key: HBASE-19732
>                 URL: https://issues.apache.org/jira/browse/HBASE-19732
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 2.0.0-alpha-4
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>            Priority: Critical
>             Fix For: 2.0.0-beta-2
>
>         Attachments: HBASE-19732.patch
>
>
> When we have region replica enabled, we try to replicate the flush markers. 
> In the replica region on receiving the FLUSH_START_MARKER we create a 
> snapshot. On receiving COMMIT_FLUSH_MARKER we just update the store files and 
> clear the snapshot. But in the recent trunk code while creating snapshot 
> (need to verify in other  branches too)
> {code}
>     this.timeRangeTracker = snapshot.getTimeRangeTracker();
>     this.scanners = snapshot.getScanners(Long.MAX_VALUE, Long.MAX_VALUE);
>     this.tagsPresent = snapshot.isTagsPresent();
> {code}
> The scanners that we create internally increment the openScannerCount per 
> MSLAB. But since in this case we don't call scanner.close() we don't 
> decrement the scanner count and so the MSLAB chunks are not returned back to 
> the pool when the snapshot is closed in the replica region.
> {code}
> int count  = openScannerCount.get();
>     LOG.info("the count is "+count);
>     if(count == 0) {
>       recycleChunks();
> {code}
> This is a critical bug. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to