DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Observer controllers are controllers who are either not part of the static voter set in kraft.version=0, or controllers who are not part of the bootstrap voter set defined by -format with --no-initial-controllers or --standalone in kraft.version=1 (i.e. controllers who format today with --no-initial-controllers). Non-observer/"bootstrap controllers" are therefore either part of the static voter set in kraft.version=0, or controllers who format with --initial-controllers or --standalone in a dynamic quorum setup. This distinction is important because observer controllers are not responsible for the initial KRaft leader election, but bootstrap controllers are.
We can still enforce that bootstrap controllers must have formatted (and therefore persisted a cluster id to meta.properties) prior to starting kafka. The validation of meta.properties during startup described above can still be done whenever the node is a bootstrap controller (i.e. part of the static voters config, or if a 0-0.checkpoint exists). Just like with a VotersRecord). kafka today, a consequence of this requirement is that when KRaft elects the initial leader, it is guaranteed to have a non-null cluster id.
We still need to do this validation mainly for kraft.version=0 clusters with newer software versions but an older MV (kraft.version=1 clusters require proper formatting of at least one node of a majority of bootstrap controllers to elect a leader). Otherwise, these static quorum clusters will have no way to persist a cluster id to meta.properties if the operator skips formatting on all nodes (which would be possible without this requirement). A consequence of this requirement is that when KRaft elects a leader, it is guaranteed to have a non-null cluster id.
Proposed Changes
Remove the requirement of brokers and observer controllers to format before starting kafka
...