feldera / feldera/feldera

[dbsp] Keeping two checkpoints around is wasteful

Open
#7,035 1 comment 0 reactions 1 assignee Claimed by @blp View on GitHub
ft high priority storage user-reported
Dominant language
Rust
Stars
2.1k
Forks
154
Avg merge
2d 19h
Merged PRs (30d)
133

Description

With FT and periodic checkpointing enabled, the pipeline keeps two checkpoints in steady state. The second checkpoint isn't strictly needed and can be safely GC'd once the new checkpoint is full completed. If my understanding is correct, we only keep it around because it simplifies the GC algorithm: we compute the list of unused files by diffing the file lists of the two checkpoints.

This extra checkpoint can increase pipeline's storage significantly. I am looking at a customer pipeline that is processing a series of expensive transactions, causing checkpoints to get delayed by 30 minutes. Initially a fresh checkpoint costs nothing in terms of storage since it shares all its files with the live pipeline, but over time, the pipeline diverges from the checkpoint, especially under heavy load. A single checkpoint doubles pipeline's storage footprint in the worst case. Two checkpoints triple it.

This is not a correctness issue, but I am labeling it as a bug since it causes pipelines to crash despite plenty of provisioned storage.

Related issue: #7032

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.