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

ramkrishna.s.vasudevan commented on HBASE-17887:
------------------------------------------------

[~chia7712]
Thanks for the udpate. Am trying to apply your test case in master branch and 
verify the fix. 
Before that seeing the test case 
at Step 1 :  A snapshot is prepared.
Step 3 : flushes the snapshot (created at step 1)
If step 4 :  has happened (flushing again) with new snapshot id) - the old 
snapshot if not cleared then we should have the snapshot returned back with the 
same snapshot id. Currently that is not the case.
{code}
 if (!this.snapshot.isEmpty()) {
      LOG.warn("Snapshot called again without clearing previous. " +
          "Doing nothing. Another ongoing flush or did we fail last attempt?");
    } else {
      this.snapshotId = EnvironmentEdgeManager.currentTime();
      if (!this.active.isEmpty()) {
        ImmutableSegment immutableSegment = SegmentFactory.instance().
            createImmutableSegment(this.active);
        this.snapshot = immutableSegment;
        resetActive();
      }
    }
    return new MemStoreSnapshot(this.snapshotId, this.snapshot);
{code}
WE return a new MemstoreSnapshot with the old snapshot but the snapshotId is 
the udpated one. I think that is not right. We need to fix it.

Now again if step 4 : has  happened after step 3 is done (that is the previous 
snapshot is cleared) then I think things should work as expected because the in 
the current code we add the latest MemstoreScanner anyway (that works on the 
current active and snapshot segment).
Will be back here.

> TestAcidGuarantees fails frequently
> -----------------------------------
>
>                 Key: HBASE-17887
>                 URL: https://issues.apache.org/jira/browse/HBASE-17887
>             Project: HBase
>          Issue Type: Bug
>          Components: regionserver
>    Affects Versions: 2.0.0
>            Reporter: Umesh Agashe
>            Assignee: Chia-Ping Tsai
>            Priority: Blocker
>             Fix For: 2.0.0, 1.4.0, 1.2.6, 1.3.2, 1.4.1
>
>         Attachments: HBASE-17887.branch-1.v0.patch, 
> HBASE-17887.branch-1.v1.patch, HBASE-17887.branch-1.v1.patch, 
> HBASE-17887.branch-1.v2.patch, HBASE-17887.branch-1.v2.patch, 
> HBASE-17887.branch-1.v3.patch, HBASE-17887.branch-1.v4.patch, 
> HBASE-17887.branch-1.v4.patch, HBASE-17887.branch-1.v4.patch, 
> HBASE-17887.v0.patch, HBASE-17887.v1.patch
>
>
> As per the flaky tests dashboard here: 
> https://builds.apache.org/job/HBASE-Find-Flaky-Tests/lastSuccessfulBuild/artifact/dashboard.html,
>  It fails 30% of the time.
> While working on HBASE-17863, a few verification builds on patch failed due 
> to TestAcidGuarantees didn't pass. IMHO, the changes for HBASE-17863 are 
> unlikely to affect get/ put path.
> I ran the test with and without the patch several times locally and found 
> that TestAcidGuarantees fails without the patch similar number of times.
> Opening blocker, considering acid guarantees are critical to HBase.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to