Hi Ron,

Thanks for drilling down on this. I think the KIP isn't really clear here,
and the metadata caching section you quoted needs clarification.

The "hosting broker's latest registration" refers to the previous,
not the current registration. The registrations are only compared by
the controller, when handling the broker registration request.

Suppose broker b1 hosts two partitions, t-1 and t-2, in two
directories, d1 and d2. The broker is registered, and the
metadata correlates the replicas to their respective directories.
i.e. OnlineLogDirs=[d1,d2] and OfflineLogDirs=false

The broker is then reconfigured to remove t-2 from log.dirs, and at startup,
the registration request shows OnlineLogDirs=[d1] and OfflineLogDirs=false.
The previous registration will only be replaced after a new successful
registration, regardless of how quickly or how often b1 restarts.
The controller compares the previous registration, and notices
that one of the directories has been removed.
So for any replica hosted in the broker that is assigned to that
missing log directory, a logical metadata update takes place
that assigned them to Uuid.OfflineDir, so Assignment.Directory
is updated for t-2. This value is indicates that the replica
is offline — I have updated the section you quoted to address this.

Once the broker catches up with metadata, it will select the only
configured log directory — d1 — for any partitions assigned to
Uuid.OfflineDir, and update the assignment.

Best,

--
Igor



Reply via email to