Class CPSubsystemConfig

java.lang.Object
com.hazelcast.config.cp.CPSubsystemConfig

public class CPSubsystemConfig extends Object
Contains configuration options for CP Subsystem.

You can check the following code snippet to see how CP Subsystem can be initialized by configuring only the setCPMemberCount(int) value. In this code, we set 3 to setCPMemberCount(int), and we don't set any value to setGroupSize(int). Therefore, there will be 3 CP members in CP Subsystem and each CP groups will have 3 CP members as well.

     int cpMemberCount = 3;
     int apMemberCount = 2;
     int memberCount = cpMemberCount + apMemberCount;
     Config config = new Config();
     config.getCPSubsystemConfig().setCPMemberCount(cpMemberCount);
     HazelcastInstance[] instances = new HazelcastInstance[memberCount];
     for (int i = 0; i < memberCount; i++) {
         instances[i] = Hazelcast.newHazelcastInstance(config);
     }

     // update an atomic long via a CP member
     IAtomicLong cpLong = instances[0].getCPSubsystem().getAtomicLong("myLong");
     cpLong.set(10);

     // access to its value via an AP member
     cpLong = instances[cpMemberCount].getCPSubsystem().getAtomicLong("myLong");
     System.out.println(cpLong.get());
 

In the following code snippet, we configure setCPMemberCount(int) to 5 and setGroupSize(int) to 3, therefore there will be 5 CP members and CP groups will be initialized by selecting 3 random CP members among them.

     int cpMemberCount = 5;
     int apMemberCount = 2;
     int groupSize = 3;
     int memberCount = cpMemberCount + apMemberCount;
     Config config = new Config();
     config.getCPSubsystemConfig()
           .setCPMemberCount(cpMemberCount)
           .setGroupSize(groupSize);
     HazelcastInstance[] instances = new HazelcastInstance[memberCount];
     for (int i = 0; i < memberCount; i++) {
         instances[i] = Hazelcast.newHazelcastInstance(config);
     }

     // update an atomic long via a CP member
     IAtomicLong cpLong = instances[0].getCPSubsystem().getAtomicLong("myLong");
     cpLong.set(10);

     // access to its value via an AP member
     cpLong = instances[cpMemberCount].getCPSubsystem().getAtomicLong("myLong");
     System.out.println(cpLong.get());
 
