cockroachdb / cockroachdb/cockroach

loqrecovery: meta ranges only reconciled during upreplication

Open
#98,297 1 comment 0 reactions 0 assignees View on GitHub
A-kv-recovery C-bug T-kv
Dominant language
Go
Stars
32.5k
Forks
4.1k
PR merge metrics
PR metrics pending

Description

Following loss of quorum recovery, we rely on upreplication to update the meta ranges with the new range descriptor. However, we're not always able to upreplicate. The trivial example is when recovering 1 node out of a 3-node cluster, but the same happens when recovering 2 nodes out of 4 (since we don't allow fragile RF=2 quorums), or when there are replication constraints.

This means that e.g. `crdb_ranges` or `SHOW RANGES` will still show the old range descriptor from before the recovery. Systems that rely on the meta information will also be affected.

We should make sure the meta descriptors are updated following recovery even when we can't upreplicate, for example by having the replicate queue reconcile them.

Jira issue: CRDB-25176

Contributor guide

Open the contributing guide

Research direction

Start with the replicate queue and its recovery path after loss of quorum, focusing on cases where upreplication is unavailable. Trace how meta descriptors are reconciled, then verify that crdb_ranges and SHOW RANGES report the post-recovery descriptor for the one-of-three and two-of-four recovery scenarios, including replication constraints.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
databases, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.