Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A60D5C1D8 for ; Thu, 5 Jul 2012 16:20:35 +0000 (UTC) Received: (qmail 7423 invoked by uid 500); 5 Jul 2012 16:20:35 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 7382 invoked by uid 500); 5 Jul 2012 16:20:35 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 7365 invoked by uid 99); 5 Jul 2012 16:20:35 -0000 Received: from issues-vm.apache.org (HELO issues-vm) (140.211.11.160) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 05 Jul 2012 16:20:35 +0000 Received: from isssues-vm.apache.org (localhost [127.0.0.1]) by issues-vm (Postfix) with ESMTP id 2C1C8142853 for ; Thu, 5 Jul 2012 16:20:35 +0000 (UTC) Date: Thu, 5 Jul 2012 16:20:35 +0000 (UTC) From: "Lars Hofhansl (JIRA)" To: issues@hbase.apache.org Message-ID: <1646922767.9360.1341505235182.JavaMail.jiratomcat@issues-vm> In-Reply-To: <850488641.24.1341286263124.JavaMail.jiratomcat@issues-vm> Subject: [jira] [Commented] (HBASE-6311) Data error after majorCompaction caused by keeping MVCC for opened scanners MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-6311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13407240#comment-13407240 ] Lars Hofhansl commented on HBASE-6311: -------------------------------------- TestAtomicOperation failing is not a great sign. > Data error after majorCompaction caused by keeping MVCC for opened scanners > --------------------------------------------------------------------------- > > Key: HBASE-6311 > URL: https://issues.apache.org/jira/browse/HBASE-6311 > Project: HBase > Issue Type: Bug > Components: regionserver > Affects Versions: 0.94.0 > Reporter: chunhui shen > Assignee: chunhui shen > Priority: Blocker > Fix For: 0.96.0, 0.94.1 > > Attachments: HBASE-6311-test.patch, HBASE-6311v1.patch, HBASE-6311v2.patch > > > It is a big problem we found in 0.94, and you could reproduce the problem in Trunk using the test case I uploaded. > When we do compaction, we will use region.getSmallestReadPoint() to keep MVCC for opened scanners; > However,It will make data mistake after majorCompaction because we will skip delete type KV but keep the put type kv in the compacted storefile. > The following is the reason from code: > In StoreFileScanner, enforceMVCC is false when compaction, so we could read the delete type KV, > However, we will skip this delete type KV in ScanQueryMatcher because following code > {code} > if (kv.isDelete()) > { > ... > if (includeDeleteMarker > && kv.getMemstoreTS() <= maxReadPointToTrackVersions) { > System.out.println("add deletes,maxReadPointToTrackVersions=" > + maxReadPointToTrackVersions); > this.deletes.add(bytes, offset, qualLength, timestamp, type); > } > ... > } > {code} > Here maxReadPointToTrackVersions = region.getSmallestReadPoint(); > and kv.getMemstoreTS() > maxReadPointToTrackVersions > So we won't add this to DeleteTracker. > Why test case passed if remove the line MultiVersionConsistencyControl.setThreadReadPoint(smallestReadPoint); > Because in the StoreFileScanner#skipKVsNewerThanReadpoint > {code} > if (cur.getMemstoreTS() <= readPoint) { > cur.setMemstoreTS(0); > } > {code} > So if we remove the line MultiVersionConsistencyControl.setThreadReadPoint(smallestReadPoint); > Here readPoint is LONG.MAX_VALUE, we will set memStore ts as 0, so we will add it to DeleteTracker in ScanQueryMatcher > Solution: > We use smallestReadPoint of region when compaction to keep MVCC for OPENED scanner, So we should retain delete type kv in output in the case(Already deleted KV is retained in output to make old opened scanner could read this KV) even if it is a majorcompaction. -- 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