diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2017-09-19 12:40:31 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2017-09-22 22:16:50 +0200 |
commit | 6cfd9ef70ebc985044a9889692b69258a2be131a (patch) | |
tree | bf49bb9a7f039748dff7d8bfdabb78ac44f9d19a /node-admin | |
parent | 4a712bf9bb58c44268459cf4fa6753493ced3608 (diff) |
Re-order arguments, take converge interval as Duration instead
Diffstat (limited to 'node-admin')
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)); |