diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index bea8f45..5b7d41d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -4841,8 +4841,12 @@ public class HRegion implements HeapSize { // , Writable{ WALEdit walEdit = new WALEdit(); // 1. Run pre-process hook - processor.preProcess(this, walEdit); - + try { + processor.preProcess(this, walEdit); + } catch (IOException e) { + closeRegionOperation(); + throw e; + } // Short circuit the read only case if (processor.readOnly()) { try { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java index f2519c2..177ff9b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java @@ -176,12 +176,16 @@ public class TableSnapshotScanner extends AbstractClientScanner { } } - result = currentRegionScanner.next(); - if (result != null) { - return result; - } else { - currentRegionScanner.close(); - currentRegionScanner = null; + try { + result = currentRegionScanner.next(); + if (result != null) { + return result; + } + } finally { + if (result == null) { + currentRegionScanner.close(); + currentRegionScanner = null; + } } } }