From 6d82ca8d86c59cd852d473bab84c99305017000f Mon Sep 17 00:00:00 2001 From: Ola Aunrønning Date: Fri, 13 Sep 2019 16:50:17 +0200 Subject: Pass down node admin state to NodeAgent.updateContainerNodeMetrics --- .../hosted/node/admin/nodeadmin/NodeAdmin.java | 2 +- .../hosted/node/admin/nodeadmin/NodeAdminImpl.java | 24 ++++++++++++---------- .../admin/nodeadmin/NodeAdminStateUpdater.java | 3 +-- .../hosted/node/admin/nodeagent/NodeAgent.java | 2 +- 4 files changed, 16 insertions(+), 15 deletions(-) (limited to 'node-admin/src') diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java index 7de2aae77c8..6d9eae5c4dc 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java @@ -17,7 +17,7 @@ public interface NodeAdmin { void refreshContainersToRun(Set nodeAgentContexts); /** Update node admin metrics */ - void updateMetrics(); + void updateMetrics(boolean isSuspended); /** * Attempts to freeze/unfreeze all NodeAgents and itself. To freeze a NodeAgent means that diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java index 5d2639d0a77..dddb724e3d6 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java @@ -102,19 +102,21 @@ public class NodeAdminImpl implements NodeAdmin { } @Override - public void updateMetrics() { + public void updateMetrics(boolean isSuspended) { for (NodeAgentWithScheduler nodeAgentWithScheduler : nodeAgentWithSchedulerByHostname.values()) { - numberOfUnhandledExceptions.add(nodeAgentWithScheduler.getAndResetNumberOfUnhandledExceptions()); - nodeAgentWithScheduler.updateContainerNodeMetrics(); + if (!isSuspended) numberOfUnhandledExceptions.add(nodeAgentWithScheduler.getAndResetNumberOfUnhandledExceptions()); + nodeAgentWithScheduler.updateContainerNodeMetrics(isSuspended); } - Runtime runtime = Runtime.getRuntime(); - long freeMemory = runtime.freeMemory(); - long totalMemory = runtime.totalMemory(); - long usedMemory = totalMemory - freeMemory; - jvmHeapFree.sample(freeMemory); - jvmHeapUsed.sample(usedMemory); - jvmHeapTotal.sample(totalMemory); + if (!isSuspended) { + Runtime runtime = Runtime.getRuntime(); + long freeMemory = runtime.freeMemory(); + long totalMemory = runtime.totalMemory(); + long usedMemory = totalMemory - freeMemory; + jvmHeapFree.sample(freeMemory); + jvmHeapUsed.sample(usedMemory); + jvmHeapTotal.sample(totalMemory); + } } @Override @@ -194,7 +196,7 @@ public class NodeAdminImpl implements NodeAdmin { void start() { nodeAgent.start(currentContext()); } void stopForHostSuspension() { nodeAgent.stopForHostSuspension(currentContext()); } void stopForRemoval() { nodeAgent.stopForRemoval(currentContext()); } - void updateContainerNodeMetrics() { nodeAgent.updateContainerNodeMetrics(currentContext()); } + void updateContainerNodeMetrics(boolean isSuspended) { nodeAgent.updateContainerNodeMetrics(currentContext(), isSuspended); } int getAndResetNumberOfUnhandledExceptions() { return nodeAgent.getAndResetNumberOfUnhandledExceptions(); } @Override public void scheduleTickWith(NodeAgentContext context, Instant at) { nodeAgentScheduler.scheduleTickWith(context, at); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java index 4a76e0e0a5b..e375769882a 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java @@ -79,8 +79,7 @@ public class NodeAdminStateUpdater { EnumSet suspendedStates = EnumSet.of(SUSPENDED_NODE_ADMIN, SUSPENDED); metricsScheduler.scheduleAtFixedRate(() -> { try { - if (suspendedStates.contains(currentState)) return; - nodeAdmin.updateMetrics(); + nodeAdmin.updateMetrics(suspendedStates.contains(currentState)); } catch (Throwable e) { log.log(Level.WARNING, "Metric fetcher scheduler failed", e); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java index f537884e708..341b4438f2c 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java @@ -30,7 +30,7 @@ public interface NodeAgent { /** * Updates metric receiver with the latest node-agent stats */ - default void updateContainerNodeMetrics(NodeAgentContext context) {} + default void updateContainerNodeMetrics(NodeAgentContext context, boolean isSuspended) {} /** * Returns and resets number of unhandled exceptions -- cgit v1.2.3