diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java index cbea8a6..83388f7 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java @@ -280,6 +280,11 @@ public class HLogSplitter { Long lastFlushedSequenceId = -1L; ServerName serverName = HLogUtil.getServerNameFromHLogDirectoryName(logPath); failedServerName = (serverName == null) ? "" : serverName.getServerName(); + // clear location cache of regions on failed server + if (this.distributedLogReplay && serverName != null) { + HConnection hconn = HConnectionManager.getConnection(conf); + hconn.clearCaches(serverName); + } while ((entry = getNextLogLine(in, logPath, skipErrors)) != null) { byte[] region = entry.getKey().getEncodedRegionName(); String key = Bytes.toString(region);