percona / percona/orchestrator
Tag deletion not propagated to all Raft peers, causing data inconsistency
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 263
- Forks
- 77
- PR merge metrics
- No merged PRs in 30d
Description
Description:
When deleting a tag in a Raft-enabled Orchestrator cluster, the deletion is not propagated to all Raft peers.
However, when adding a tag, the change is propagated correctly across peers.
This leads to data inconsistency in tags between Orchestrator nodes.
Details:
- Adding a tag: Works correctly because the data is published to all Raft peers via a PublishCommand call.
Relevant code:
https://github.com/percona/orchestrator/blob/bd65e056a73002bcfeae403ac5f3768571877311/go/http/api.go#L1975
- Removing a tag: Does not publish the change to Raft peers.
Relevant code:
https://github.com/percona/orchestrator/blob/bd65e056a73002bcfeae403ac5f3768571877311/go/http/api.go#L1989..L2008
Proposed fix:
The existing Raft command applier logic (already present for tag addition) should also be invoked in the untag method, ensuring the deletion is propagated cluster-wide.
https://github.com/percona/orchestrator/blob/bd65e056a73002bcfeae403ac5f3768571877311/go/logic/command_applier.go#L80..L83
Impact:
Without this change, tag deletions only apply locally on the node where the request was made, leaving other Raft peers with stale tag data.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in go/http/api.go by comparing the tag-addition path around lines 1975 and the untag path around lines 1989-2008, then read the existing tag command handling in go/logic/command_applier.go around lines 80-83. Done means tag deletion invokes the existing Raft applier and the deletion reaches every Raft peer without leaving stale tag data.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100