From 269ea09499e1daf38ab6975888e77dd20967fce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andor=20Moln=C3=A1r?= Date: Tue, 6 Oct 2020 09:38:18 +0200 Subject: [PATCH] HBASE-25146 Add extra logging at info level to HFileCorruptionChecker in order to report progress (#2503) Signed-off-by: Wellington Chevreuil Signed-off-by: Mate Szalay-Beko Signed-off-by: Balazs Meszaros --- .../hbase/util/hbck/HFileCorruptionChecker.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java index 9a398f251ac..6a6c530c3b6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java @@ -50,6 +50,7 @@ import org.apache.yetus.audience.InterfaceAudience; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + /** * This class marches through all of the region's hfiles and verifies that * they are all valid files. One just needs to instantiate the class, use @@ -180,6 +181,9 @@ public class HFileCorruptionChecker { missing.add(cfDir); return; } + + LOG.info("Checking Column Family Directory {}. Number of entries = {}", cfDir, hfs.size()); + for (FileStatus hfFs : hfs) { Path hf = hfFs.getPath(); checkHFile(hf); @@ -213,6 +217,9 @@ public class HFileCorruptionChecker { missedMobFiles.add(cfDir); return; } + + LOG.info("Checking MOB Column Family Directory {}. Number of entries = {}", cfDir, hfs.size()); + for (FileStatus hfFs : hfs) { Path hf = hfFs.getPath(); checkMobFile(hf); @@ -284,6 +291,9 @@ public class HFileCorruptionChecker { missedMobFiles.add(regionDir); return; } + + LOG.info("Checking MOB Region Directory {}. Number of entries = {}", regionDir, hfs.length); + for (FileStatus hfFs : hfs) { Path hf = hfFs.getPath(); checkMobColFamDir(hf); @@ -318,6 +328,8 @@ public class HFileCorruptionChecker { return; } + LOG.info("Checking Region Directory {}. Number of entries = {}", regionDir, cfs.size()); + for (FileStatus cfFs : cfs) { Path cfDir = cfFs.getPath(); checkColFamDir(cfDir); @@ -342,6 +354,8 @@ public class HFileCorruptionChecker { return; } + LOG.info("Checking Table Directory {}. Number of entries (including mob) = {}", tableDir, rds.size() + 1); + // Parallelize check at the region dir level List rdcs = new ArrayList<>(rds.size() + 1); List> rdFutures; @@ -546,6 +560,8 @@ public class HFileCorruptionChecker { : "CORRUPTED"; // print mob-related report + out.print("Checked " + mobFilesChecked.get() + " Mob files for corruption"); + out.print(" Mob files corrupted: " + corruptedMobFiles.size()); if (inQuarantineMode) { out.print(" Mob files successfully quarantined: " + quarantinedMobFiles.size()); for (Path sq : quarantinedMobFiles) {