percona / percona/orchestrator

Tag deletion not propagated to all Raft peers, causing data inconsistency

Open
#76 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.