HBASE-16164 Missing close of new compacted segments in few occasions which might leak MSLAB chunks from pool.
This commit is contained in:
parent
561eb82968
commit
97f2294bfd
|
@ -203,8 +203,9 @@ public class CompactingMemStore extends AbstractMemStore {
|
|||
this.inMemoryFlushInProgress.set(inMemoryFlushInProgress);
|
||||
}
|
||||
|
||||
public void swapCompactedSegments(VersionedSegmentsList versionedList, ImmutableSegment result) {
|
||||
pipeline.swap(versionedList, result);
|
||||
public boolean swapCompactedSegments(VersionedSegmentsList versionedList,
|
||||
ImmutableSegment result) {
|
||||
return pipeline.swap(versionedList, result);
|
||||
}
|
||||
|
||||
public boolean hasCompactibleSegments() {
|
||||
|
|
|
@ -135,9 +135,16 @@ class MemStoreCompactor {
|
|||
|
||||
// Phase II: swap the old compaction pipeline
|
||||
if (!isInterrupted.get()) {
|
||||
compactingMemStore.swapCompactedSegments(versionedList, result);
|
||||
if (compactingMemStore.swapCompactedSegments(versionedList, result)) {
|
||||
// update the wal so it can be truncated and not get too long
|
||||
compactingMemStore.updateLowestUnflushedSequenceIdInWAL(true); // only if greater
|
||||
} else {
|
||||
// We just ignored the Segment 'result' and swap did not happen.
|
||||
result.close();
|
||||
}
|
||||
} else {
|
||||
// We just ignore the Segment 'result'.
|
||||
result.close();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.debug("Interrupting the MemStore in-memory compaction for store " + compactingMemStore
|
||||
|
|
Loading…
Reference in New Issue