On Fri, Oct 15, 2021 at 7:24 AM David Arthur <mum...@gmail.com> wrote:
> Hmm. So I think you are proposing the following flow:
> > 1. Cluster metadata partition replicas establish a quorum using
> > ApiVersions and the KRaft protocol.
> > 2. Inactive controllers send a registration RPC to the active controller.
> > 3. The active controller persists this information to the metadata log.
>
>
> What happens if the inactive controllers send a metadata.version range
> > that is not compatible with the metadata.version set for the cluster?
>
>
> As we discussed offline, we don't need the explicit registration step. Once
> a controller has joined the quorum, it will learn about the finalized
> "metadata.version" level once it reads that record.

How does the active controller know what is a valid `metadata.version`
to persist? Could the active controller learn this from the
ApiVersions response from all of the inactive controllers? For
example, let's say that we have a cluster that only has remote
controllers, what are the valid metadata.version in that case?

> If it encounters a
> version it can't support it should probably shutdown since it might not be
> able to process any more records.

I think that makes sense. If a controller cannot replay the metadata
log, it might as well not be part of the quorum. If the cluster
continues in this state it won't guarantee availability based on the
replication factor.

Thanks
-- 
-Jose

Reply via email to