diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java index 07986f2..fc4664d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java @@ -312,7 +312,7 @@ public class ZKSplitLogManagerCoordination extends ZooKeeperListener implements } if (count == 0 && this.details.getMaster().isInitialized() && !this.details.getMaster().getServerManager().areDeadServersInProgress()) { - // no splitting work items left + // No splitting work items left ZKSplitLog.deleteRecoveringRegionZNodes(watcher, null); // reset lastRecoveringNodeCreationTime because we cleared all recovering znodes at // this point. @@ -644,8 +644,8 @@ public class ZKSplitLogManagerCoordination extends ZooKeeperListener implements } ZKUtil.createSetData(this.watcher, nodePath, ZKUtil.regionSequenceIdsToByteArray(lastSequenceId, null)); - LOG.debug("Mark region " + regionEncodeName + " recovering from failed region server " - + serverName); + LOG.debug("Marked " + regionEncodeName + " as recovering from " + serverName + + ": " + nodePath); // break retry loop break; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java index 3ec523d..f829a0c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java @@ -1,5 +1,5 @@ /** - * Licensed to the Apache Software Foundation (ASF) under one + * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file 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 e362a17..f5695a8 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 @@ -6053,9 +6053,10 @@ public class HRegion implements HeapSize { // , Writable{ case BATCH_MUTATE: case COMPACT_REGION: // when a region is in recovering state, no read, split or merge is allowed - if (this.isRecovering() && (this.disallowWritesInRecovering || + if (isRecovering() && (this.disallowWritesInRecovering || (op != Operation.PUT && op != Operation.DELETE && op != Operation.BATCH_MUTATE))) { - throw new RegionInRecoveryException(this.getRegionNameAsString() + " is recovering"); + throw new RegionInRecoveryException(this.getRegionNameAsString() + + " is recovering; cannot take reads"); } break; default: diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index 1254ba5..18aa8aa 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -1331,13 +1331,13 @@ public class RSRpcServices implements HBaseRPCErrorHandler, // check if the region to be opened is marked in recovering state in ZK if (ZKSplitLog.isRegionMarkedRecoveringInZK(regionServer.getZooKeeper(), region.getEncodedName())) { - // check if current region open is for distributedLogReplay. This check is to support + // Check if current region open is for distributedLogReplay. This check is to support // rolling restart/upgrade where we want to Master/RS see same configuration if (!regionOpenInfo.hasOpenForDistributedLogReplay() || regionOpenInfo.getOpenForDistributedLogReplay()) { regionServer.recoveringRegions.put(region.getEncodedName(), null); } else { - // remove stale recovery region from ZK when we open region not for recovering which + // Remove stale recovery region from ZK when we open region not for recovering which // could happen when turn distributedLogReplay off from on. List tmpRegions = new ArrayList(); tmpRegions.add(region.getEncodedName()); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoveringRegionWatcher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoveringRegionWatcher.java index b0e7105..a07bd2f 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoveringRegionWatcher.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoveringRegionWatcher.java @@ -63,7 +63,7 @@ public class RecoveringRegionWatcher extends ZooKeeperListener { region.setRecovering(false); } - LOG.info(path + " znode deleted. Region: " + regionName + " completes recovery."); + LOG.info(path + " deleted; " + regionName + " recovered."); } @Override diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java index 3c845fd..e936ace 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java @@ -529,8 +529,7 @@ public class TestDistributedLogSplitting { }); Thread.sleep(2000); - LOG.info("Current Open Regions:" - + HBaseTestingUtility.getAllOnlineRegions(cluster).size()); + LOG.info("Current Open Regions:" + HBaseTestingUtility.getAllOnlineRegions(cluster).size()); // wait for all regions are fully recovered TEST_UTIL.waitFor(180000, 200, new Waiter.Predicate() { @@ -538,7 +537,11 @@ public class TestDistributedLogSplitting { public boolean evaluate() throws Exception { List recoveringRegions = zkw.getRecoverableZooKeeper().getChildren( zkw.recoveringRegionsZNode, false); - return (recoveringRegions != null && recoveringRegions.size() == 0); + boolean done = recoveringRegions != null && recoveringRegions.size() == 0; + if (!done) { + LOG.info("Recovering regions: " + recoveringRegions); + } + return done; } });