From b0248d1e0d13c645647a26afe585962d9ab4472a Mon Sep 17 00:00:00 2001 From: Haochen Ding Date: Wed, 23 Dec 2020 15:00:13 -0500 Subject: [PATCH] When multiple coordinators are used, don't update memory pool info for any coordinator if work is not scheduled on coordinator --- .../io/prestosql/memory/ClusterMemoryManager.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/presto-main/src/main/java/io/prestosql/memory/ClusterMemoryManager.java b/presto-main/src/main/java/io/prestosql/memory/ClusterMemoryManager.java index b96987d4c..cb4a69fcf 100644 --- a/presto-main/src/main/java/io/prestosql/memory/ClusterMemoryManager.java +++ b/presto-main/src/main/java/io/prestosql/memory/ClusterMemoryManager.java @@ -531,23 +531,24 @@ public class ClusterMemoryManager // Add new nodes for (InternalNode node : aliveNodes) { - if (!nodes.containsKey(node.getNodeIdentifier())) { + if (!nodes.containsKey(node.getNodeIdentifier()) && shouldIncludeNode(node)) { nodes.put(node.getNodeIdentifier(), new RemoteNodeMemory(node, httpClient, memoryInfoCodec, assignmentsRequestCodec, locationFactory.createMemoryInfoLocation(node), isBinaryEncoding)); } } - // If work isn't scheduled on the coordinator (the current node) there is no point - // in polling or updating (when moving queries to the reserved pool) its memory pools - if (!isWorkScheduledOnCoordinator) { - nodes.remove(nodeManager.getCurrentNode().getNodeIdentifier()); - } - // Schedule refresh for (RemoteNodeMemory node : nodes.values()) { node.asyncRefresh(assignments); } } + private boolean shouldIncludeNode(InternalNode node) + { + // If work isn't scheduled on the coordinator (the current node) there is no point + // in polling or updating (when moving queries to the reserved pool) its memory pools + return isWorkScheduledOnCoordinator || !node.isCoordinator(); + } + private synchronized void updatePools(Map queryCounts) { // Update view of cluster memory and pools