diff options
author | valerijf <valerijf@yahoo-inc.com> | 2017-04-18 11:38:32 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2017-04-18 14:38:48 +0200 |
commit | 4dd906a2b7a2529f4e60cba3d3063c5d0a72be2d (patch) | |
tree | 13d37644761fb04a42854f3d4353553383e2c477 /node-admin/src | |
parent | bcba809ed6caa5849d9c112501c36b94b47b92a7 (diff) |
Only ask Orchestrator for permission to suspend when in state active
Diffstat (limited to 'node-admin/src')
2 files changed, 10 insertions, 3 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 57a4a069f57..556c8c9f307 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 @@ -333,8 +333,15 @@ public class NodeAgentImpl implements NodeAgent { logger.info("Will remove container " + existingContainer.get() + ": " + removeReason.get()); if (existingContainer.get().state.isRunning()) { - orchestratorSuspendNode(); - stopServices(); + if (nodeSpec.nodeState == Node.State.active) { + orchestratorSuspendNode(); + } + + try { + stopServices(); + } catch (Exception e) { + logger.info("Failed stopping services, ignoring", e); + } } vespaVersion = Optional.empty(); dockerOperations.removeContainer(existingContainer.get()); 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 ab9abcde7ff..64c37fedd53 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 @@ -323,7 +323,6 @@ public class NodeAgentImplTest { NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getContainerNodeSpec(hostName)).thenReturn(Optional.of(nodeSpec)); - doNothing().when(orchestrator).suspend(eq(hostName)); nodeAgent.converge(); @@ -335,6 +334,7 @@ public class NodeAgentImplTest { verify(dockerOperations, never()).startContainer(eq(containerName), any()); verify(orchestrator, never()).resume(any(String.class)); + verify(orchestrator, never()).suspend(any(String.class)); // current Docker image and vespa version should be cleared verify(nodeRepository, times(1)).updateNodeAttributes( any(String.class), eq(new NodeAttributes() |