From 274acce02ccfb849f28b16e420d0cd16d299877f Mon Sep 17 00:00:00 2001 From: Vladimir Ozerov Date: Wed, 10 Sep 2025 17:26:36 +0300 Subject: [PATCH] Relax locking in ThreadPerDriverTaskExecutor when removing task Before the fix, ThreadPerDriverTaskExecutor.removeTask performed task destruction under a global lock which may lead to an unnecessary contention with HTTP threads attempting to add new tasks. --- .../executor/dedicated/ThreadPerDriverTaskExecutor.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/trino-main/src/main/java/io/trino/execution/executor/dedicated/ThreadPerDriverTaskExecutor.java b/core/trino-main/src/main/java/io/trino/execution/executor/dedicated/ThreadPerDriverTaskExecutor.java index 77c4fc7c78b9..7692f6595fae 100644 --- a/core/trino-main/src/main/java/io/trino/execution/executor/dedicated/ThreadPerDriverTaskExecutor.java +++ b/core/trino-main/src/main/java/io/trino/execution/executor/dedicated/ThreadPerDriverTaskExecutor.java @@ -143,10 +143,12 @@ public synchronized TaskHandle addTask( } @Override - public synchronized void removeTask(TaskHandle handle) + public void removeTask(TaskHandle handle) { TaskEntry entry = (TaskEntry) handle; - tasks.remove(entry.taskId()); + synchronized (this) { + tasks.remove(entry.taskId()); + } if (!entry.isDestroyed()) { entry.destroy(); }