summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2017-09-19 12:40:31 +0200
committerValerij Fredriksen <valerijf@oath.com>2017-09-22 09:13:01 +0200
commitb1d41d2635dd54b1dabe9a11a998299c1d23db22 (patch)
tree08122cdcfe3bcc1fa2f862bc613d0de00b59535e
parentd22657f665119997a3a1f338c950d78a62619e08 (diff)
Re-order arguments, take converge interval as Duration instead
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java3
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java26
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java16
3 files changed, 23 insertions, 22 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
index a4118ebe9ff..f6fd8c3bd18 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java
@@ -22,7 +22,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.regex.Pattern;
import java.util.stream.Stream;
import static com.yahoo.vespa.defaults.Defaults.getDefaults;
@@ -40,8 +39,6 @@ public class DockerOperationsImpl implements DockerOperations {
private static final String[] RESTART_VESPA_ON_NODE_COMMAND = new String[]{NODE_PROGRAM, "restart-vespa"};
private static final String[] STOP_NODE_COMMAND = new String[]{NODE_PROGRAM, "stop"};
- private static final Pattern VESPA_VERSION_PATTERN = Pattern.compile("^(\\S*)$", Pattern.MULTILINE);
-
private static final String MANAGER_NAME = "node-admin";
// Map of directories to mount and whether they should be writable by everyone
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 a848dae9388..cf47e3c2da5 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
@@ -56,23 +56,25 @@ public class NodeAdminStateUpdater extends AbstractComponent {
private final Clock clock;
private final Orchestrator orchestrator;
private final String dockerHostHostName;
+ private final Duration nodeAdminConvergeStateInterval;
- private long delaysBetweenEachTickMillis = 30_000;
private Instant lastTick;
public NodeAdminStateUpdater(
- final NodeRepository nodeRepository,
- final NodeAdmin nodeAdmin,
+ NodeRepository nodeRepository,
+ Orchestrator orchestrator,
StorageMaintainer storageMaintainer,
+ NodeAdmin nodeAdmin,
+ String dockerHostHostName,
Clock clock,
- Orchestrator orchestrator,
- String dockerHostHostName) {
+ Duration nodeAdminConvergeStateInterval) {
log.log(LogLevel.INFO, objectToString() + ": Creating object");
this.nodeRepository = nodeRepository;
- this.nodeAdmin = nodeAdmin;
- this.clock = clock;
this.orchestrator = orchestrator;
+ this.nodeAdmin = nodeAdmin;
this.dockerHostHostName = dockerHostHostName;
+ this.clock = clock;
+ this.nodeAdminConvergeStateInterval = nodeAdminConvergeStateInterval;
this.lastTick = clock.instant();
specVerifierScheduler.scheduleWithFixedDelay(() ->
@@ -133,7 +135,8 @@ public class NodeAdminStateUpdater extends AbstractComponent {
State wantedStateCopy;
synchronized (monitor) {
while (! workToDoNow) {
- long remainder = delaysBetweenEachTickMillis - Duration.between(lastTick, clock.instant()).toMillis();
+ Duration timeSinceLastConverge = Duration.between(lastTick, clock.instant());
+ long remainder = nodeAdminConvergeStateInterval.minus(timeSinceLastConverge).toMillis();
if (remainder > 0) {
try {
monitor.wait(remainder);
@@ -231,7 +234,7 @@ public class NodeAdminStateUpdater extends AbstractComponent {
}
final List<ContainerNodeSpec> containersToRun;
try {
- containersToRun = nodeRepository.getContainersToRun();
+ containersToRun = nodeRepository.getContainersToRun(dockerHostHostName);
} catch (Exception e) {
log.log(LogLevel.WARNING, "Failed fetching container info from node repository", e);
return;
@@ -250,7 +253,7 @@ public class NodeAdminStateUpdater extends AbstractComponent {
private List<String> getNodesInActiveState() {
try {
- return nodeRepository.getContainersToRun()
+ return nodeRepository.getContainersToRun(dockerHostHostName)
.stream()
.filter(nodespec -> nodespec.nodeState == Node.State.active)
.map(nodespec -> nodespec.hostname)
@@ -260,8 +263,7 @@ public class NodeAdminStateUpdater extends AbstractComponent {
}
}
- public void start(long stateConvergeInterval) {
- delaysBetweenEachTickMillis = stateConvergeInterval;
+ public void start() {
if (loopThread != null) {
throw new RuntimeException("Can not restart NodeAdminStateUpdater");
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
index f2d5c7e3ade..e1501cf59fe 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
@@ -32,18 +32,20 @@ import static org.mockito.Mockito.when;
/**
* Basic test of NodeAdminStateUpdater
+ *
* @author freva
*/
public class NodeAdminStateUpdaterTest {
- private final String parentHostname = "basehost1.test.yahoo.com";
-
- private final ManualClock clock = new ManualClock();
private final NodeRepository nodeRepository = mock(NodeRepository.class);
- private final NodeAdmin nodeAdmin = mock(NodeAdmin.class);
- private final StorageMaintainer storageMaintainer = mock(StorageMaintainer.class);
private final Orchestrator orchestrator = mock(Orchestrator.class);
+ private final StorageMaintainer storageMaintainer = mock(StorageMaintainer.class);
+ private final NodeAdmin nodeAdmin = mock(NodeAdmin.class);
+ private final String parentHostname = "basehost1.test.yahoo.com";
+ private final ManualClock clock = new ManualClock();
+ private final Duration convergeStateInterval = Duration.ofSeconds(30);
+
private final NodeAdminStateUpdater refresher = spy(new NodeAdminStateUpdater(
- nodeRepository, nodeAdmin, storageMaintainer, clock, orchestrator, parentHostname));
+ nodeRepository, orchestrator, storageMaintainer, nodeAdmin, parentHostname, clock, convergeStateInterval));
@Test
@@ -66,7 +68,7 @@ public class NodeAdminStateUpdaterTest {
List<String> suspendHostnames = new ArrayList<>(activeHostnames);
suspendHostnames.add(parentHostname);
- when(nodeRepository.getContainersToRun()).thenReturn(containersToRun);
+ when(nodeRepository.getContainersToRun(eq(parentHostname))).thenReturn(containersToRun);
// Initially everything is frozen to force convergence
assertFalse(refresher.setResumeStateAndCheckIfResumed(NodeAdminStateUpdater.State.RESUMED));