Index: src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java (revision 1051348) +++ src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java (working copy) @@ -97,6 +97,9 @@ if (tickleOpening("post_region_open")) { if (updateMeta(region)) failed = false; } + if (this.server.isStopped() || this.rsServices.isStopping()) { + failed = true; + } if (failed) { cleanupFailedOpen(region); @@ -120,6 +123,10 @@ * Caller must cleanup region if this fails. */ private boolean updateMeta(final HRegion r) { + if (this.server.isStopped() || + this.rsServices.isStopping()) { + return false; + } // Object we do wait/notify on. Make it boolean. If set, we're done. // Else, wait. final AtomicBoolean signaller = new AtomicBoolean(false); Index: src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java (revision 1051348) +++ src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java (working copy) @@ -427,7 +427,8 @@ Throwable cause = e.getCause(); if (cause != null && cause instanceof EOFException) { t = cause; - } else if (cause.getMessage().contains("Connection reset")) { + } else if (cause != null && cause.getMessage() != null + && cause.getMessage().contains("Connection reset")) { t = cause; } else { throw e;