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

Anoop Sam John commented on HBASE-16164:
----------------------------------------

Dont mean the tail segment which was moved to snapshot.  I mean the 'result' 
segment created to which the Cells from N compacting segment were added. We 
interrupted this op in btw and so this result segment is not getting added to 
pipeline or so but just ignored.  What if that used an MSLAB pool and got some 
chunks?  We miss close of this segment

> Missing close of new compacted segments in few occasions which might leak 
> MSLAB chunks from pool
> ------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-16164
>                 URL: https://issues.apache.org/jira/browse/HBASE-16164
>             Project: HBase
>          Issue Type: Sub-task
>    Affects Versions: 2.0.0
>            Reporter: Anoop Sam John
>            Assignee: Anoop Sam John
>            Priority: Critical
>             Fix For: 2.0.0
>
>
> An in memory compaction of N segments in progress. Inn between snapshot() 
> call comes. We will stop the in progress compaction then. This just sets an 
> AtomicBoolean.  We check this boolean state in the compaction loop (while 
> loop reading the cells from the segments) and before swapping the segments. 
> But if this scenario comes, we are just ignoring the new newly compacted 
> Segment. This is a problem maker when we work with MSLAB pool. The new 
> segment would have acquired some chunks but when will they get released? As 
> we dont close the segment this will leak them.
> Also in swap we have
> {code}
> public boolean swap(VersionedSegmentsList versionedList, ImmutableSegment 
> segment) {
>     if(versionedList.getVersion() != version) {
>       return false;
>     }
>     LinkedList<ImmutableSegment> suffix;
>     synchronized (pipeline){
>       if(versionedList.getVersion() != version) {
>         return false;
>       }
> {code}
> I dont see any possibility for this code flow to happen.  Still for 
> correctness, we should close the segment here too.



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

Reply via email to