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());


Reply via email to