@@ -444,35 +444,36 @@ protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {
444444 private boolean prepareMergeRegion (final MasterProcedureEnv env ) throws IOException {
445445 // Fail if we are taking snapshot for the given table
446446 TableName tn = regionsToMerge [0 ].getTable ();
447+ final String regionNamesToLog = RegionInfo .getShortNameToLog (regionsToMerge );
447448 if (env .getMasterServices ().getSnapshotManager ().isTableTakingAnySnapshot (tn )) {
448- throw new MergeRegionException ("Skip merging regions "
449- + RegionInfo . getShortNameToLog ( regionsToMerge ) + ", because we are snapshotting " + tn );
449+ throw new MergeRegionException (
450+ "Skip merging regions " + regionNamesToLog + ", because we are snapshotting " + tn );
450451 }
451452
452- // Mostly this check is not used because we already check the switch before submit a merge
453- // procedure. Just for safe, check the switch again. This procedure can be rollbacked if
454- // the switch was set to false after submit.
453+ // Mostly the below two checks are not used because we already check the switches before
454+ // submitting the merge procedure. Just for safety, we are checking the switch again here.
455+ // Also, in case the switch was set to false after submission, this procedure can be rollbacked,
456+ // thanks to this double check!
457+ // case 1: check for cluster level switch
455458 if (!env .getMasterServices ().isSplitOrMergeEnabled (MasterSwitchType .MERGE )) {
456- String regionsStr = Arrays .deepToString (this .regionsToMerge );
457- LOG .warn ("Merge switch is off! skip merge of " + regionsStr );
459+ LOG .warn ("Merge switch is off! skip merge of " + regionNamesToLog );
458460 setFailure (getClass ().getSimpleName (),
459- new IOException ("Merge of " + regionsStr + " failed because merge switch is off" ));
461+ new IOException ("Merge of " + regionNamesToLog + " failed because merge switch is off" ));
460462 return false ;
461463 }
462-
464+ // case 2: check for table level switch
463465 if (!env .getMasterServices ().getTableDescriptors ().get (getTableName ()).isMergeEnabled ()) {
464- String regionsStr = Arrays .deepToString (regionsToMerge );
465- LOG .warn ("Merge is disabled for the table! Skipping merge of {}" , regionsStr );
466+ LOG .warn ("Merge is disabled for the table! Skipping merge of {}" , regionNamesToLog );
466467 setFailure (getClass ().getSimpleName (), new IOException (
467- "Merge of " + regionsStr + " failed as region merge is disabled for the table" ));
468+ "Merge of " + regionNamesToLog + " failed as region merge is disabled for the table" ));
468469 return false ;
469470 }
470471
471472 RegionStates regionStates = env .getAssignmentManager ().getRegionStates ();
472473 for (RegionInfo ri : this .regionsToMerge ) {
473474 if (MetaTableAccessor .hasMergeRegions (env .getMasterServices ().getConnection (), ri )) {
474- String msg = "Skip merging " + RegionInfo . getShortNameToLog ( regionsToMerge )
475- + ", because a parent, " + RegionInfo .getShortNameToLog (ri ) + ", has a merge qualifier "
475+ String msg = "Skip merging " + regionNamesToLog + ", because a parent, "
476+ + RegionInfo .getShortNameToLog (ri ) + ", has a merge qualifier "
476477 + "(if a 'merge column' in parent, it was recently merged but still has outstanding "
477478 + "references to its parents that must be cleared before it can participate in merge -- "
478479 + "major compact it to hurry clearing of its references)" ;
@@ -492,8 +493,8 @@ private boolean prepareMergeRegion(final MasterProcedureEnv env) throws IOExcept
492493 try {
493494 if (!isMergeable (env , state )) {
494495 setFailure (getClass ().getSimpleName (),
495- new MergeRegionException ("Skip merging " + RegionInfo . getShortNameToLog ( regionsToMerge )
496- + ", because a parent, " + RegionInfo .getShortNameToLog (ri ) + ", is not mergeable" ));
496+ new MergeRegionException ("Skip merging " + regionNamesToLog + ", because a parent, "
497+ + RegionInfo .getShortNameToLog (ri ) + ", is not mergeable" ));
497498 return false ;
498499 }
499500 } catch (IOException e ) {
0 commit comments