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 CBE1270DB for ; Fri, 22 Jul 2011 04:56:22 +0000 (UTC) Received: (qmail 93982 invoked by uid 500); 22 Jul 2011 04:56:22 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 93858 invoked by uid 500); 22 Jul 2011 04:56:20 -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 93842 invoked by uid 99); 22 Jul 2011 04:56:20 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jul 2011 04:56:20 +0000 X-ASF-Spam-Status: No, hits=-2001.1 required=5.0 tests=ALL_TRUSTED,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jul 2011 04:56:18 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 4FF20566EF for ; Fri, 22 Jul 2011 04:55:58 +0000 (UTC) Date: Fri, 22 Jul 2011 04:55:58 +0000 (UTC) From: "ramkrishna.s.vasudevan (JIRA)" To: issues@hbase.apache.org Message-ID: <654313901.13693.1311310558324.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <1383407381.16041.1304366464597.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (HBASE-3845) data loss because lastSeqWritten can miss memstore edits 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-3845?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13069380#comment-13069380 ] ramkrishna.s.vasudevan commented on HBASE-3845: ----------------------------------------------- @Ted, I think the file got changed after the patch was prepared. Sorry for that. I have resubmitted the patch once again. Thanks. > data loss because lastSeqWritten can miss memstore edits > -------------------------------------------------------- > > Key: HBASE-3845 > URL: https://issues.apache.org/jira/browse/HBASE-3845 > Project: HBase > Issue Type: Bug > Affects Versions: 0.90.3 > Reporter: Prakash Khemani > Assignee: ramkrishna.s.vasudevan > Priority: Critical > Fix For: 0.90.4 > > Attachments: HBASE-3845_1.patch, HBASE-3845_2.patch > > > (I don't have a test case to prove this yet but I have run it by Dhruba and Kannan internally and wanted to put this up for some feedback.) > In this discussion let us assume that the region has only one column family. That way I can use region/memstore interchangeably. > After a memstore flush it is possible for lastSeqWritten to have a log-sequence-id for a region that is not the earliest log-sequence-id for that region's memstore. > HLog.append() does a putIfAbsent into lastSequenceWritten. This is to ensure that we only keep track of the earliest log-sequence-number that is present in the memstore. > Every time the memstore is flushed we remove the region's entry in lastSequenceWritten and wait for the next append to populate this entry again. This is where the problem happens. > step 1: > flusher.prepare() snapshots the memstore under HRegion.updatesLock.writeLock(). > step 2 : > as soon as the updatesLock.writeLock() is released new entries will be added into the memstore. > step 3 : > wal.completeCacheFlush() is called. This method removes the region's entry from lastSeqWritten. > step 4: > the next append will create a new entry for the region in lastSeqWritten(). But this will be the log seq id of the current append. All the edits that were added in step 2 are missing. > == > as a temporary measure, instead of removing the region's entry in step 3 I will replace it with the log-seq-id of the region-flush-event. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira