Skip to content

Reject or flag duplicate store peer addresses during store registration #11002

Description

@kennedy8312

Bug Report

Problem

PD currently enforces uniqueness for a store's main address, but a new store can be accepted with a unique main address and a peer_address already used by another store.

This was reproduced with TiFlash stores. PD recorded both stores as Up:

store 1260: address=<tiflash-0>:3930 peer_address=<tiflash-0>:20170
store 1347: address=<new-pod>:3930 peer_address=<tiflash-0>:20170

The second store passed registration because its main store address was unique.

Impact

Raft routing prefers peer_address. Messages for store 1347 were therefore sent to store 1260. The receiving store correctly rejected them with:

StoreNotMatch { to_store_id: 1347, my_store_id: 1260 }

The learner could not receive/apply snapshots, the placement operator remained stuck, the TiFlash replica stayed unavailable, and forced TiFlash queries reported No access path.

Expected behavior / possible improvement

PD should prevent two live stores from publishing the same non-empty peer_address, or at minimum surface a strong diagnostic and keep the conflicting store out of scheduling.

Please also consider compatibility and stale-store semantics so that a legitimate replacement is not permanently blocked by metadata from an offline store.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions