@Override public void handleEvent(EventContext context) { timer.purge(); // Get rid of finished tasks if (context instanceof GarbageCollectContext) { GarbageCollectContext gcc = (GarbageCollectContext) context; if (gcc.getDelay() > 0) { final long delay = gcc.getDelay(); gcc.setDelay(0); scheduleDGC(gcc, delay); } else { gcRunning = true; collector.doGC(gcc.getType()); gcRunning = false; // We want to let inline gc clean stuff up (quickly) before another young/full gc happens garbageCollectionManager.scheduleInlineGarbageCollectionIfNecessary(); if (gcc instanceof PeriodicGarbageCollectContext) { // Rearm and requeue if it's a periodic gc. PeriodicGarbageCollectContext pgcc = (PeriodicGarbageCollectContext) gcc; pgcc.reset(); gcSink.add(pgcc); } } } else if (context instanceof InlineGCContext) { garbageCollectionManager.inlineCleanup(); } else { throw new AssertionError("Unknown context type: " + context.getClass().getName()); } }
@Override public synchronized void moveToPassiveStandbyState() { if (state == ACTIVE_COORDINATOR) { // TODO:: Support this later throw new AssertionError( "Cant move to " + PASSIVE_STANDBY + " from " + ACTIVE_COORDINATOR + " at least for now"); } else if (state != PASSIVE_STANDBY) { stateChangeSink.add(new StateChangedEvent(state, PASSIVE_STANDBY)); state = PASSIVE_STANDBY; info("Moved to " + state, true); fireStateChangedOperatorEvent(); } else { info("Already in " + state); } }
private synchronized void moveToActiveState() { if (state == START_STATE || state == PASSIVE_STANDBY) { // TODO :: If state == START_STATE publish cluster ID debugInfo("Moving to active state"); StateChangedEvent event = new StateChangedEvent(state, ACTIVE_COORDINATOR); state = ACTIVE_COORDINATOR; setActiveNodeID(getLocalNodeID()); info("Becoming " + state, true); fireStateChangedOperatorEvent(); electionMgr.declareWinner(this.activeNode); stateChangeSink.add(event); } else { throw new AssertionError("Cant move to " + ACTIVE_COORDINATOR + " from " + state); } }
private synchronized void moveToPassiveState(Enrollment winningEnrollment) { electionMgr.reset(winningEnrollment); if (state == START_STATE) { state = PASSIVE_UNINITIALIZED; info("Moved to " + state, true); fireStateChangedOperatorEvent(); stateChangeSink.add(new StateChangedEvent(START_STATE, state)); } else if (state == ACTIVE_COORDINATOR) { // TODO:: Support this later throw new AssertionError( "Cant move to " + PASSIVE_UNINITIALIZED + " from " + ACTIVE_COORDINATOR + " at least for now"); } else { debugInfo( "Move to passive state ignored - state=" + state + ", winningEnrollment: " + winningEnrollment); } }