diff --git hbase-common/src/main/resources/hbase-default.xml hbase-common/src/main/resources/hbase-default.xml index 877199e..d6a3980 100644 --- hbase-common/src/main/resources/hbase-default.xml +++ hbase-common/src/main/resources/hbase-default.xml @@ -274,13 +274,10 @@ possible configurations would overwhelm and obscure the important. hbase.master.distributed.log.replay - true - Enable 'distributed log replay' as default engine splitting - WAL files on server crash. This default is new in hbase 1.0. To fall - back to the old mode 'distributed log splitter', set the value to - 'false'. 'Disributed log replay' improves MTTR because it does not - write intermediate files. 'DLR' required that 'hfile.format.version' - be set to version 3 or higher. + false + True to enable 'distributed log replay' as default engine splitting + WAL files on server crash. 'Disributed log replay' improves MTTR because it does not + write intermediate files. diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java index 7650b94..93bde36 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java @@ -237,6 +237,11 @@ public class MasterFileSystem { return serverNames; } for (FileStatus status : logFolders) { + FileStatus[] curLogFiles = FSUtils.listStatus(this.fs, status.getPath(), null); + if (curLogFiles == null || curLogFiles.length == 0) { + // Empty log folder. No recovery needed + continue; + } final ServerName serverName = DefaultWALProvider.getServerNameFromWALDirectoryName( status.getPath()); if (null == serverName) { diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestSplitLogManager.java hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestSplitLogManager.java index f6a7953..80fb7bf 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestSplitLogManager.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestSplitLogManager.java @@ -639,6 +639,7 @@ public class TestSplitLogManager { SplitLogCounters.resetCounters(); Configuration testConf = HBaseConfiguration.create(TEST_UTIL.getConfiguration()); testConf.setBoolean(HConstants.DISTRIBUTED_LOG_REPLAY_KEY, true); + ds = new DummyServer(zkw, testConf); zkw.getRecoverableZooKeeper().create(ZKSplitLog.getEncodedNodeName(zkw, "testRecovery"), new SplitLogTask.Unassigned(