Index: src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java (revision 1228489) +++ src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java (working copy) @@ -23,6 +23,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.Set; import java.util.List; @@ -115,6 +116,8 @@ private Set deadWorkers = null; private Object deadWorkersLock = new Object(); + private Map monitoredTaskMap = + new HashMap(); /** * Wrapper around {@link #SplitLogManager(ZooKeeperWatcher, Configuration, @@ -238,8 +241,13 @@ * @return cumulative size of the logfiles split */ public long splitLogDistributed(final List logDirs) throws IOException { - MonitoredTask status = TaskMonitor.get().createStatus( + Integer logDirsHash = logDirs.hashCode(); + MonitoredTask status = monitoredTaskMap.get(logDirsHash); + if (status == null) { + status = TaskMonitor.get().createStatus( "Doing distributed log split in " + logDirs); + monitoredTaskMap.put(logDirsHash, status); + } FileStatus[] logfiles = getFileList(logDirs); status.setStatus("Checking directory contents..."); LOG.debug("Scheduling batch of logs to split"); @@ -290,6 +298,7 @@ " bytes in " + batch.installed + " log files in " + logDirs + " in " + (EnvironmentEdgeManager.currentTimeMillis() - t) + "ms"; status.markComplete(msg); + monitoredTaskMap.remove(logDirsHash); LOG.info(msg); return totalSize; } Index: src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java (revision 1228489) +++ src/main/java/org/apache/hadoop/hbase/master/MasterFileSystem.java (working copy) @@ -21,6 +21,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Set; import java.util.UUID; @@ -266,6 +267,7 @@ LOG.info("No logs to split"); return; } + Collections.sort(logDirs); if (distributedLogSplitting) { splitLogManager.handleDeadWorkers(serverNames);