protected ProcedureExecutor<MasterProcedureEnv> getProcedureExecutor() { return master.getMasterProcedureExecutor(); }
public boolean isRunning() { if (this.master == null || this.master.getMasterProcedureExecutor() == null) return false; return master.getMasterProcedureExecutor().isRunning(); }
@Override public void onConfigurationChange(Configuration conf) { master.getMasterProcedureExecutor().refreshConfiguration(conf); } }
private MasterProcedureEnv getProcedureEnvironment() { return master.getMasterProcedureExecutor().getEnvironment(); }
/** * Remove the procedures that are marked as finished */ private synchronized void cleanupCompletedRestoreInMap() { ProcedureExecutor<MasterProcedureEnv> procExec = master.getMasterProcedureExecutor(); Iterator<Map.Entry<TableName, Long>> it = restoreTableToProcIdMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry<TableName, Long> entry = it.next(); Long procId = entry.getValue(); if (procExec.isRunning() && procExec.isFinished(procId)) { it.remove(); } } }
private long submitProcedure(final Procedure<MasterProcedureEnv> procedure, final NonceKey nonceKey) throws ServiceNotRunningException { checkIsRunning(); ProcedureExecutor<MasterProcedureEnv> pe = this.masterServices.getMasterProcedureExecutor(); return pe.submitProcedure(procedure, nonceKey); }
public MasterProcedureEnv(final MasterServices master, final RSProcedureDispatcher remoteDispatcher) { this.master = master; this.procSched = new MasterProcedureScheduler( procId -> master.getMasterProcedureExecutor().getProcedure(procId)); this.remoteDispatcher = remoteDispatcher; }
public void move(RegionInfo regionInfo) throws IOException { TransitRegionStateProcedure proc = createMoveRegionProcedure(regionInfo, null); ProcedureSyncWait.submitAndWaitProcedure(master.getMasterProcedureExecutor(), proc); }
@Override public void serverAdded(ServerName serverName) { MasterProcedureScheduler scheduler = services.getMasterProcedureExecutor().getEnvironment().getProcedureScheduler(); for (UsedReplayWorkersForPeer usedWorkers : usedWorkersByPeer.values()) { synchronized (usedWorkers) { usedWorkers.wake(scheduler); } } } });
public static void updateProgress(MasterProcedureEnv env, long parentId) { if (parentId == NO_PROC_ID) { return; } Procedure parentProcedure = env.getMasterServices().getMasterProcedureExecutor().getProcedure(parentId); if (parentProcedure != null && parentProcedure instanceof ServerCrashProcedure) { ((ServerCrashProcedure) parentProcedure).updateProgress(false); } } }
static void reopenRegionsForRollback(MasterProcedureEnv env, List<RegionInfo> regions, int regionReplication, ServerName targetServer) { TransitRegionStateProcedure[] procs = createAssignProcedures(env, regions, regionReplication, targetServer, true); if (procs.length > 0) { env.getMasterServices().getMasterProcedureExecutor().submitProcedures(procs); } }
@Override public long modifyNamespace(NamespaceDescriptor namespaceDescriptor, final NonceKey nonceKey, final ProcedurePrepareLatch latch) throws IOException { return submitProcedure(new ModifyNamespaceProcedure( this.masterServices.getMasterProcedureExecutor().getEnvironment(), namespaceDescriptor, latch), nonceKey); }
@Override public long createNamespace(NamespaceDescriptor namespaceDescriptor, final NonceKey nonceKey, final ProcedurePrepareLatch latch) throws IOException { return submitProcedure(new CreateNamespaceProcedure( this.masterServices.getMasterProcedureExecutor().getEnvironment(), namespaceDescriptor, latch), nonceKey); }
@Override public long deleteNamespace(String name, final NonceKey nonceKey, final ProcedurePrepareLatch latch) throws IOException { return submitProcedure(new DeleteNamespaceProcedure( this.masterServices.getMasterProcedureExecutor().getEnvironment(), name, latch), nonceKey); }
@Override public void serverAdded(ServerName worker) { this.wake(master.getMasterProcedureExecutor().getEnvironment().getProcedureScheduler()); }
private boolean reportTransition(RegionStateNode regionNode, ServerStateNode serverNode, TransitionCode state, long seqId) throws IOException { ServerName serverName = serverNode.getServerName(); TransitRegionStateProcedure proc = regionNode.getProcedure(); if (proc == null) { return false; } proc.reportTransition(master.getMasterProcedureExecutor().getEnvironment(), regionNode, serverName, state, seqId); return true; }
public Future<byte[]> moveAsync(RegionPlan regionPlan) throws HBaseIOException { TransitRegionStateProcedure proc = createMoveRegionProcedure(regionPlan.getRegionInfo(), regionPlan.getDestination()); return ProcedureSyncWait.submitProcedure(master.getMasterProcedureExecutor(), proc); }
@Override public boolean start() { if (!super.start()) { return false; } master.getServerManager().registerListener(this); procedureEnv = master.getMasterProcedureExecutor().getEnvironment(); for (ServerName serverName: master.getServerManager().getOnlineServersList()) { addNode(serverName); } return true; }
public long assign(RegionInfo regionInfo, ServerName sn) throws IOException { // TODO: should we use getRegionStateNode? RegionStateNode regionNode = regionStates.getOrCreateRegionStateNode(regionInfo); TransitRegionStateProcedure proc; regionNode.lock(); try { preTransitCheck(regionNode, STATES_EXPECTED_ON_ASSIGN); proc = TransitRegionStateProcedure.assign(getProcedureEnvironment(), regionInfo, sn); regionNode.setProcedure(proc); } finally { regionNode.unlock(); } ProcedureSyncWait.submitAndWaitProcedure(master.getMasterProcedureExecutor(), proc); return proc.getProcId(); }
public long unassign(RegionInfo regionInfo) throws IOException { RegionStateNode regionNode = regionStates.getRegionStateNode(regionInfo); if (regionNode == null) { throw new UnknownRegionException("No RegionState found for " + regionInfo.getEncodedName()); } TransitRegionStateProcedure proc; regionNode.lock(); try { preTransitCheck(regionNode, STATES_EXPECTED_ON_UNASSIGN_OR_MOVE); proc = TransitRegionStateProcedure.unassign(getProcedureEnvironment(), regionInfo); regionNode.setProcedure(proc); } finally { regionNode.unlock(); } ProcedureSyncWait.submitAndWaitProcedure(master.getMasterProcedureExecutor(), proc); return proc.getProcId(); }