Add datacenter level transaction log anti-quorums
- Dominant language
- C++
- Stars
- 16.7k
- Forks
- 1.6k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 126
Description
The existing transaction log anti-quorums enable a user to avoid waiting for all transaction logs to respond before treating a version as committed. This feature generally is not used, because the storage servers associated with a transaction log that has fallen behind will also fall behind.
The feature is useful though when using satellite transaction logs, because satellite logs do not serve data to storage servers directly. The goal of the two_satellite_fast policy is to send mutations to two different satellite locations, and return successfully once the version is durable in one of the two satellites. However, because it is implemented with a machine level anti-quorum, it currently only waits for all but two machines in the two satellites to respond successfully. Therefore if you have more than two logs in a satellite, you will still need an answer from both satellites.
This can be fixed by adding a new datacenter level log anti-quorum. This parameter would mean that the database does not need responses from all machines in N datacenters.
Contributor guide
Research direction
The issue names no files or tests. Start by locating the existing machine-level transaction-log anti-quorum and the two_satellite_fast policy, then trace how responses are counted across machines and satellites. Done means a datacenter-level anti-quorum lets the policy avoid responses from all machines in the specified number of datacenters while preserving the stated durability behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- databases, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100