private void submitChildrenProcedures(Procedure<TEnvironment>[] subprocs) { for (int i = 0; i < subprocs.length; ++i) { Procedure<TEnvironment> subproc = subprocs[i]; subproc.updateMetricsOnSubmit(getEnvironment()); assert !procedures.containsKey(subproc.getProcId()); procedures.put(subproc.getProcId(), subproc); scheduler.addFront(subproc); } }
public int wakeWaitingProcedures(ProcedureScheduler scheduler) { int count = queue.size(); // wakeProcedure adds to the front of queue, so we start from last in the waitQueue' queue, so // that the procedure which was added first goes in the front for the scheduler queue. scheduler.addFront(queue.descendingIterator()); queue.clear(); return count; }
private void countDownChildren(RootProcedureState<TEnvironment> procStack, Procedure<TEnvironment> procedure) { Procedure<TEnvironment> parent = procedures.get(procedure.getParentProcId()); if (parent == null) { assert procStack.isRollingback(); return; } // If this procedure is the last child awake the parent procedure if (parent.tryRunnable()) { // If we succeeded in making the parent runnable -- i.e. all of its // children have completed, move parent to front of the queue. store.update(parent); scheduler.addFront(parent); LOG.info("Finished subprocedure(s) of " + parent + "; resume parent processing."); return; } }
@Override protected synchronized boolean setTimeoutFailure(TestProcEnv env) { setState(ProcedureProtos.ProcedureState.RUNNABLE); procExecutor.getScheduler().addFront(this); return false; // 'false' means that this procedure handled the timeout } }
@Override protected synchronized boolean setTimeoutFailure(ProcEnv env) { setState(ProcedureProtos.ProcedureState.RUNNABLE); env.getProcedureExecutor().getProcedureScheduler().addFront(this); return false; }
protected void executeTimedoutProcedure(Procedure<TEnvironment> proc) { // The procedure received a timeout. if the procedure itself does not handle it, // call abort() and add the procedure back in the queue for rollback. if (proc.setTimeoutFailure(executor.getEnvironment())) { long rootProcId = executor.getRootProcedureId(proc); RootProcedureState<TEnvironment> procStack = executor.getProcStack(rootProcId); procStack.abort(); executor.getStore().update(proc); executor.getScheduler().addFront(proc); } } }
scheduler.addFront(procedure); LOG.debug("Bypassing {} and its ancestors successfully, adding to queue", procedure); } else {
procExecutor.getScheduler().addFront(p3keyB); waitAndAssertTimestamp(p1keyA, 1, 1); waitAndAssertTimestamp(p2keyA, 0, -1); procExecutor.getScheduler().addFront(p1keyA); ProcedureTestingUtility.waitProcedure(procExecutor, p1keyA); procExecutor.getScheduler().addFront(p2keyA); ProcedureTestingUtility.waitProcedure(procExecutor, p2keyA); waitAndAssertTimestamp(p1keyA, 4, 60000);
private void submitChildrenProcedures(final Procedure[] subprocs) { for (int i = 0; i < subprocs.length; ++i) { final Procedure subproc = subprocs[i]; subproc.updateMetricsOnSubmit(getEnvironment()); assert !procedures.containsKey(subproc.getProcId()); procedures.put(subproc.getProcId(), subproc); scheduler.addFront(subproc); } }
private void submitChildrenProcedures(Procedure<TEnvironment>[] subprocs) { for (int i = 0; i < subprocs.length; ++i) { Procedure<TEnvironment> subproc = subprocs[i]; subproc.updateMetricsOnSubmit(getEnvironment()); assert !procedures.containsKey(subproc.getProcId()); procedures.put(subproc.getProcId(), subproc); scheduler.addFront(subproc); } }
private void countDownChildren(final RootProcedureState procStack, final Procedure procedure) { final Procedure parent = procedures.get(procedure.getParentProcId()); if (parent == null) { assert procStack.isRollingback(); return; } // If this procedure is the last child awake the parent procedure if (parent.tryRunnable()) { // If we succeeded in making the parent runnable -- i.e. all of its // children have completed, move parent to front of the queue. store.update(parent); scheduler.addFront(parent); LOG.info("Finished subprocedure(s) of " + parent + "; resume parent processing."); return; } }
public int wakeWaitingProcedures(ProcedureScheduler scheduler) { int count = queue.size(); // wakeProcedure adds to the front of queue, so we start from last in the waitQueue' queue, so // that the procedure which was added first goes in the front for the scheduler queue. scheduler.addFront(queue.descendingIterator()); queue.clear(); return count; }
private void countDownChildren(RootProcedureState<TEnvironment> procStack, Procedure<TEnvironment> procedure) { Procedure<TEnvironment> parent = procedures.get(procedure.getParentProcId()); if (parent == null) { assert procStack.isRollingback(); return; } // If this procedure is the last child awake the parent procedure if (parent.tryRunnable()) { // If we succeeded in making the parent runnable -- i.e. all of its // children have completed, move parent to front of the queue. store.update(parent); scheduler.addFront(parent); LOG.info("Finished subprocedure pid={}, resume processing parent {}", procedure.getProcId(), parent); return; } }
@Override protected synchronized boolean setTimeoutFailure(TestProcEnv env) { setState(ProcedureProtos.ProcedureState.RUNNABLE); procExecutor.getScheduler().addFront(this); return false; // 'false' means that this procedure handled the timeout } }
@Override protected synchronized boolean setTimeoutFailure(ProcEnv env) { setState(ProcedureProtos.ProcedureState.RUNNABLE); env.getProcedureExecutor().getProcedureScheduler().addFront(this); return false; }
protected void executeTimedoutProcedure(Procedure<TEnvironment> proc) { // The procedure received a timeout. if the procedure itself does not handle it, // call abort() and add the procedure back in the queue for rollback. if (proc.setTimeoutFailure(executor.getEnvironment())) { long rootProcId = executor.getRootProcedureId(proc); RootProcedureState<TEnvironment> procStack = executor.getProcStack(rootProcId); procStack.abort(); executor.getStore().update(proc); executor.getScheduler().addFront(proc); } } }
private void executeTimedoutProcedure(Procedure proc) { // The procedure received a timeout. if the procedure itself does not handle it, // call abort() and add the procedure back in the queue for rollback. if (proc.setTimeoutFailure(executor.getEnvironment())) { long rootProcId = executor.getRootProcedureId(proc); RootProcedureState procStack = executor.getProcStack(rootProcId); procStack.abort(); executor.getStore().update(proc); executor.getScheduler().addFront(proc); } } }
scheduler.addFront(procedure); LOG.info("Bypassing {} and its ancestors successfully, adding to queue", procedure); } else {
procExecutor.getScheduler().addFront(p3keyB); waitAndAssertTimestamp(p1keyA, 1, 1); waitAndAssertTimestamp(p2keyA, 0, -1); procExecutor.getScheduler().addFront(p1keyA); ProcedureTestingUtility.waitProcedure(procExecutor, p1keyA); procExecutor.getScheduler().addFront(p2keyA); ProcedureTestingUtility.waitProcedure(procExecutor, p2keyA); waitAndAssertTimestamp(p1keyA, 4, 60000);
procExecutor.getScheduler().addFront(p3keyB); waitAndAssertTimestamp(p1keyA, 1, 1); waitAndAssertTimestamp(p2keyA, 0, -1); procExecutor.getScheduler().addFront(p1keyA); ProcedureTestingUtility.waitProcedure(procExecutor, p1keyA); procExecutor.getScheduler().addFront(p2keyA); ProcedureTestingUtility.waitProcedure(procExecutor, p2keyA); waitAndAssertTimestamp(p1keyA, 4, 60000);