Index: src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java (revision 1430217) +++ src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java (working copy) @@ -238,6 +238,12 @@ private Map> orphanTableDirs = new HashMap>(); + // Set this to true while HBCK rerun after the fix. + private boolean inRerun = false; + + // All the recently modified regions which were skipped during the HBCK check + private List skippedRegions = new ArrayList(); + /** * Constructor * @@ -1593,8 +1599,13 @@ boolean splitParent = (hbi.metaEntry == null)? false: hbi.metaEntry.isSplit() && hbi.metaEntry.isOffline(); boolean shouldBeDeployed = inMeta && !isTableDisabled(hbi.metaEntry); - boolean recentlyModified = inHdfs && - hbi.getModTime() + timelag > System.currentTimeMillis(); + boolean recentlyModified; + if (this.inRerun) { + // In case of rerun just see whether this region was skipped previously. If so skip it + recentlyModified = skippedRegions.contains(hbi.getRegionNameAsString()); + } else { + recentlyModified = inHdfs && hbi.getModTime() + timelag > System.currentTimeMillis(); + } // ========== First the healthy cases ============= if (hbi.containsOnlyHdfsEdits()) { @@ -1608,6 +1619,7 @@ return; } else if (recentlyModified) { LOG.warn("Region " + descriptiveName + " was recently modified -- skipping"); + skippedRegions.add(hbi.getRegionNameAsString()); return; } // ========== Cases where the region is not in META ============= @@ -3623,6 +3635,7 @@ } catch (InterruptedException ie) { return this; } + this.inRerun = true; // Just report setFixAssignments(false); setFixMeta(false);