diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2019-09-13 16:50:17 +0200 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2019-09-13 16:50:17 +0200 |
commit | 6d82ca8d86c59cd852d473bab84c99305017000f (patch) | |
tree | 5d314c385a9c049c0c0d186058f22fd176c691d0 /node-admin | |
parent | 04694f5e9157f350af5bdbe4f39e272118a7eacb (diff) |
Pass down node admin state to NodeAgent.updateContainerNodeMetrics
Diffstat (limited to 'node-admin')
4 files changed, 16 insertions, 15 deletions
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<NodeAgentContext> 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<State> 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 |