Description
DurableBackgroundTasks are tracked using metastorage, there's a specific marker for every task, and it is removed right after the task is complete.
But there's a race between checkpointer and metastorage. End-marker removal is a logical operation, while task itself is mostly physical (at least the existing one). So, following scenario is possible:
- Checkpoint occurs in the middle of the task;
- Task is completed before the next checkpoint;
- Metastorage record is deleted, this fact if written to WAL and synced to the storage;
- Node failed;
- Recovery process applies deletion from metastorage, this means that DurableBackgroundTasks info is lost;
- But part of the index is still present in the storage.
I think that we should remove markers from metastorage only after the next checkpoint, this will 100% save us from such situation.
Attachments
Issue Links
- links to