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

Reply via email to