mirror of
https://github.com/qdrant/qdrant.git
synced 2026-08-06 10:00:58 -05:00
* [ai] Allow peer to bootstrap with existing URI if peer has no shards Prompt: I have a Qdrant cluster in distributed mode with some nodes registered in consensus. If I bootstrap a new node with an URL that is already used it is rejected and an error is returned. I would like to change this behavior and allow this to happen. This would effectively replace a peer because internally we'd drop the existing peer first, and then we'd add the new peer so we can reuse the same peer URL. We must still reject bootstrapping with the same URL if the peer that used the URL before us still has any shards on it. * [ai] Add test to assert new behavior, can rejoin if empty Prompt: Add two tests to assert the new behavior. The first test should: - create a cluster - create a collection - bootstrap a new peer - kill and delete the local data for this peer without removing it from consensus - bootstrap a new peer but reuse the URI of the peer we just killed to rejoin - bootstrapping is expected to succeed The second test should: - create a cluster - create a collection - bootstrap a new peer but reuse the URI of the last node - bootstrapping is expected to fail because the node being replaced has data on it * [ai] Attempt to fix new tests * Reformat * [ai] Fix deadlock when rejoining with same peer URI * [ai] Add test to ensure existing peer stops consensus on replace