You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Coordinator A regularly commits control-topic offset 100 on each commit, zero table commits
The record at coord offset 100 is removed from kafka due to retention (bytes or time), while coordinator A still exists (ie Coordinator A's pod & thread exist without crashing)
Coordinator A writes its old control-topic offset 100 once more, last writer wins
Coordinator A dies
Coordinator C elected, attempts to read from control-topic offset 100, no longer in retention
Coordinator C Auto offset reset to latest, skips all control topic records up to tip, data loss occurs for all records between B's last commit and C's election
Solution
We propose to make the coordinator read the currently committed coord group offset before committing, and never commit an offset lower than it. This provides cross-process monotonicity on the shared group -coord offset. The result will prevent data loss (note this is distinct from the in-process local monotonic map proposed in #17340 which cannot prevent this data loss scenario). The only potential functionality it will remove is an operator wanting to rewind a coordinator. But typically that is not done (only source offsets ie worker offsets are rewound).
Willingness to contribute
I can contribute a fix for this bug independently
I would be willing to contribute a fix for this bug with guidance from the Iceberg community
I cannot contribute a fix for this bug at this time
Apache Iceberg version
1.11.0 (latest release)
Query engine
None
Please describe the bug 馃悶
Data loss is observed with the kafka connect iceberg sink with the following configs & timeline.
Configs
Timeline
Solution
We propose to make the coordinator read the currently committed coord group offset before committing, and never commit an offset lower than it. This provides cross-process monotonicity on the shared group -coord offset. The result will prevent data loss (note this is distinct from the in-process local monotonic map proposed in #17340 which cannot prevent this data loss scenario). The only potential functionality it will remove is an operator wanting to rewind a coordinator. But typically that is not done (only source offsets ie worker offsets are rewound).
Willingness to contribute