@Override public void onNext(final RuntimeStatusEvent runtimeStatusEvent) { final State newState = runtimeStatusEvent.getState(); LOG.log(Level.FINEST, "Runtime status: {0}", runtimeStatusEvent); synchronized(this) { this.outstandingContainerRequests = runtimeStatusEvent.getOutstandingContainerRequests().orElse(0); this.containerAllocationCount = runtimeStatusEvent.getContainerAllocationList().size(); this.setState(newState); } switch (newState) { case FAILED: this.onRMFailure(runtimeStatusEvent); break; case DONE: this.onRMDone(runtimeStatusEvent); break; case RUNNING: this.onRMRunning(runtimeStatusEvent); break; case INIT: case SUSPEND: case KILLED: break; default: throw new RuntimeException("Unknown state: " + newState); } }
private void sendRuntimeStatus() { final RuntimeStatusEventImpl.Builder builder = RuntimeStatusEventImpl.newBuilder() .setName("LOCAL") .setState(State.RUNNING) .setOutstandingContainerRequests(this.requestQueue.getNumberOfOutstandingRequests()); for (final String containerAllocation : this.theContainers.getAllocatedContainerIDs()) { builder.addContainerAllocation(containerAllocation); } final RuntimeStatusEvent msg = builder.build(); LOG.log(Level.INFO, "Allocated: {0}, Outstanding requests: {1}", new Object[]{msg.getContainerAllocationList().size(), msg.getOutstandingContainerRequests()}); this.runtimeStatusHandlerEventHandler.onNext(msg); } }
private synchronized void onRMDone(final RuntimeStatusEvent runtimeStatusEvent) { assert runtimeStatusEvent.getState() == State.DONE; LOG.log(Level.INFO, "Resource Manager shutdown happened. Triggering Driver shutdown."); this.driverStatusManager.onComplete(); }
private void onRMRunning(final RuntimeStatusEvent runtimeStatusEvent) { assert runtimeStatusEvent.getState() == State.RUNNING; if (this.isIdle()) { this.driverIdleManager.get().onPotentiallyIdle(IDLE_MESSAGE); } }