From 0d1bbc6c511491bac6508b6595e0c35e7793e880 Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Mon, 22 Mar 2010 21:36:17 +0000 Subject: [PATCH] HBASE-2358 Store doReconstructionLog will fail if oldlogfile.log is empty and won't load region git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@926353 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 2 ++ .../java/org/apache/hadoop/hbase/regionserver/Store.java | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 2b01f8333ab..2ed3c32c813 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -250,6 +250,8 @@ Release 0.21.0 - Unreleased HBASE-2283 row level atomicity (Kannan Muthukkaruppan via Stack) HBASE-2355 Unsynchronized logWriters map is mutated from several threads in HLog splitting (Todd Lipcon via Andrew Purtell) + HBASE-2358 Store doReconstructionLog will fail if oldlogfile.log is empty + and won't load region (Cosmin Lehene via Stack) IMPROVEMENTS HBASE-1760 Cleanup TODOs in HTable diff --git a/core/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java b/core/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java index 68435b26ef4..4328d03dc5a 100644 --- a/core/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java +++ b/core/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java @@ -306,13 +306,14 @@ public class Store implements HConstants, HeapSize { // Nothing to do. return -1; } - // Check its not empty. - FileStatus [] stats = this.fs.listStatus(reconstructionLog); - if (stats == null || stats.length == 0) { + FileStatus stat = this.fs.getFileStatus(reconstructionLog); + if (stat.getLen() <= 0) { LOG.warn("Passed reconstruction log " + reconstructionLog + - " is zero-length"); + " is zero-length. Deleting existing file"); + fs.delete(reconstructionLog, false); return -1; } + // TODO: This could grow large and blow heap out. Need to get it into // general memory usage accounting. long maxSeqIdInLog = -1;