924060929 commented on code in PR #66913:
URL: https://github.com/apache/doris/pull/66913#discussion_r3838735960
##########
fe/fe-core/src/main/java/org/apache/doris/nereids/StatementContext.java:
##########
@@ -201,6 +201,11 @@ public enum TableFrom {
// table locks
private final Stack<CloseableResource> plannerResources = new Stack<>();
+ // Resources that must outlive planning and remain valid until the
statement itself finishes.
+ // Keep these separate from plannerResources: NereidsPlanner releases
planner resources as soon as
+ // physical planning completes, while external split planning can still
use statement-scoped objects.
+ private final Map<Object, CloseableResource> statementResources = new
LinkedHashMap<>();
Review Comment:
这条评论要求处理 StreamingInsertTask 的通用 per-attempt StatementContext 生命周期,属于既有
Streaming 任务管理问题。当前 head 已撤回 Streaming 相关改动,本 PR 忽略该问题。
##########
fe/fe-core/src/main/java/org/apache/doris/nereids/StatementContext.java:
##########
@@ -918,7 +1025,11 @@ protected void finalize() throws Throwable {
@Override
public void close() {
clearExternalScanTasks();
- releasePlannerResources();
+ try {
+ releaseStatementResources();
Review Comment:
这条评论要求为惰性 PLSQL cursor 建立通用 StatementContext resource transfer 协议,属于既有
PLSQL/StatementContext 生命周期问题。当前 head 已撤回 PLSQL 相关改动,本 PR 忽略该问题。
##########
fe/fe-core/src/main/java/org/apache/doris/datasource/metacache/MetaCacheEntry.java:
##########
@@ -230,7 +270,9 @@ private V getWithManualLoad(K key, Function<K, V>
loadFunction) {
long generation = invalidateGeneration.get();
V loaded = loadAndTrack(key, loadFunction);
- if (generation != invalidateGeneration.get()) {
+ if (sealed.get() || generation != invalidateGeneration.get()) {
+ notifySuppressedRemoval(key, loaded);
Review Comment:
已修复。HudiFsViewCacheValue.evict() 会同时消费未交付给调用方的 loader
reference;sealed/generation-lost 的未发布 view 可直接降到零并关闭,getFsView 也会从当前 group 重试。
##########
fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/source/IcebergScanNode.java:
##########
@@ -782,7 +785,7 @@ public TableScan createTableScan() throws UserException {
this.pushdownIcebergPredicates.add(predicate.toString());
}
- icebergTableScan =
scan.planWith(source.getCatalog().getThreadPoolWithPreAuth());
+ icebergTableScan = scan.planWith(planningExecutor);
Review Comment:
已修复。Iceberg 异步 planner 持有独立的精确 generation lease 到 worker 实际终止,并把
cancellation handle 注册给 SplitAssignment;lease 在所有提交失败/执行异常/终止路径释放。
--
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]