924060929 commented on code in PR #66913:
URL: https://github.com/apache/doris/pull/66913#discussion_r4067943187
##########
fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/source/IcebergScanNode.java:
##########
@@ -1674,7 +1686,10 @@ public void startSplit(int numBackends) throws
UserException {
Review Comment:
Fixed in `5253a811ff5`.
`IcebergSnapshotCacheValue` now binds the exact table generation each frozen
projection was derived from and can retain it. `IcebergScanNode.doStartSplit()`
retains that pinned generation through
`IcebergUtils.retainTableGenerationForAsyncPlanning(...)`, so
`AsyncPlanningTask` owns the G1 generation that `planFiles()` actually reads.
The worker therefore keeps the pinned FileIO/executor alive even after
cancellation closes the outer task's G1 owner following a reset, while
count-mode and non-snapshot-selectable system-table scans still retain the
statement generation (and retention falls back safely if the pinned generation
is already retired).
Regression coverage:
-
`IcebergTableCacheValueTest.frozenSnapshotRetainsItsGenerationAcrossOwnerClose`:
the outer G1 owner closes while the async lease keeps cleanup at 0; it
releases exactly once when the planner actually exits.
-
`IcebergTableCacheValueTest.asyncPlanningPrefersFrozenGenerationOverStatementGeneration`:
the pinned generation is retained without a statement scope.
- `IcebergScanNodeTest.testFrozenGenerationIsCapturedForAsyncPlanning`: the
scan node carries the pinned generation into async planning.
Validation on the rebased head: `IcebergTableCacheValueTest` (15) +
`IcebergScanNodeTest` (102) = 117 tests, 0 failures; FE Checkstyle 0
violations; FE reactor `mvn test-compile` BUILD SUCCESS.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]