HBASE-16647 hbck should do offline reference repair before online repair
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/66821206 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/66821206 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/66821206 Branch: refs/heads/hbase-14439 Commit: 66821206b85d85fba3012d6bb0d6b98c8ee23cb8 Parents: 22dcce5 Author: Jerry He <jerry...@apache.org> Authored: Tue Sep 20 11:49:09 2016 -0700 Committer: Jerry He <jerry...@apache.org> Committed: Tue Sep 20 11:49:09 2016 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/hadoop/hbase/util/HBaseFsck.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/66821206/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java index d483c71..6a56f8e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java @@ -630,7 +630,6 @@ public class HBaseFsck extends Configured implements Closeable { */ public int onlineConsistencyRepair() throws IOException, KeeperException, InterruptedException { - clearState(); // get regions according to what is online on each RegionServer loadDeployedRegions(); @@ -748,8 +747,12 @@ public class HBaseFsck extends Configured implements Closeable { throws IOException, KeeperException, InterruptedException, ServiceException { // print hbase server version errors.print("Version: " + status.getHBaseVersion()); - offlineHdfsIntegrityRepair(); + // Clean start + clearState(); + // Do offline check and repair first + offlineHdfsIntegrityRepair(); + offlineReferenceFileRepair(); // If Master runs maintenance tasks (such as balancer, catalog janitor, etc) during online // hbck, it is likely that hbck would be misled and report transient errors. Therefore, it // is better to set Master into maintenance mode during online hbck. @@ -765,8 +768,6 @@ public class HBaseFsck extends Configured implements Closeable { checkRegionBoundaries(); } - offlineReferenceFileRepair(); - checkAndFixTableLocks(); checkAndFixReplication(); @@ -1068,6 +1069,7 @@ public class HBaseFsck extends Configured implements Closeable { * be fixed before a cluster can start properly. */ private void offlineReferenceFileRepair() throws IOException, InterruptedException { + clearState(); Configuration conf = getConf(); Path hbaseRoot = FSUtils.getRootDir(conf); FileSystem fs = hbaseRoot.getFileSystem(conf);