hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "jiraposter@reviews.apache.org (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-2856) TestAcidGuarantee broken on trunk
Date Sat, 15 Oct 2011 04:10:13 GMT

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

jiraposter@reviews.apache.org commented on HBASE-2856:
------------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/2224/
-----------------------------------------------------------

(Updated 2011-10-15 04:08:41.977544)


Review request for Ted Yu, Michael Stack, Kannan Muthukkaruppan, and Karthik Ranganathan.


Changes
-------

Fix 2 more issues that could potentially cause ACID violations

(a) We only used to write maxVersions number of KV's to disk during 
flush. 

  Not all KVs should be counted during this calculation. We shall
ignore all KV's newer than the oldest read point. So the oldest
Scanner can also get enough versions.

(b) move the ignoring newer KV's logic to the StoreFileScanner. That
way, this only returns KV's that are guaranteed to be included in the
search.

There was a condition where if two KVs were written to the same file. Both
identical, but only differ in memstoreTS, then we would skip the duplicate.

It was possible that the first one would be ignored because it has a newer
memstoreTS, and we would never get to see the second one, which might be
the KV we want.


Summary
-------

address the 2856 issues by writing the memstoreTS to the disk.

version v11 of the patch.

uploading it here for easier review process.


This addresses bug HBASE-2856.
    https://issues.apache.org/jira/browse/HBASE-2856


Diffs (updated)
-----

  /pom.xml 1183581 
  /src/main/java/org/apache/hadoop/hbase/io/hfile/AbstractHFileReader.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV1.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/io/hfile/HFileWriterV2.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/ColumnCount.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/ColumnTracker.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/ReadWriteConsistencyControl.java 1183581

  /src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.java 1183581

  /src/main/java/org/apache/hadoop/hbase/regionserver/Store.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java 1183581 
  /src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java 1183581 
  /src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java 1183581 
  /src/test/java/org/apache/hadoop/hbase/TestAcidGuarantees.java 1183581 
  /src/test/java/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java 1183581 
  /src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileWriterV2.java 1183581 
  /src/test/java/org/apache/hadoop/hbase/regionserver/TestExplicitColumnTracker.java 1183581

  /src/test/java/org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.java 1183581 
  /src/test/java/org/apache/hadoop/hbase/regionserver/TestScanWildcardColumnTracker.java 1183581

  /src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreFile.java 1183581 

Diff: https://reviews.apache.org/r/2224/diff


Testing
-------

mvn test


Thanks,

Amitanand


                
> TestAcidGuarantee broken on trunk 
> ----------------------------------
>
>                 Key: HBASE-2856
>                 URL: https://issues.apache.org/jira/browse/HBASE-2856
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.89.20100621
>            Reporter: ryan rawson
>            Assignee: Amitanand Aiyer
>            Priority: Blocker
>             Fix For: 0.94.0
>
>         Attachments: 2856-v2.txt, 2856-v3.txt, 2856-v4.txt, 2856-v5.txt, acid.txt
>
>
> TestAcidGuarantee has a test whereby it attempts to read a number of columns from a row,
and every so often the first column of N is different, when it should be the same.  This is
a bug deep inside the scanner whereby the first peek() of a row is done at time T then the
rest of the read is done at T+1 after a flush, thus the memstoreTS data is lost, and previously
'uncommitted' data becomes committed and flushed to disk.
> One possible solution is to introduce the memstoreTS (or similarly equivalent value)
to the HFile thus allowing us to preserve read consistency past flushes.  Another solution
involves fixing the scanners so that peek() is not destructive (and thus might return different
things at different times alas).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message