[ https://issues.apache.org/jira/browse/HBASE-17434?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15811748#comment-15811748
]
Anastasia Braginsky commented on HBASE-17434:
---------------------------------------------
According to DefaultMemStore this is how the snapshot() is working there:
Line 1: this.snapshot = active;
Line 2: resetActive();
and this is how getScanners() is working there:
Line 3: list.add(this.active.getScanner(readPt, 1));
Line 4: list.addAll(this.snapshot.getScanners(readPt, 0));
This is how the code worked before we did anything.
So also here there is a moment between two lines (1 and 2) that if scanners are taken then,
the active will appear twice. So we didn't add nothing new here.
> New Synchronization Scheme for Compaction Pipeline
> --------------------------------------------------
>
> Key: HBASE-17434
> URL: https://issues.apache.org/jira/browse/HBASE-17434
> Project: HBase
> Issue Type: Bug
> Reporter: Eshcar Hillel
> Assignee: Eshcar Hillel
> Attachments: HBASE-17434-V01.patch, HBASE-17434-V02.patch, HBASE-17434-V03.patch
>
>
> A new copyOnWrite synchronization scheme is introduced for the compaction pipeline.
> The new scheme is better since it removes the lock from getSegments() which is invoked
in every get and scan operation, and it reduces the number of LinkedList objects that are
created at runtime, thus can reduce GC (not by much, but still...).
> In addition, it fixes the method getTailSize() in compaction pipeline. This method creates
a MemstoreSize object which comprises the data size and the overhead size of the segment and
needs to be atomic.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)