Interface ClusterConfigurationInitializer

All Known Implementing Classes:
ClusterConfigurationInitializer.FileInitializer, ClusterConfigurationInitializer.GossipInitializer, ClusterConfigurationInitializer.StaticInitializer, ClusterConfigurationInitializer.SyncInitializer

public interface ClusterConfigurationInitializer
Initializes configuration using different strategies.

Initialization Process

Each member is configured with a static configuration with initial set of cluster members and partition distribution.

Both coordinator and other members first check the local persisted configuration to determine the configuration. If one exists, that is used to initialize the configuration. See ClusterConfigurationInitializer.FileInitializer. On bootstrap of the cluster, the local persisted configuration is empty.

  • When the local configuration is empty, the coordinator queries cluster members in the static configuration for the current configuration. See ClusterConfigurationInitializer.SyncInitializer. If any member replies with a valid configuration, coordinator uses that one. If any member replies with an uninitialized configuration, coordinator generates a new configuration from the provided static configuration. See ClusterConfigurationInitializer.StaticInitializer.
  • When the local configuration is empty, a non-coordinating member waits until it receives a valid configuration from the coordinator via gossip. See ClusterConfigurationInitializer.GossipInitializer.
  • After initialization, the configuration can be modified using ClusterConfigurationModifier. For example, ExporterStateInitializer overwrites the local member's state to keep it in sync with the statically configured exporters.