Search in sources :

Example 1 with BeforeJoinCheckFailureOperation

use of com.hazelcast.internal.cluster.impl.operations.BeforeJoinCheckFailureOperation in project hazelcast by hazelcast.

the class ClusterDataSerializerHook method createFactory.

@Override
public DataSerializableFactory createFactory() {
    ConstructorFunction<Integer, IdentifiedDataSerializable>[] constructors = new ConstructorFunction[LEN];
    constructors[AUTH_FAILURE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new AuthenticationFailureOperation();
        }
    };
    constructors[ADDRESS] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new Address();
        }
    };
    constructors[MEMBER] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MemberImpl();
        }
    };
    constructors[HEARTBEAT] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new HeartbeatOperation();
        }
    };
    constructors[CONFIG_CHECK] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new ConfigCheck();
        }
    };
    constructors[BIND_MESSAGE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new BindMessage();
        }
    };
    constructors[MEMBER_INFO_UPDATE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MemberInfoUpdateOperation();
        }
    };
    constructors[FINALIZE_JOIN] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new FinalizeJoinOperation();
        }
    };
    constructors[AUTHORIZATION] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new AuthorizationOperation();
        }
    };
    constructors[BEFORE_JOIN_CHECK_FAILURE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new BeforeJoinCheckFailureOperation();
        }
    };
    constructors[CHANGE_CLUSTER_STATE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new ChangeClusterStateOperation();
        }
    };
    constructors[CONFIG_MISMATCH] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new ConfigMismatchOperation();
        }
    };
    constructors[GROUP_MISMATCH] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new GroupMismatchOperation();
        }
    };
    constructors[SPLIT_BRAIN_MERGE_VALIDATION] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new SplitBrainMergeValidationOperation();
        }
    };
    constructors[JOIN_REQUEST_OP] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new JoinRequestOperation();
        }
    };
    constructors[LOCK_CLUSTER_STATE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new LockClusterStateOperation();
        }
    };
    constructors[MASTER_CLAIM] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MasterClaimOperation();
        }
    };
    constructors[MASTER_CONFIRM] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MasterConfirmationOperation();
        }
    };
    constructors[MASTER_DISCOVERY] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MasterDiscoveryOperation();
        }
    };
    constructors[MEMBER_ATTR_CHANGED] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MemberAttributeChangedOperation();
        }
    };
    constructors[MEMBER_REMOVE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MemberRemoveOperation();
        }
    };
    constructors[MERGE_CLUSTERS] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MergeClustersOperation();
        }
    };
    constructors[POST_JOIN] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new PostJoinOperation();
        }
    };
    constructors[ROLLBACK_CLUSTER_STATE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new RollbackClusterStateOperation();
        }
    };
    constructors[SET_MASTER] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new SetMasterOperation();
        }
    };
    constructors[SHUTDOWN_NODE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new ShutdownNodeOperation();
        }
    };
    constructors[TRIGGER_MEMBER_LIST_PUBLISH] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new TriggerMemberListPublishOperation();
        }
    };
    constructors[CLUSTER_STATE_TRANSACTION_LOG_RECORD] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new ClusterStateTransactionLogRecord();
        }
    };
    constructors[MEMBER_INFO] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MemberInfo();
        }
    };
    constructors[JOIN_MESSAGE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new JoinMessage();
        }
    };
    constructors[JOIN_REQUEST] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new JoinRequest();
        }
    };
    constructors[MIGRATION_INFO] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MigrationInfo();
        }
    };
    constructors[MEMBER_VERSION] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new MemberVersion();
        }
    };
    constructors[CLUSTER_STATE_CHANGE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new ClusterStateChange();
        }
    };
    constructors[SPLIT_BRAIN_JOIN_MESSAGE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new SplitBrainJoinMessage();
        }
    };
    constructors[VERSION] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {

        public IdentifiedDataSerializable createNew(Integer arg) {
            return new Version();
        }
    };
    return new ArrayDataSerializableFactory(constructors);
}
Also used : MemberAttributeChangedOperation(com.hazelcast.internal.cluster.impl.operations.MemberAttributeChangedOperation) MigrationInfo(com.hazelcast.internal.partition.MigrationInfo) Address(com.hazelcast.nio.Address) MergeClustersOperation(com.hazelcast.internal.cluster.impl.operations.MergeClustersOperation) PostJoinOperation(com.hazelcast.internal.cluster.impl.operations.PostJoinOperation) SetMasterOperation(com.hazelcast.internal.cluster.impl.operations.SetMasterOperation) MemberVersion(com.hazelcast.version.MemberVersion) TriggerMemberListPublishOperation(com.hazelcast.internal.cluster.impl.operations.TriggerMemberListPublishOperation) MasterDiscoveryOperation(com.hazelcast.internal.cluster.impl.operations.MasterDiscoveryOperation) ConfigMismatchOperation(com.hazelcast.internal.cluster.impl.operations.ConfigMismatchOperation) MemberInfo(com.hazelcast.internal.cluster.MemberInfo) SplitBrainMergeValidationOperation(com.hazelcast.internal.cluster.impl.operations.SplitBrainMergeValidationOperation) Version(com.hazelcast.version.Version) MemberVersion(com.hazelcast.version.MemberVersion) BeforeJoinCheckFailureOperation(com.hazelcast.internal.cluster.impl.operations.BeforeJoinCheckFailureOperation) ChangeClusterStateOperation(com.hazelcast.internal.cluster.impl.operations.ChangeClusterStateOperation) IdentifiedDataSerializable(com.hazelcast.nio.serialization.IdentifiedDataSerializable) LockClusterStateOperation(com.hazelcast.internal.cluster.impl.operations.LockClusterStateOperation) MemberImpl(com.hazelcast.instance.MemberImpl) MemberRemoveOperation(com.hazelcast.internal.cluster.impl.operations.MemberRemoveOperation) HeartbeatOperation(com.hazelcast.internal.cluster.impl.operations.HeartbeatOperation) MasterClaimOperation(com.hazelcast.internal.cluster.impl.operations.MasterClaimOperation) ShutdownNodeOperation(com.hazelcast.internal.cluster.impl.operations.ShutdownNodeOperation) ConstructorFunction(com.hazelcast.util.ConstructorFunction) MemberInfoUpdateOperation(com.hazelcast.internal.cluster.impl.operations.MemberInfoUpdateOperation) GroupMismatchOperation(com.hazelcast.internal.cluster.impl.operations.GroupMismatchOperation) FinalizeJoinOperation(com.hazelcast.internal.cluster.impl.operations.FinalizeJoinOperation) AuthorizationOperation(com.hazelcast.internal.cluster.impl.operations.AuthorizationOperation) MasterConfirmationOperation(com.hazelcast.internal.cluster.impl.operations.MasterConfirmationOperation) AuthenticationFailureOperation(com.hazelcast.internal.cluster.impl.operations.AuthenticationFailureOperation) JoinRequestOperation(com.hazelcast.internal.cluster.impl.operations.JoinRequestOperation) ArrayDataSerializableFactory(com.hazelcast.internal.serialization.impl.ArrayDataSerializableFactory) RollbackClusterStateOperation(com.hazelcast.internal.cluster.impl.operations.RollbackClusterStateOperation)

