hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chia-Ping Tsai (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-17887) TestAcidGuarantees fails frequently
Date Mon, 01 May 2017 07:37:04 GMT

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

Chia-Ping Tsai commented on HBASE-17887:

There is another error happened in 2.0. If the CompactingMemStore is enabled, it will push
the active to pipeline for snapshot.
  private void pushActiveToPipeline(MutableSegment active) {
    if (!active.isEmpty()) {
The following code is used to create scanner.
  public List<KeyValueScanner> getScanners(long readPt) throws IOException {
    List<? extends Segment> pipelineList = pipeline.getSegments();
    List<? extends Segment> snapshotList = snapshot.getAllSegments();
    long order = 1 + pipelineList.size() + snapshotList.size();
    // The list of elements in pipeline + the active element + the snapshot segment
    // The order is the Segment ordinal
    List<KeyValueScanner> list = new ArrayList<KeyValueScanner>((int) order);
    order = addToScanners(active, readPt, order, list);
    order = addToScanners(pipelineList, readPt, order, list);
    addToScanners(snapshotList, readPt, order, list);
    return list;
We will lose the latest segment when creating the scanner with the following execution order.
# List<? extends Segment> pipelineList = pipeline.getSegments(); // getScanners
# pipeline.pushHead(active); // pushActiveToPipeline
# resetActive(); // pushActiveToPipeline
# order = addToScanners(active, readPt, order, list); // getScanners

Therefore, we should cache the active before getting the segments from pipeline. The side-effect
is that we will have duplicate in-memory scanner but it should be tolerated for ACID (and
the cost is cheap).

> 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
>            Priority: Blocker
>         Attachments: HBASE-17887.branch-1.v0.patch, HBASE-17887.branch-1.v1.patch, HBASE-17887.branch-1.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

View raw message