Make ICMS instance-placement arbitration race-safe with NATS
Open
@dmikhaylovnv is already working on this.
Since Jul 15, 2026.
roadmap
- Dominant language
- Go
- Stars
- 218
- Forks
- 72
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 427
Description
Description
Make ICMS instance-placement arbitration consistent and race-safe by using NATS for request broadcast and a request-scoped JetStream consumer to collect cluster acknowledgements. Preserve the existing auction model while ensuring one ICMS instance owns each decision.
Definition of Done
- Instance-creation requests can target the intended region or set of clusters over NATS.
- Acknowledgements for each request are collected by a short-lived JetStream consumer owned by the publishing ICMS instance.
- Exactly one eligible cluster is selected and every responder receives a deterministic winning or non-winning result.
- No-responder and publisher-failure paths use bounded timeouts and retry-safe behavior.
- The selected result is persisted so retries can resume without repeating a completed arbitration.
- The new path can run without side effects for comparison with the current flow before a feature-flagged cutover.
Out of Scope
Replacing messaging for unrelated components is not part of this issue.
Contributor guide
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.
Assessment
This issue has not been assessed yet.