Return-Path: Delivered-To: apmail-lucene-hadoop-commits-archive@locus.apache.org Received: (qmail 65163 invoked from network); 10 Nov 2006 21:54:10 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 10 Nov 2006 21:54:10 -0000 Received: (qmail 15413 invoked by uid 500); 10 Nov 2006 21:54:21 -0000 Delivered-To: apmail-lucene-hadoop-commits-archive@lucene.apache.org Received: (qmail 15391 invoked by uid 500); 10 Nov 2006 21:54:21 -0000 Mailing-List: contact hadoop-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hadoop-dev@lucene.apache.org Delivered-To: mailing list hadoop-commits@lucene.apache.org Received: (qmail 15382 invoked by uid 99); 10 Nov 2006 21:54:21 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 Nov 2006 13:54:21 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 Nov 2006 13:54:10 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 712811A9846; Fri, 10 Nov 2006 13:53:41 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r473522 - in /lucene/hadoop/trunk: CHANGES.txt src/java/org/apache/hadoop/dfs/FSEditLog.java Date: Fri, 10 Nov 2006 21:53:41 -0000 To: hadoop-commits@lucene.apache.org From: cutting@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061110215341.712811A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cutting Date: Fri Nov 10 13:53:40 2006 New Revision: 473522 URL: http://svn.apache.org/viewvc?view=rev&rev=473522 Log: HADOOP-646. Fix DFS namenode to handle edits files larger than 2GB. Contributed by Milind. Modified: lucene/hadoop/trunk/CHANGES.txt lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSEditLog.java Modified: lucene/hadoop/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=473522&r1=473521&r2=473522 ============================================================================== --- lucene/hadoop/trunk/CHANGES.txt (original) +++ lucene/hadoop/trunk/CHANGES.txt Fri Nov 10 13:53:40 2006 @@ -50,6 +50,9 @@ 15. HADOOP-708. Fix test-libhdfs to return the correct status, so that failures will break the build. (Nigel Daley via cutting) +16. HADOOP-646. Fix namenode to handle edits files larger than 2GB. + (Milind Bhandarkar via cutting) + Release 0.8.0 - 2006-11-03 Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSEditLog.java URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSEditLog.java?view=diff&rev=473522&r1=473521&r2=473522 ============================================================================== --- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSEditLog.java (original) +++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSEditLog.java Fri Nov 10 13:53:40 2006 @@ -20,6 +20,7 @@ import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; +import java.io.EOFException; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; @@ -157,8 +158,15 @@ new FileInputStream(edits))); // Read log file version. Could be missing. in.mark( 4 ); - if( in.available() > 0 ) { + // If edits log is greater than 2G, available method will return negative + // numbers, so we avoid having to call available + boolean available = true; + try { logVersion = in.readByte(); + } catch (EOFException e) { + available = false; + } + if (available) { in.reset(); if( logVersion >= 0 ) logVersion = 0; @@ -174,8 +182,13 @@ short replication = (short)conf.getInt("dfs.replication", 3); try { - while (in.available() > 0) { - byte opcode = in.readByte(); + while (true) { + byte opcode = -1; + try { + opcode = in.readByte(); + } catch (EOFException e) { + break; // no more transactions + } numEdits++; switch (opcode) { case OP_ADD: {