fix(compaction): make sure that only one task is running at a time, refactor compaction manager creation and add test #201
Conversation
There was a problem hiding this comment.
Pull request overview
Improves compaction task lifecycle handling to prevent overlapping compaction executions by ensuring outstanding compaction work is joined before starting a new task or closing writers.
Changes:
- Make
CancelCompaction()synchronously wait for the active compaction future to finish, removing the “detached futures” list. - Update writer close-path comments to reflect “cancel + wait” behavior.
- Remove tracking/waiting of previously “cancelled” futures in the compaction future manager.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| src/paimon/core/mergetree/merge_tree_writer.h | Updates close-path comments to describe cancel + wait behavior. |
| src/paimon/core/compact/compact_future_manager.h | Changes cancellation semantics to move+wait the active future; removes cancelled futures tracking. |
| src/paimon/core/append/append_only_writer.cpp | Updates close-path comments to describe cancel + wait behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 21 out of 21 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory_test.cpp
Show resolved
Hide resolved
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory.cpp
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 21 out of 21 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory_test.cpp
Outdated
Show resolved
Hide resolved
8465a81 to
02a3276
Compare
|
|
||
| TEST(KeyValueFileStoreWriteTest, TestWriteShouldSucceedWhenLookupEnabledWithIOManager) { | ||
| auto fields = {arrow::field("f0", arrow::utf8(), /*nullable=*/false)}; | ||
| arrow::Schema typed_schema(fields); |
There was a problem hiding this comment.
I'm not clear on the purpose of these two tests. If they're intended to test lookup behavior during compaction, then we should at least call PrepareCommit(wait_compaction=true).
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory_test.cpp
Show resolved
Hide resolved
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory_test.cpp
Outdated
Show resolved
Hide resolved
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory_test.cpp
Outdated
Show resolved
Hide resolved
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory_test.cpp
Outdated
Show resolved
Hide resolved
58bd188 to
18a4ca0
Compare
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory_test.cpp
Outdated
Show resolved
Hide resolved
src/paimon/core/mergetree/compact/merge_tree_compact_manager_factory_test.cpp
Outdated
Show resolved
Hide resolved
30fa282 to
07b29b2
Compare
Purpose
Tests
API and Format
Add options for pk compaction.
lookup-wait
Generative AI tooling
Generated-by: GitHub Copilot (GPT-5.3-Codex)