Anoop Sam John created HBASE-16164:
--------------------------------------
Summary: 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
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)