Author: stack
Date: Sat Sep 10 17:53:28 2011
New Revision: 1167568
URL: http://svn.apache.org/viewvc?rev=1167568&view=rev
Log:
HBASE-4270 IOE ignored during flush-on-close causes dataloss
Modified:
hbase/branches/0.90/CHANGES.txt
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/handler/CloseRegionHandler.java
Modified: hbase/branches/0.90/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1167568&r1=1167567&r2=1167568&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Sat Sep 10 17:53:28 2011
@@ -34,6 +34,7 @@ Release 0.90.5 - Unreleased
consistency (Jieshan Bean)
HBASE-4340 Hbase can't balance if ServerShutdownHandler encountered
exception (Jinchao)
+ HBASE-4270 IOE ignored during flush-on-close causes dataloss
IMPROVEMENT
HBASE-4205 Enhance HTable javadoc (Eric Charles)
Modified:
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/handler/CloseRegionHandler.java
URL:
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/handler/CloseRegionHandler.java?rev=1167568&r1=1167567&r2=1167568&view=diff
==============================================================================
---
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/handler/CloseRegionHandler.java
(original)
+++
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/regionserver/handler/CloseRegionHandler.java
Sat Sep 10 17:53:28 2011
@@ -125,9 +125,13 @@ public class CloseRegionHandler extends
regionInfo.getRegionNameAsString());
return;
}
- } catch (IOException e) {
- LOG.error("Unrecoverable exception while closing region " +
- regionInfo.getRegionNameAsString() + ", still finishing close", e);
+ } catch (Throwable t) {
+ // A throwable here indicates that we couldn't successfully flush the
+ // memstore before closing. So, we need to abort the server and allow
+ // the master to split our logs in order to recover the data.
+ server.abort("Unrecoverable exception while closing region " +
+ regionInfo.getRegionNameAsString() + ", still finishing close", t);
+ throw new RuntimeException(t);
}
this.rsServices.removeFromOnlineRegions(regionInfo.getEncodedName());