See Also:
  • Field Details

    • DEFAULT_SESSION_TTL_SECONDS

      public static final int DEFAULT_SESSION_TTL_SECONDS
      The default value for a CP session to be kept alive after the last heartbeat it has received. See sessionTimeToLiveSeconds
    • DEFAULT_HEARTBEAT_INTERVAL_SECONDS

      public static final int DEFAULT_HEARTBEAT_INTERVAL_SECONDS
      The default duration for the periodically-committed CP session heartbeats. See sessionHeartbeatIntervalSeconds
      See Also:
    • MIN_GROUP_SIZE

      public static final int MIN_GROUP_SIZE
      The minimum number of CP members that can form a CP group. See groupSize
      See Also:
    • MAX_GROUP_SIZE

      public static final int MAX_GROUP_SIZE
      The maximum number of CP members that can form a CP group. Theoretically, there is no upper bound on the number of CP members to run the Raft consensus algorithm. However, since the Raft consensus algorithm synchronously replicates operations to the majority of a CP group members, a larger CP group means more replication overhead, and memory consumption as well. The current maximum CP group size limit offers a sufficient degree of fault tolerance for CP Subsystem usages.

      See groupSize

      See Also:
    • DEFAULT_MISSING_CP_MEMBER_AUTO_REMOVAL_SECONDS

      public static final int DEFAULT_MISSING_CP_MEMBER_AUTO_REMOVAL_SECONDS
      The default duration to wait before automatically removing a missing CP member from CP Subsystem. See missingCPMemberAutoRemovalSeconds
    • CP_BASE_DIR_DEFAULT

      public static final String CP_BASE_DIR_DEFAULT
      The default directory name for storing CP data. See baseDir
      See Also:
    • DEFAULT_DATA_LOAD_TIMEOUT_SECONDS

      public static final int DEFAULT_DATA_LOAD_TIMEOUT_SECONDS
      The default data load timeout duration for restoring CP data from disk. See dataLoadTimeoutSeconds
      See Also:
    • DEFAULT_CP_MAP_LIMIT

      public static final int DEFAULT_CP_MAP_LIMIT
      The default limit number of CPMap that can be created.
      See Also:
  • Constructor Details

    • CPSubsystemConfig

      public CPSubsystemConfig()
    • CPSubsystemConfig

      public CPSubsystemConfig(CPSubsystemConfig config)
  • Method Details

    • getCPMemberCount

      public int getCPMemberCount()
      Returns the number of CP members that will initialize CP Subsystem. CP Subsystem is disabled if it is 0.
      Returns:
      the number of CP members that will initialize CP Subsystem
    • setCPMemberCount

      public CPSubsystemConfig setCPMemberCount(int cpMemberCount)
      Sets the CP member count to initialize CP Subsystem. CP Subsystem is disabled if 0. Cannot be smaller than MIN_GROUP_SIZE and groupSize
      Returns:
      this config instance
    • getGroupSize

      public int getGroupSize()
      Returns the number of CP members to form CP groups. Returns 0 if cpMemberCount is 0. If group size is not set: - returns the CP member count if it is an odd number, - returns the CP member count - 1 if it is an even number.
      Returns:
      the number of CP members to form CP groups
    • setGroupSize

      public CPSubsystemConfig setGroupSize(int groupSize)
      Sets the number of CP members to form CP groups. Must be an odd number between MIN_GROUP_SIZE and MAX_GROUP_SIZE.
      Returns:
      this config instance
    • getSessionTimeToLiveSeconds

      public int getSessionTimeToLiveSeconds()
      Returns the duration for a CP session to be kept alive after its last session heartbeat.
      Returns:
      the duration for a CP session to be kept alive after its last session heartbeat
    • setSessionTimeToLiveSeconds

      public CPSubsystemConfig setSessionTimeToLiveSeconds(int sessionTimeToLiveSeconds)
      Sets the duration for a CP session to be kept alive after its last session heartbeat.
      Returns:
      this config instance
    • getSessionHeartbeatIntervalSeconds

      public int getSessionHeartbeatIntervalSeconds()
      Returns the interval for the periodically-committed CP session heartbeats.
      Returns:
      the interval for the periodically-committed CP session heartbeats
    • setSessionHeartbeatIntervalSeconds

      public CPSubsystemConfig setSessionHeartbeatIntervalSeconds(int sessionHeartbeatIntervalSeconds)
      Sets the interval for the periodically-committed CP session heartbeats.
      Returns:
      this config instance
    • getMissingCPMemberAutoRemovalSeconds

      public int getMissingCPMemberAutoRemovalSeconds()
      Returns the duration to wait before automatically removing a missing CP member from CP Subsystem
      Returns:
      the duration to wait before automatically removing a missing CP member from the CP Subsystem
    • setMissingCPMemberAutoRemovalSeconds

      public CPSubsystemConfig setMissingCPMemberAutoRemovalSeconds(int missingCPMemberAutoRemovalSeconds)
      Sets the duration to wait before automatically removing a missing CP member from CP Subsystem.
      Returns:
      this config instance
    • isFailOnIndeterminateOperationState

      public boolean isFailOnIndeterminateOperationState()
      Returns the value to determine if CP Subsystem API calls will fail when result of an API call becomes indeterminate.
      Returns:
      the value to determine if CP Subsystem calls will fail when result of an API call becomes indeterminate
    • setFailOnIndeterminateOperationState

      public CPSubsystemConfig setFailOnIndeterminateOperationState(boolean failOnIndeterminateOperationState)
      Sets the value to determine if CP Subsystem calls will fail when result of an API call becomes indeterminate.
      Returns:
      this config instance
    • isPersistenceEnabled

      public boolean isPersistenceEnabled()
      Returns whether CP Subsystem Persistence enabled on this member.
      Returns:
      true if CP Subsystem Persistence is enabled, false otherwise
    • setPersistenceEnabled

      public CPSubsystemConfig setPersistenceEnabled(boolean persistenceEnabled)
      Sets whether CP Subsystem Persistence is enabled on this member.
      Returns:
      this config instance
    • getBaseDir

      public File getBaseDir()
      Returns the base directory for persisting CP data. Can be an absolute or relative path to the node startup directory.
      Returns:
      returns the base directory for CP data
    • setBaseDir

      public CPSubsystemConfig setBaseDir(File baseDir)
      Sets the base directory for persisting CP data. Can be an absolute or relative path to the node startup directory.
      Parameters:
      baseDir - base directory
      Returns:
      this config instance
    • getDataLoadTimeoutSeconds

      public int getDataLoadTimeoutSeconds()
      Returns the timeout duration for CP members to restore their data from stable storage. A CP member fails its startup if it cannot complete its CP data restore process before this timeout duration.
      Returns:
      the timeout duration for CP members to restore their data from stable storage
    • setDataLoadTimeoutSeconds

      public CPSubsystemConfig setDataLoadTimeoutSeconds(int dataLoadTimeoutSeconds)
      Sets the timeout duration for CP members to restore their data from stable storage. A CP member fails its startup if it cannot complete its CP data restore process before this timeout duration.
      Parameters:
      dataLoadTimeoutSeconds - the timeout duration for CP members to restore their data from stable storage
      Returns:
      this config instance
    • setCPMemberPriority

      public CPSubsystemConfig setCPMemberPriority(int cpMemberPriority)
      Sets the CP member priority. CP groups' leadership will be transferred to members with higher priorities within the CP group.
      Parameters:
      cpMemberPriority - can be any integer number
      Returns:
      this config instance
    • getCPMemberPriority

      public int getCPMemberPriority()
      Returns the CP member priority.
      Returns:
      the CP member priority
    • getRaftAlgorithmConfig

      public RaftAlgorithmConfig getRaftAlgorithmConfig()
      Returns configuration options for Hazelcast's Raft consensus algorithm implementation
      Returns:
      configuration options for Hazelcast's Raft consensus algorithm implementation
    • setRaftAlgorithmConfig

      public CPSubsystemConfig setRaftAlgorithmConfig(RaftAlgorithmConfig raftAlgorithmConfig)
      Sets configuration options for Hazelcast's Raft consensus algorithm implementation
      Returns:
      this config instance
    • getSemaphoreConfigs

      public Map<String,SemaphoreConfig> getSemaphoreConfigs()
      Returns the map of CP ISemaphore configurations
      Returns:
      the map of CP ISemaphore configurations
    • findSemaphoreConfig

      public SemaphoreConfig findSemaphoreConfig(String name)
      Returns the CP ISemaphore configuration for the given name.

      The name is matched by stripping the CPGroup name from the given name if present. Returns null if there is no config found by the given name

      Parameters:
      name - name of the CP ISemaphore
      Returns:
      the CP ISemaphore configuration
    • addSemaphoreConfig

      public CPSubsystemConfig addSemaphoreConfig(SemaphoreConfig semaphoreConfig)
      Adds the CP ISemaphore configuration. Name of the CP ISemaphore could optionally contain a CPGroup name, like "mySemaphore@group1".
      Parameters:
      semaphoreConfig - the CP ISemaphore configuration
      Returns:
      this config instance
    • setSemaphoreConfigs

      public CPSubsystemConfig setSemaphoreConfigs(Map<String,SemaphoreConfig> semaphoreConfigs)
      Sets the map of CP ISemaphore configurations, mapped by config name. Names could optionally contain a CPGroup name, such as "mySemaphore@group1".
      Parameters:
      semaphoreConfigs - the CP ISemaphore config map to set
      Returns:
      this config instance
    • getLockConfigs

      public Map<String,FencedLockConfig> getLockConfigs()
      Returns the map of FencedLock configurations
      Returns:
      the map of FencedLock configurations
    • findLockConfig

      public FencedLockConfig findLockConfig(String name)
      Returns the FencedLock configuration for the given name.

      The name is matched by stripping the CPGroup name from the given name if present. Returns null if there is no config found by the given name

      Parameters:
      name - name of the FencedLock
      Returns:
      the FencedLock configuration
    • addLockConfig

      public CPSubsystemConfig addLockConfig(FencedLockConfig lockConfig)
      Adds the FencedLock configuration. Name of the FencedLock could optionally contain a CPGroup name, like "myLock@group1".
      Parameters:
      lockConfig - the FencedLock configuration
      Returns:
      this config instance
    • setLockConfigs

      public CPSubsystemConfig setLockConfigs(Map<String,FencedLockConfig> lockConfigs)
      Sets the map of FencedLock configurations, mapped by config name. Names could optionally contain a CPGroup name, such as "myLock@group1".
      Parameters:
      lockConfigs - the FencedLock config map to set
      Returns:
      this config instance
    • setCpMapConfigs

      @PrivateApi public CPSubsystemConfig setCpMapConfigs(Map<String,CPMapConfig> cpMapConfigs)
    • getCpMapConfigs

      public Map<String,CPMapConfig> getCpMapConfigs()
      Returns the map of CPMap configurations
      Returns:
      the map of CPMapConfig configurations
      Since:
      5.4
    • findCPMapConfig

      public CPMapConfig findCPMapConfig(String name)
      Returns the CPMapConfig configuration for the given name.

      The name is matched by stripping the CPGroup name from the given name if present. Returns null if there is no config found by the given name

      Parameters:
      name - name of the CPMapConfig
      Returns:
      the CPMapConfig configuration
      Since:
      5.4
    • addCPMapConfig

      public CPSubsystemConfig addCPMapConfig(CPMapConfig cpMapConfig)
      Adds the CPMapConfig configuration. Name of the CPMapConfig could optionally contain a CPGroup name, like "myMap@group1".
      Parameters:
      cpMapConfig - the CPMapConfig configuration
      Returns:
      this config instance
      Since:
      5.4
    • setCPMapConfigs

      public CPSubsystemConfig setCPMapConfigs(Map<String,CPMapConfig> cpMapConfigs)
      Sets the map of CPMapConfig configurations, mapped by config name. Names could optionally contain a CPGroup name, such as "myLock@group1".
      Parameters:
      cpMapConfigs - the CPMapConfig config map to set
      Returns:
      this config instance
      Since:
      5.4
    • setCPMapLimit

      public CPSubsystemConfig setCPMapLimit(int cpMapLimit)
      Sets the limit of permitted CPMap instances.

      This is a soft limit and is used exclusively by Hazelcast Management Center.

      Parameters:
      cpMapLimit - limit of CPMap instances
      Throws:
      IllegalArgumentException - if cpMapLimit < 0
    • getCPMapLimit

      public int getCPMapLimit()
      Gets the limit of CPMap instances that are permitted to be created.
    • setMapLimit

      @PrivateApi public CPSubsystemConfig setMapLimit(int cpMapLimit)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object