Class ClusterConfigurationManagerImpl

java.lang.Object
io.camunda.zeebe.dynamic.config.ClusterConfigurationManagerImpl
All Implemented Interfaces:
ClusterConfigurationManager

public final class ClusterConfigurationManagerImpl extends Object implements ClusterConfigurationManager
ClusterConfigurationManager is responsible for initializing ClusterConfiguration and managing ClusterConfiguration changes.

On startup, ClusterConfigurationManager initializes the configuration using ClusterConfigurationInitializers. The initialized configuration is gossiped to other members.

When a configuration is received via gossip, it is merged with the local configuration. The merge operation ensures that any concurrent update to the configuration is not lost.

Making configuration changes

Only a coordinator can start a configuration change. The steps to make a configuration change are added to the ClusterConfiguration. To make a configuration change, the coordinator update the configuration with a list of operations that needs to be executed to achieve the target configuration and gossip the updated configuration. These operations are expected to be executed in the order given.

When a member receives a configuration with pending changes, it applies the change if it is applicable to the member. Only a member can make changes to its own state in the configuration. See ConfigurationChangeAppliers to see how a change is applied locally.