apple / apple/foundationdb

Add datacenter level transaction log anti-quorums

Open
#1,041 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.