Example 2 with BeforeJoinCheckFailureOperation

use of com.hazelcast.internal.cluster.impl.operations.BeforeJoinCheckFailureOperation in project hazelcast by hazelcast.

the class ClusterJoinManager method checkClusterStateBeforeJoin.

private boolean checkClusterStateBeforeJoin(Address target, String uuid) {
    ClusterState state = clusterStateManager.getState();
    if (state == ClusterState.IN_TRANSITION) {
        logger.warning("Cluster state is in transition process. Join is not allowed until " + "transaction is completed -> " + clusterStateManager.stateToString());
        return true;
    }
    if (state == ClusterState.ACTIVE) {
        return false;
    }
    if (clusterService.isMemberRemovedWhileClusterIsNotActive(target)) {
        MemberImpl memberRemovedWhileClusterIsNotActive = clusterService.getMemberRemovedWhileClusterIsNotActive(uuid);
        if (memberRemovedWhileClusterIsNotActive != null && !target.equals(memberRemovedWhileClusterIsNotActive.getAddress())) {
            logger.warning("Uuid " + uuid + " was being used by " + memberRemovedWhileClusterIsNotActive + " before. " + target + " is not allowed to join with a uuid which belongs to" + " a known passive member.");
            return true;
        }
        return false;
    }
    if (clusterService.isMemberRemovedWhileClusterIsNotActive(uuid)) {
        return false;
    }
    if (node.getNodeExtension().isStartCompleted()) {
        String message = "Cluster state either is locked or doesn't allow new members to join -> " + clusterStateManager.stateToString();
        logger.warning(message);
        OperationService operationService = nodeEngine.getOperationService();
        BeforeJoinCheckFailureOperation op = new BeforeJoinCheckFailureOperation(message);
        operationService.send(op, target);
    } else {
        String message = "Cluster state either is locked or doesn't allow new members to join -> " + clusterStateManager.stateToString() + ". Silently ignored join request of " + target + " because start not completed.";
        logger.warning(message);
    }
    return true;
}
Also used : ClusterState(com.hazelcast.cluster.ClusterState) MemberImpl(com.hazelcast.instance.MemberImpl) OperationService(com.hazelcast.spi.OperationService) BeforeJoinCheckFailureOperation(com.hazelcast.internal.cluster.impl.operations.BeforeJoinCheckFailureOperation)

