summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java6
-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
6 files changed, 15 insertions, 26 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java
index 776211635fb..657907c3f47 100644
--- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java
+++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java
@@ -91,9 +91,9 @@ public class MetricReceiverWrapper {
synchronized (monitor) {
List<DimensionMetrics> dimensionMetrics = new ArrayList<>();
applicationMetrics.entrySet()
- .forEach(e -> e.getValue().metricsByDimensions().entrySet().stream()
- .map(entry -> new DimensionMetrics(e.getKey(), entry.getKey(), entry.getValue()))
- .map(dimensionMetrics::add));
+ .forEach(e -> e.getValue().metricsByDimensions().entrySet().stream()
+ .map(entry -> new DimensionMetrics(e.getKey(), entry.getKey(), entry.getValue()))
+ .forEach(dimensionMetrics::add));
return dimensionMetrics;
}
}
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 {