aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorfreva <valerijf@yahoo-inc.com>2017-02-14 14:38:49 +0100
committerfreva <valerijf@yahoo-inc.com>2017-02-14 14:38:49 +0100
commit0d0646dcf86051e2bde34137b975a8b31cac1c8a (patch)
tree8e54053ee66397b93e2e67ab31a7d11ded704e18 /node-admin
parent63219192b9cdaaa27016d0b93e8ad06ee9a3226c (diff)
Fix docker metrics
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java16
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java7
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java6
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java4
5 files changed, 12 insertions, 23 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index f60ba83460d..10ed75a6232 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -81,7 +81,7 @@ public class NodeAgentImpl implements NodeAgent {
// The attributes of the last successful node repo attribute update for this node. Used to avoid redundant calls.
private NodeAttributes lastAttributesSet = null;
ContainerNodeSpec lastNodeSpec = null;
- CpuUsageReporter lastCpuMetric;
+ CpuUsageReporter lastCpuMetric = new CpuUsageReporter(Instant.now());
Optional<String> vespaVersion = Optional.empty();
public NodeAgentImpl(
@@ -91,8 +91,7 @@ public class NodeAgentImpl implements NodeAgent {
final DockerOperations dockerOperations,
final Optional<StorageMaintainer> storageMaintainer,
final MetricReceiverWrapper metricReceiver,
- final Environment environment,
- final Optional<Container> container) {
+ final Environment environment) {
this.nodeRepository = nodeRepository;
this.orchestrator = orchestrator;
this.hostname = hostName;
@@ -102,8 +101,6 @@ public class NodeAgentImpl implements NodeAgent {
NodeRepositoryImpl.containerNameFromHostName(hostName));
this.metricReceiver = metricReceiver;
this.environment = environment;
-
- container.map(Container::getCreatedAsInstant).ifPresent(created -> lastCpuMetric = new CpuUsageReporter(created));
}
@Override
@@ -162,10 +159,13 @@ public class NodeAgentImpl implements NodeAgent {
throw new RuntimeException("Can not restart a node agent.");
}
- // If the container is already running, initialize vespaVersion
- vespaVersion = dockerOperations.getContainer(hostname)
+ // If the container is already running, initialize vespaVersion and lastCpuMetric
+ dockerOperations.getContainer(hostname)
.filter(container -> container.state.isRunning())
- .flatMap(container -> dockerOperations.getVespaVersion(container.name));
+ .ifPresent(container -> {
+ vespaVersion = dockerOperations.getVespaVersion(container.name);
+ lastCpuMetric = new CpuUsageReporter(container.getCreatedAsInstant());
+ });
loopThread = new Thread(this::loop);
loopThread.setName("loop-" + hostname);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java
index b069d49bb55..c81442e5a54 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java
@@ -65,7 +65,7 @@ public class ComponentsProviderImpl implements ComponentsProvider {
Function<String, NodeAgent> nodeAgentFactory =
(hostName) -> new NodeAgentImpl(hostName, nodeRepository, orchestrator, dockerOperations,
- storageMaintainer, metricReceiver, environment, dockerOperations.getContainer(hostName));
+ storageMaintainer, metricReceiver, environment);
NodeAdmin nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, storageMaintainer,
NODE_AGENT_SCAN_INTERVAL_MILLIS, metricReceiver, aclMaintainer);
nodeAdminStateUpdater = new NodeAdminStateUpdater(nodeRepository, nodeAdmin, INITIAL_SCHEDULER_DELAY_MILLIS,
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java
index f52705bab7d..664d375ec09 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java
@@ -2,9 +2,6 @@
package com.yahoo.vespa.hosted.node.admin.integrationTests;
import com.yahoo.metrics.simple.MetricReceiver;
-import com.yahoo.vespa.hosted.dockerapi.Container;
-import com.yahoo.vespa.hosted.dockerapi.ContainerName;
-import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdmin;
@@ -34,11 +31,9 @@ public class ComponentsProviderWithMocks implements ComponentsProvider {
private final Environment environment = new Environment.Builder().build();
private final MetricReceiverWrapper mr = new MetricReceiverWrapper(MetricReceiver.nullImplementation);
private final DockerOperations dockerOperations = new DockerOperationsImpl(dockerMock, environment, mr);
- private final Container container = new Container("host123.name.yahoo.com", new DockerImage("image-123"),
- new ContainerName("host123"), Container.State.RUNNING, 1);
private final Function<String, NodeAgent> nodeAgentFactory =
(hostName) -> new NodeAgentImpl(hostName, nodeRepositoryMock, orchestratorMock,
- dockerOperations, Optional.empty(), mr, environment, Optional.of(container));
+ dockerOperations, Optional.empty(), mr, environment);
private NodeAdmin nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, Optional.empty(), 100, mr, Optional.empty());
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
index 86d4d8d23ab..aef03327645 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
@@ -1,10 +1,8 @@
package com.yahoo.vespa.hosted.node.admin.integrationTests;
import com.yahoo.metrics.simple.MetricReceiver;
-import com.yahoo.vespa.hosted.dockerapi.Container;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.Docker;
-import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
@@ -59,10 +57,8 @@ public class DockerTester implements AutoCloseable {
MetricReceiverWrapper mr = new MetricReceiverWrapper(MetricReceiver.nullImplementation);
final DockerOperations dockerOperations = new DockerOperationsImpl(dockerMock, environment, mr);
- Container container = new Container("host123.name.yahoo.com", new DockerImage("image-123"),
- new ContainerName("host123"), Container.State.RUNNING, 1);
Function<String, NodeAgent> nodeAgentFactory = (hostName) -> new NodeAgentImpl(hostName, nodeRepositoryMock,
- orchestratorMock, dockerOperations, Optional.of(storageMaintainer), mr, environment, Optional.of(container));
+ orchestratorMock, dockerOperations, Optional.of(storageMaintainer), mr, environment);
nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, Optional.of(storageMaintainer), 100, mr, Optional.empty());
updater = new NodeAdminStateUpdater(nodeRepositoryMock, nodeAdmin, 1, 1, orchestratorMock, "basehostname");
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
index 111b495a494..447097fe337 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
@@ -66,10 +66,8 @@ public class NodeAgentImplTest {
.inetAddressResolver(new InetAddressResolver())
.pathResolver(pathResolver).build();
- private final Container container = new Container("host123.name.yahoo.com", new DockerImage("image-123"),
- new ContainerName("host123"), Container.State.RUNNING, 1);
private final NodeAgentImpl nodeAgent = new NodeAgentImpl(hostName, nodeRepository, orchestrator, dockerOperations,
- Optional.of(storageMaintainer), metricReceiver, environment, Optional.of(container));
+ Optional.of(storageMaintainer), metricReceiver, environment);
@Test
public void upToDateContainerIsUntouched() throws Exception {