Return-Path: X-Original-To: apmail-hbase-commits-archive@www.apache.org Delivered-To: apmail-hbase-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 207004F2E for ; Sun, 26 Jun 2011 00:34:08 +0000 (UTC) Received: (qmail 11677 invoked by uid 500); 26 Jun 2011 00:34:08 -0000 Delivered-To: apmail-hbase-commits-archive@hbase.apache.org Received: (qmail 11610 invoked by uid 500); 26 Jun 2011 00:34:07 -0000 Mailing-List: contact commits-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list commits@hbase.apache.org Received: (qmail 11603 invoked by uid 99); 26 Jun 2011 00:34:07 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 26 Jun 2011 00:34:07 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 26 Jun 2011 00:34:04 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id D61E023888C2 for ; Sun, 26 Jun 2011 00:33:43 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1139679 - in /hbase/branches/0.90: CHANGES.txt src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java Date: Sun, 26 Jun 2011 00:33:43 -0000 To: commits@hbase.apache.org From: tedyu@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110626003343.D61E023888C2@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: tedyu Date: Sun Jun 26 00:33:43 2011 New Revision: 1139679 URL: http://svn.apache.org/viewvc?rev=1139679&view=rev Log: HBASE-4028 Hmaster crashes caused by splitting log. (Gaojinchao via Ted Yu) Modified: hbase/branches/0.90/CHANGES.txt hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java Modified: hbase/branches/0.90/CHANGES.txt URL: http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1139679&r1=1139678&r2=1139679&view=diff ============================================================================== --- hbase/branches/0.90/CHANGES.txt (original) +++ hbase/branches/0.90/CHANGES.txt Sun Jun 26 00:33:43 2011 @@ -45,7 +45,7 @@ Release 0.90.4 - Unreleased an immediate region server shutdown -- part 2. HBASE-4005 close_region bugs HBASE-3969 Outdated data can not be cleaned in time (zhoushuaifeng) - + HBASE-4028 Hmaster crashes caused by splitting log. (Gao jinchao) IMPROVEMENT HBASE-3882 hbase-config.sh needs to be updated so it can auto-detects the Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java?rev=1139679&r1=1139678&r2=1139679&view=diff ============================================================================== --- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java (original) +++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java Sun Jun 26 00:33:43 2011 @@ -512,19 +512,20 @@ public class HLogSplitter { HLogKey key = entry.getKey(); RegionEntryBuffer buffer; + long incrHeap; synchronized (this) { buffer = buffers.get(key.getEncodedRegionName()); if (buffer == null) { buffer = new RegionEntryBuffer(key.getTablename(), key.getEncodedRegionName()); buffers.put(key.getEncodedRegionName(), buffer); } - long incrHeap = buffer.appendEntry(entry); - totalBuffered += incrHeap; + incrHeap= buffer.appendEntry(entry); } // If we crossed the chunk threshold, wait for more space to be available synchronized (dataAvailable) { - while (totalBuffered > maxHeapUsage && thrown == null) { + totalBuffered += incrHeap; + while (totalBuffered > maxHeapUsage && thrown.get() == null) { LOG.debug("Used " + totalBuffered + " bytes of buffered edits, waiting for IO threads..."); dataAvailable.wait(3000); }