Fix delayed query cleanup during file metadata scans - #18679
Merged
JackieTien97 merged 1 commit intoSep 20, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
A cancelled or timed-out fragment can keep loading overlapping file metadata inside a single operator call. Its Driver retains its execution lock, so the fragment cleanup callback waits for Driver destruction and delays other callbacks sharing the notification executor.
Check the fragment's terminal state at file-scan entry and immediately before and after loading each sequential or unsequential file's metadata. The scan exits on the Driver thread and preserves the original failure cause. The check is shared by non-aligned and aligned scans, skips compaction contexts without a state machine, and uses matching English/Chinese message constants.
This provides cooperative cancellation between metadata reads. An in-flight I/O operation or monitor acquisition must still return before cancellation is observed; the reader locking and notification executor lifecycle are unchanged.
Validation
mvn clean test -pl iotdb-core/datanode -am \ -Dtest=SeriesScanUtilCancellationTest,DataDriverTest,FragmentInstanceExecutionTest,SeriesScanLimitOffsetPushDownTest,AlignedSeriesScanLimitOffsetPushDownTest,SeriesScanPredicatePushDownTest,AlignedSeriesScanPredicatePushDownTest \ -Dsurefire.failIfNoSpecifiedTests=false mvn test-compile -DskipTests mvn test-compile -DskipTests -P with-zh-locale