Repository: hbase Updated Branches: refs/heads/branch-1.2 229965646 -> e10585bec
HBASE-14092 Add -noLock and -noBalanceSwitch options to hbck Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/e10585be Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e10585be Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e10585be Branch: refs/heads/branch-1.2 Commit: e10585bec7240fa47dc0c9bf53822ac73340cbed Parents: 2299656 Author: Elliott Clark <[email protected]> Authored: Wed Jul 15 12:03:59 2015 -0700 Committer: Elliott Clark <[email protected]> Committed: Fri Jul 17 10:57:56 2015 -0700 ---------------------------------------------------------------------- .../org/apache/hadoop/hbase/util/HBaseFsck.java | 50 +++++++++++++++----- 1 file changed, 37 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/e10585be/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 406848f..7b54371 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 @@ -235,6 +235,8 @@ public class HBaseFsck extends Configured implements Closeable { * Options ***********/ private static boolean details = false; // do we display the full report + private static boolean useLock = true; // do we use the hbck exclusivity lock + private static boolean switchBalancer = true; // do we turn the balancer off while running private long timelag = DEFAULT_TIME_LAG; // tables whose modtime is older private boolean fixAssignments = false; // fix assignment errors? private boolean fixMeta = false; // fix meta errors? @@ -486,18 +488,21 @@ public class HBaseFsck extends Configured implements Closeable { */ public void connect() throws IOException { - // Check if another instance of balancer is running - hbckOutFd = checkAndMarkRunningHbck(); - if (hbckOutFd == null) { - setRetCode(-1); - LOG.error("Another instance of hbck is running, exiting this instance.[If you are sure" + - " no other instance is running, delete the lock file " + - HBCK_LOCK_PATH + " and rerun the tool]"); - throw new IOException("Duplicate hbck - Abort"); + if (useLock) { + // Check if another instance of balancer is running + hbckOutFd = checkAndMarkRunningHbck(); + if (hbckOutFd == null) { + setRetCode(-1); + LOG.error("Another instance of hbck is running, exiting this instance.[If you are sure" + + " no other instance is running, delete the lock file " + + HBCK_LOCK_PATH + " and rerun the tool]"); + throw new IOException("Duplicate hbck - Abort"); + } + + // Make sure to cleanup the lock + hbckLockCleanup.set(true); } - // Make sure to cleanup the lock - hbckLockCleanup.set(true); // Add a shutdown hook to this thread, in case user tries to // kill the hbck with a ctrl-c, we want to cleanup the lock so that @@ -676,7 +681,6 @@ public class HBaseFsck extends Configured implements Closeable { fixOrphanTables(); LOG.info("Checking and fixing region consistency"); - // Check and fix consistency checkAndFixConsistency(); @@ -694,13 +698,19 @@ public class HBaseFsck extends Configured implements Closeable { errors.print("Version: " + status.getHBaseVersion()); offlineHdfsIntegrityRepair(); + boolean oldBalancer = true; // turn the balancer off - boolean oldBalancer = admin.setBalancerRunning(false, true); + if (switchBalancer) { + oldBalancer = admin.setBalancerRunning(false, true); + } + try { onlineConsistencyRepair(); } finally { - admin.setBalancerRunning(oldBalancer, false); + if (switchBalancer) { + admin.setBalancerRunning(oldBalancer, false); + } } if (checkRegionBoundaries) { @@ -4156,6 +4166,14 @@ public class HBaseFsck extends Configured implements Closeable { details = true; } + public static void setNoLock() { + useLock = false; + } + + public static void setNoBalacerSwitch() { + switchBalancer = false; + } + /** * Set summary mode. * Print only summary of the tables and status (OK or INCONSISTENT) @@ -4417,6 +4435,8 @@ public class HBaseFsck extends Configured implements Closeable { out.println(" -metaonly Only check the state of the hbase:meta table."); out.println(" -sidelineDir <hdfs://> HDFS path to backup existing meta."); out.println(" -boundaries Verify that regions boundaries are the same between META and store files."); + out.println(" -noLock Turn off using the hdfs lock file."); + out.println(" -noBalancerSwitch Don't switch the balancer off."); out.println(""); out.println(" Metadata Repair options: (expert features, use with caution!)"); @@ -4511,6 +4531,10 @@ public class HBaseFsck extends Configured implements Closeable { return printUsageAndExit(); } else if (cmd.equals("-details")) { setDisplayFullReport(); + } else if (cmd.equals("-noLock")) { + setNoLock(); + } else if (cmd.equals("-noBalancerSwitch")) { + setNoBalacerSwitch(); } else if (cmd.equals("-timelag")) { if (i == args.length - 1) { errors.reportError(ERROR_CODE.WRONG_USAGE, "HBaseFsck: -timelag needs a value.");
