[ https://issues.apache.org/jira/browse/HBASE-16164?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15359997#comment-15359997 ]
stack commented on HBASE-16164: ------------------------------- Patch looks fine. How did you figure this issue [~anoop.hbase]? > 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 > > Attachments: HBASE-16164.patch > > > 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)