So to expand a bit on what I wrote below: - If the goal is to make it possible to have adding the controller node happen in one place, and formatting the controller node happen in another, those two places still need to communicate. What they need to communicate is the new directory ID. This is basically a random UUID that must never be reused.
- The most obvious way to do that is to format the new controller node first, and then grab that ID. This is what the current system does, by reading that local file. - Another way to do it would be to generate the UUID somewhere else, and then format using --initial-controllers. This currently requires spelling out the full set of controllers and matching directory ids in the cluster. One thing that is a bit subtle is that the tool will actually look at what directory ID you gave, and use that directory ID when formatting your directory. This should be documented a bit more prominently if we want people to use this mechanism. best, Colin On Mon, Apr 28, 2025, at 13:21, Colin McCabe wrote: > Hi Kuan Po Tseng, > > It is not possible to add a new controller purely by ID. You need > controller ID, directory ID, and controller endpoints. > > These cannot be obtained through describeMetadataQuorum since that only > describes the existing quorum, not what you would like the new one to > be. Also, obviously, we never want to reuse an existing directory ID. > > Therefore I will vote -1 on this pending further discussion. > > best, > Colin > > On Tue, Apr 22, 2025, at 08:56, Kuan Po Tseng wrote: >> Hello everyone, >> >> I would like to start a vote on KIP-1141, thank you! >> >> KIP: https://cwiki.apache.org/confluence/x/PZFEF >> Discussion thread: >> https://lists.apache.org/thread/mq5n8j8w0ycg9fhd1m4zcc2ctrgfd0d4 >> >> Best, >> Kuan-Po Tseng