regionNode.unsetProcedure(procs[i]);
regionNode.unsetProcedure(existingProc); } else {
/** * Called by DisableTableProcedure to unassign all the regions for a table. */ public TransitRegionStateProcedure[] createUnassignProceduresForDisabling(TableName tableName) { return regionStates.getTableRegionStateNodes(tableName).stream().map(regionNode -> { regionNode.lock(); try { if (!regionStates.include(regionNode, false) || regionStates.isRegionOffline(regionNode.getRegionInfo())) { return null; } // As in DisableTableProcedure, we will hold the xlock for table, so we can make sure that // this procedure has not been executed yet, as TRSP will hold the shared lock for table all // the time. So here we will unset it and when it is actually executed, it will find that // the attach procedure is not itself and quit immediately. if (regionNode.getProcedure() != null) { regionNode.unsetProcedure(regionNode.getProcedure()); } TransitRegionStateProcedure proc = TransitRegionStateProcedure .unassign(getProcedureEnvironment(), regionNode.getRegionInfo()); regionNode.setProcedure(proc); return proc; } finally { regionNode.unlock(); } }).filter(p -> p != null).toArray(TransitRegionStateProcedure[]::new); }
if (lastState == RegionStateTransitionState.REGION_STATE_TRANSITION_CONFIRM_OPENED) { regionNode.unsetProcedure(this); return Flow.NO_MORE_STATE; setFailure(getClass().getSimpleName(), new RetriesExhaustedException( "Max attempts " + env.getAssignmentManager().getAssignMaxAttempts() + " exceeded")); regionNode.unsetProcedure(this); return Flow.NO_MORE_STATE;
if (lastState == RegionStateTransitionState.REGION_STATE_TRANSITION_CONFIRM_CLOSED) { regionNode.unsetProcedure(this); return Flow.NO_MORE_STATE; if (!RegionReplicaUtil.isDefaultReplica(getRegion()) && lastState == RegionStateTransitionState.REGION_STATE_TRANSITION_CONFIRM_CLOSED) { regionNode.unsetProcedure(this); return Flow.NO_MORE_STATE;
if (lastState == RegionStateTransitionState.REGION_STATE_TRANSITION_CONFIRM_CLOSED) { regionNode.unsetProcedure(this);
private TransitRegionStateProcedure createAssignProcedure(RegionStateNode regionNode, ServerName targetServer, boolean override) { TransitRegionStateProcedure proc; regionNode.lock(); try { if(override && regionNode.getProcedure() != null) { regionNode.unsetProcedure(regionNode.getProcedure()); } assert regionNode.getProcedure() == null; proc = TransitRegionStateProcedure.assign(getProcedureEnvironment(), regionNode.getRegionInfo(), targetServer); regionNode.setProcedure(proc); } finally { regionNode.unlock(); } return proc; }
private TransitRegionStateProcedure createUnassignProcedure(RegionStateNode regionNode, boolean override) { TransitRegionStateProcedure proc; regionNode.lock(); try { if(override && regionNode.getProcedure() != null) { regionNode.unsetProcedure(regionNode.getProcedure()); } assert regionNode.getProcedure() == null; proc = TransitRegionStateProcedure.unassign(getProcedureEnvironment(), regionNode.getRegionInfo()); regionNode.setProcedure(proc); } finally { regionNode.unlock(); } return proc; }
@After public void tearDownAfterTest() throws IOException { for (RegionInfo region : UTIL.getAdmin().getRegions(TABLE_NAME)) { RegionStateNode regionNode = AM.getRegionStates().getRegionStateNode(region); // confirm that we have released the lock assertFalse(((ReentrantLock) regionNode.lock).isLocked()); TransitRegionStateProcedure proc = regionNode.getProcedure(); if (proc != null) { regionNode.unsetProcedure(proc); } } }
regionNode.unsetProcedure(this);
regionNode.unsetProcedure(trsp); } finally { regionNode.unlock();