Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Server] Clean leader reassignment can leave divergent WAL in an ISR replica

Aperta
#4,269 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

  • #4273 di @platinumhamburg — chiusa senza merge

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
30/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
java

Direzione di ricerca

Inizia con ReassignmentLeaderElection e il protocollo di replica, quindi riproduci la sequenza a tre repliche descritta nell’issue. Traccia il cambio di leader, l’HW del follower e il LEO locale durante la riassegnazione; il lavoro è completato quando una migrazione pulita stabilisce un prefisso di log comune prima che venga confermata una scrittura acks=-1.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Search before asking
  • I searched in the issues and found nothing similar.
Fluss version

0.9.0 (latest release)

Please describe the bug 🐞

A clean leader reassignment can leave replicas with different records at the same offsets, while the new leader acknowledges writes with acks=-1 and all replicas remain in the ISR.

This was reproduced using a regular Log Table without secondary indexes.

Steps to reproduce

Use three replicas, A, B, and C, with A as leader and ISR [A, B, C]. All offset ranges below are half-open.

  1. Append and commit a common prefix [0,10) on all three replicas.
  2. Append another batch [10,15) to A with acks=1. Deliver its replication response only to C. B remains at offset 10 and stays in the ISR; A's HW remains 10.
  3. Perform a clean leader reassignment to B using ReassignmentLeaderElection.
  4. Append different records to B. Since B's LEO is 10, these records occupy [10,15).
  5. Resume replication from B to A and C.

Actual behavior

The write in step 4 completes successfully with acks=-1, but the replicas contain:

Replica HW Records at offsets 10–14
A 15 New records from B
B, current leader 15 New records
C, still in ISR 15 Old records from A

The previously committed prefix [0,10) remains intact. The inconsistency affects the replacement records acknowledged by the new leader.

Solution

The replication protocol needs to establish a common log prefix when leadership changes, rather than treating matching offsets as proof of matching history. Leader-epoch-based reconciliation and the relationship between follower HW and local LEO need to be considered together.

Append offset-continuity checks alone would not detect this case because the divergent records occupy the same offsets.

Related work

Tracked under #673.

This issue documents a reproducible WAL divergence during a normal,
clean ISR leader migration: a write can be acknowledged while ISR
replicas retain different records at the same offsets.

Related implementation work: #778, #788, and #789.

Are you willing to submit a PR?
  • I'm willing to submit a PR!
Lingua principale
Java
Stelle
2.2k
Fork
656
Merge medio
2g 16h
PR unite (30g)
103

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/fluss

Tutte le issue di apache/fluss

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.