Example 3 with BeforeJoinCheckFailureOperation

use of com.hazelcast.internal.cluster.impl.operations.BeforeJoinCheckFailureOperation in project hazelcast by hazelcast.

the class ClusterJoinManager method checkIfUsingAnExistingMemberUuid.

private boolean checkIfUsingAnExistingMemberUuid(JoinMessage joinMessage) {
    Member member = clusterService.getMember(joinMessage.getUuid());
    Address target = joinMessage.getAddress();
    if (member != null && !member.getAddress().equals(joinMessage.getAddress())) {
        if (node.isMaster()) {
            String message = "There's already an existing member " + member + " with the same UUID. " + target + " is not allowed to join.";
            logger.warning(message);
            OperationService operationService = nodeEngine.getOperationService();
            operationService.send(new BeforeJoinCheckFailureOperation(message), target);
        } else {
            sendMasterAnswer(target);
        }
        return true;
    }
    return false;
}
Also used : Address(com.hazelcast.nio.Address) OperationService(com.hazelcast.spi.OperationService) BeforeJoinCheckFailureOperation(com.hazelcast.internal.cluster.impl.operations.BeforeJoinCheckFailureOperation) Member(com.hazelcast.core.Member)

Aggregations

BeforeJoinCheckFailureOperation (com.hazelcast.internal.cluster.impl.operations.BeforeJoinCheckFailureOperation)3 MemberImpl (com.hazelcast.instance.MemberImpl)2 Address (com.hazelcast.nio.Address)2 OperationService (com.hazelcast.spi.OperationService)2 ClusterState (com.hazelcast.cluster.ClusterState)1 Member (com.hazelcast.core.Member)1 MemberInfo (com.hazelcast.internal.cluster.MemberInfo)1 AuthenticationFailureOperation (com.hazelcast.internal.cluster.impl.operations.AuthenticationFailureOperation)1 AuthorizationOperation (com.hazelcast.internal.cluster.impl.operations.AuthorizationOperation)1 ChangeClusterStateOperation (com.hazelcast.internal.cluster.impl.operations.ChangeClusterStateOperation)1 ConfigMismatchOperation (com.hazelcast.internal.cluster.impl.operations.ConfigMismatchOperation)1 FinalizeJoinOperation (com.hazelcast.internal.cluster.impl.operations.FinalizeJoinOperation)1 GroupMismatchOperation (com.hazelcast.internal.cluster.impl.operations.GroupMismatchOperation)1 HeartbeatOperation (com.hazelcast.internal.cluster.impl.operations.HeartbeatOperation)1 JoinRequestOperation (com.hazelcast.internal.cluster.impl.operations.JoinRequestOperation)1 LockClusterStateOperation (com.hazelcast.internal.cluster.impl.operations.LockClusterStateOperation)1 MasterClaimOperation (com.hazelcast.internal.cluster.impl.operations.MasterClaimOperation)1 MasterConfirmationOperation (com.hazelcast.internal.cluster.impl.operations.MasterConfirmationOperation)1 MasterDiscoveryOperation (com.hazelcast.internal.cluster.impl.operations.MasterDiscoveryOperation)1 MemberAttributeChangedOperation (com.hazelcast.internal.cluster.impl.operations.MemberAttributeChangedOperation)1