apache / apache/fluss

[Server] Support importing completed KV snapshots

Open
#4,223 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2.1k
Forks
625
Avg merge
3d 14h
Merged PRs (30d)
97

Description

### Search before asking

- [x] I searched in the [issues](https://github.com/apache/fluss/issues) and found nothing similar.

### Description

Fluss should be able to import a completed KV snapshot produced outside a
TabletServer and restore it through the ordinary snapshot recovery path.

This is the storage foundation for bulk loading. The imported result should be
indistinguishable from an ordinary completed Fluss snapshot after it has been
validated and adopted.

#### Scope

- Define portable metadata for completed KV snapshot files.
- Serialize and deserialize the snapshot metadata with compatibility checks.
- Validate imported files, including their paths, sizes, digests, snapshot ID,
and log end offset.
- Adopt a validated snapshot into the existing completed-snapshot store.
- Restore replicas from an imported snapshot through the ordinary KV recovery
path.
- Preserve active snapshot references so imported files are not removed while
they are still in use.
- Keep existing locally generated and tiered snapshot behavior unchanged.

### Willingness to contribute

- [x] I'm willing to submit a PR!

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the existing completed-snapshot store and ordinary KV recovery path, then identify how locally generated and tiered snapshots are represented. Define the portable metadata and compatibility checks, validate paths, sizes, digests, snapshot ID, and log end offset, and confirm that adoption, replica recovery, and active references preserve existing behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.