@Override public void stateChange(StateChangeEvent stateChangeEvent) throws RuntimeException { switch (stateChangeEvent.getState()) { case MASTER: case REPLICA: activeLatch.countDown(); break; default: System.err.println (repConfig.getNodeName() + " is disconnected from group."); break; } }
private static String makeMessage(Locker locker, StateChangeEvent event) { long lockerId = (locker == null) ? 0 : locker.getId(); return (event != null) ? ("Problem closing transaction " + lockerId + ". The current state is:" + event.getState() + "." + " The node transitioned to this state at:" + new Date(event.getEventTime())) : "Node state inconsistent with operation"; }
/** * Change to a new node state and release any threads waiting for a state * transition. */ synchronized public void changeAndNotify(ReplicatedEnvironment.State state, NameIdPair masterNameId) { ReplicatedEnvironment.State newState = state; ReplicatedEnvironment.State oldState = currentState.getAndSet(state); stateChangeEvent = new StateChangeEvent(state, masterNameId); LoggerUtils.info(logger, repImpl, "node:" + masterNameId + " state change from " + oldState + " to " + newState); if (stateChangeListener != null) { try { stateChangeListener.stateChange(stateChangeEvent); } catch (Exception e) { LoggerUtils.severe(logger, repImpl, "State Change listener exception" + e.getMessage()); throw new EnvironmentFailureException (repImpl, EnvironmentFailureReason.LISTENER_EXCEPTION, e); } } /* Make things obvious in thread dumps */ Thread.currentThread().setName(currentState + " " + nameIdPair); }
LOGGER.info("The node '" + _prettyGroupNodeName + "' state is " + stateChangeEvent.getState());
private void stateChanged(StateChangeEvent stateChangeEvent) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Received BDB event, new BDB state " + stateChangeEvent.getState() + " Facade state : " + _state.get()); } ReplicatedEnvironment.State state = stateChangeEvent.getState(); if ( _state.get() != State.CLOSED && _state.get() != State.CLOSING) { if (state == ReplicatedEnvironment.State.REPLICA || state == ReplicatedEnvironment.State.MASTER) { if (_state.compareAndSet(State.OPENING, State.OPEN) || _state.compareAndSet(State.RESTARTING, State.OPEN)) { LOGGER.info("The environment facade is in open state for node " + _prettyGroupNodeName); _joinTime = System.currentTimeMillis(); } } StateChangeListener listener = _stateChangeListener.get(); if (listener != null && (_state.get() == State.OPEN || _state.get() == State.RESTARTING)) { listener.stateChange(stateChangeEvent); } if (_lastKnownEnvironmentState == ReplicatedEnvironment.State.MASTER && state == ReplicatedEnvironment.State.DETACHED && _state.get() == State.OPEN) { tryToRestartEnvironment(null); } } _lastKnownEnvironmentState = state; }
@Override public void stateChange(StateChangeEvent stateChangeEvent) throws RuntimeException { if (_isClosedOrDeleted) { LOGGER.debug("Ignoring state transition into state {} because VHN is already closed or closing", stateChangeEvent.getState()); } else { try { doStateChange(stateChangeEvent); } catch (RuntimeException e) { // Ignore exception when VHN is closed or closing if (!_isClosedOrDeleted) { throw e; } else { LOGGER.debug("Ignoring any runtime exception thrown on state transition after node close", e); } } } }
private void doStateChange(StateChangeEvent stateChangeEvent) com.sleepycat.je.rep.ReplicatedEnvironment.State state = stateChangeEvent.getState(); NodeRole previousRole = getRole();