public IdentifiedDataSerializable createNew(Integer arg) { return new ClusterStateChange(); } };
private boolean isCurrentStateEqualToRequestedOne(ClusterStateChange change) { if (change.isOfType(ClusterState.class)) { return getState() == change.getNewState(); } else if (change.isOfType(Version.class)) { return clusterVersion != null && clusterVersion.equals(change.getNewState()); } return false; }
@Override public void beforeRun() throws Exception { if (stateChange == null) { throw new IllegalArgumentException("Invalid null cluster state"); } stateChange.validate(); }
public void commitClusterState(ClusterStateChange stateChange, Address initiator, String txnId, boolean isTransient) { Preconditions.checkNotNull(stateChange); stateChange.validate(); clusterServiceLock.lock(); try { final LockGuard stateLock = getStateLock(); if (!stateLock.allowsUnlock(txnId)) { throw new TransactionException( "Cluster state change [" + state + " -> " + stateChange + "] failed for " + initiator + ", current state: " + stateToString()); } if (stateChange.isOfType(ClusterState.class)) { ClusterState newState = (ClusterState) stateChange.getNewState(); doSetClusterState(newState, isTransient); // if state is changed to allow joins, then remove all members which left while not active. if (newState.isJoinAllowed()) { node.getClusterService().getMembershipManager().removeMembersDeadInNotJoinableState(); } } else if (stateChange.isOfType(Version.class)) { // version is validated on cluster-state-lock, thus we can commit without checking compatibility Version newVersion = (Version) stateChange.getNewState(); logger.info("Cluster version set to " + newVersion); doSetClusterVersion(newVersion); } else { throw new IllegalArgumentException("Illegal ClusterStateChange of type " + stateChange.getType() + "."); } } finally { clusterServiceLock.unlock(); } }
public void changeClusterVersion(Version version, MemberMap memberMap) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(version), memberMap, partitionStateVersion, false); }
public ClusterState getClusterStateOrNull() { return isOfType(ClusterState.class) ? (ClusterState) newState : null; }
ClusterState requestedState = stateChange.getClusterStateOrNull(); NodeEngineImpl nodeEngine = node.getNodeEngine(); TransactionManagerServiceImpl txManagerService
public void commitClusterState(ClusterStateChange stateChange, Address initiator, String txnId, boolean isTransient) { Preconditions.checkNotNull(stateChange); stateChange.validate(); clusterServiceLock.lock(); try { final LockGuard stateLock = getStateLock(); if (!stateLock.allowsUnlock(txnId)) { throw new TransactionException( "Cluster state change [" + state + " -> " + stateChange + "] failed for " + initiator + ", current state: " + stateToString()); } if (stateChange.isOfType(ClusterState.class)) { ClusterState newState = (ClusterState) stateChange.getNewState(); doSetClusterState(newState, isTransient); // if state is changed to allow joins, then remove all members which left while not active. if (newState.isJoinAllowed()) { node.getClusterService().getMembershipManager().removeAllMissingMembers(); } } else if (stateChange.isOfType(Version.class)) { // version is validated on cluster-state-lock, thus we can commit without checking compatibility Version newVersion = (Version) stateChange.getNewState(); logger.info("Cluster version set to " + newVersion); doSetClusterVersion(newVersion); } else { throw new IllegalArgumentException("Illegal ClusterStateChange of type " + stateChange.getType() + "."); } } finally { clusterServiceLock.unlock(); } }
private void changeClusterState(ClusterState newState, TransactionOptions options, boolean isTransient) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(newState), membershipManager.getMemberMap(), options, partitionStateVersion, isTransient); }
public ClusterState getClusterStateOrNull() { return isOfType(ClusterState.class) ? (ClusterState) newState : null; }
ClusterState requestedState = stateChange.getClusterStateOrNull(); NodeEngineImpl nodeEngine = node.getNodeEngine(); TransactionManagerServiceImpl txManagerService
private boolean isCurrentStateEqualToRequestedOne(ClusterStateChange change) { if (change.isOfType(ClusterState.class)) { return getState() == change.getNewState(); } else if (change.isOfType(Version.class)) { return clusterVersion != null && clusterVersion.equals(change.getNewState()); } return false; }
@Override public void changeClusterVersion(Version version, TransactionOptions options) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(version), membershipManager.getMemberMap(), options, partitionStateVersion, false); }
@Override public void beforeRun() throws Exception { if (stateChange == null) { throw new IllegalArgumentException("Invalid null cluster state"); } stateChange.validate(); }
public void validate() { if (type == null || newState == null) { throw new IllegalArgumentException("Invalid null state"); } if (isOfType(Version.class)) { if (((Version) newState).isUnknown()) { throw new IllegalArgumentException("Cannot change Version to UNKNOWN!"); } } if (isOfType(ClusterState.class)) { if (newState == ClusterState.IN_TRANSITION) { throw new IllegalArgumentException("IN_TRANSITION is an internal state!"); } } }
public IdentifiedDataSerializable createNew(Integer arg) { return new ClusterStateChange(); } };
if (stateChange.isOfType(Version.class)) { validateNodeCompatibleWith((Version) stateChange.getNewState()); validateClusterVersionChange((Version) stateChange.getNewState());
private void changeClusterState(ClusterState newState, boolean isTransient) { int partitionStateVersion = node.getPartitionService().getPartitionStateVersion(); clusterStateManager.changeClusterState(ClusterStateChange.from(newState), membershipManager.getMemberMap(), partitionStateVersion, isTransient); }
@Override public void beforeRun() throws Exception { if (stateChange == null) { throw new IllegalArgumentException("Invalid null cluster state"); } stateChange.validate(); }
public void validate() { if (type == null || newState == null) { throw new IllegalArgumentException("Invalid null state"); } if (isOfType(Version.class)) { if (((Version) newState).isUnknown()) { throw new IllegalArgumentException("Cannot change Version to UNKNOWN!"); } } if (isOfType(ClusterState.class)) { if (newState == ClusterState.IN_TRANSITION) { throw new IllegalArgumentException("IN_TRANSITION is an internal state!"); } } }