Skip to content

[lake] Support partition mark-done for lakehouse tiering (processing-time) - #3635

Open
beryllw wants to merge 2 commits into
apache:mainfrom
beryllw:feature/paimon-markdone
Open

[lake] Support partition mark-done for lakehouse tiering (processing-time)#3635
beryllw wants to merge 2 commits into
apache:mainfrom
beryllw:feature/paimon-markdone

Conversation

@beryllw

@beryllw beryllw commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

…time)

Purpose

Linked issue: close #3314

Brief change log

Tests

API and Format

Documentation

@beryllw
beryllw marked this pull request as draft July 11, 2026 10:39
@beryllw
beryllw force-pushed the feature/paimon-markdone branch from e565147 to 5355d56 Compare July 15, 2026 15:18
@beryllw
beryllw force-pushed the feature/paimon-markdone branch from 5355d56 to aee9f7b Compare August 4, 2026 03:54
@beryllw
beryllw marked this pull request as ready for review August 4, 2026 03:55
@beryllw beryllw changed the title [lake] Support partition mark-done for lakehouse tiering (processing-… [lake] Support partition mark-done for lakehouse tiering (processing-time) Aug 4, 2026
@beryllw
beryllw force-pushed the feature/paimon-markdone branch 2 times, most recently from 7eb2246 to ce275c1 Compare August 4, 2026 08:52
@luoyuxia
luoyuxia requested a lite review from Copilot August 11, 2026 03:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds partition mark-done support for Paimon lakehouse tiering in the Fluss tiering service, including the ability to run a “maintenance” round when a tiering cycle produces no data, and to persist mark-done tracking state in Paimon snapshot properties.

Changes:

  • Implement Paimon partition mark-done logic (state model + trigger + action execution) and persist state via snapshot properties.
  • Extend the Flink tiering pipeline to emit an empty “skip-round” split and commit mark-done maintenance on empty rounds when enabled.
  • Add UT/IT coverage for the mark-done lifecycle, cold start backfill, and late-data behavior.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
fluss-lake/fluss-lake-paimon/src/test/java/org/apache/fluss/lake/paimon/tiering/PaimonTieringITCase.java Adds an IT case validating end-to-end partition mark-done behavior (including _SUCCESS and snapshot properties).
fluss-lake/fluss-lake-paimon/src/test/java/org/apache/fluss/lake/paimon/tiering/PaimonPartitionMarkDoneTest.java New UT covering mark-done state lifecycle, cold start backfill, end-time guarding, and JSON serde behavior.
fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/tiering/PartitionMarkDoneTrigger.java New trigger (adapted from Paimon) to decide which partitions are idle enough to be marked done.
fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/tiering/PaimonPartitionMarkDone.java New core implementation that tracks tiered partitions, performs idle judgment, and runs Paimon mark-done actions.
fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/tiering/PaimonLakeTieringFactory.java Declares Paimon supports mark-done via the new capability interface.
fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/tiering/PaimonLakeCommitter.java Runs mark-done on data commits and implements maintenance commits for empty rounds via properties-only snapshots.
fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/tiering/MarkDoneStateJsonSerde.java New JSON serde for persisted mark-done state in snapshot properties.
fluss-lake/fluss-lake-paimon/src/main/java/org/apache/fluss/lake/paimon/tiering/MarkDoneState.java New state model representing cold-start initialization and pending partitions.
fluss-flink/fluss-flink-common/src/main/java/org/apache/fluss/flink/tiering/source/enumerator/TieringSourceEnumerator.java Emits a skip-round split for fully caught-up tables when mark-done is enabled.
fluss-flink/fluss-flink-common/src/main/java/org/apache/fluss/flink/tiering/committer/TieringCommitOperator.java Runs mark-done maintenance and commits the resulting snapshot to Fluss when a round has no data.
fluss-common/src/main/java/org/apache/fluss/utils/PartitionUtils.java Exposes partition time-format logic needed for auto-partition end-time derivation.
fluss-common/src/main/java/org/apache/fluss/lake/writer/PartitionMarkDoneEnabler.java New optional capability interface for lake factories to signal mark-done support/enabling.
fluss-common/src/main/java/org/apache/fluss/lake/committer/PartitionMarkDoneMaintainer.java New optional capability interface for lake committers to perform empty-round mark-done maintenance.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@beryllw
beryllw marked this pull request as draft August 11, 2026 09:57
@beryllw
beryllw force-pushed the feature/paimon-markdone branch from 5bddc70 to 30def66 Compare August 11, 2026 15:47
@beryllw
beryllw marked this pull request as ready for review August 11, 2026 15:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Support Partition Mark Done for Fluss Tiering (Paimon Lake)

2 participants