diff options
author | valerijf <valerijf@oath.com> | 2017-08-21 09:27:55 +0200 |
---|---|---|
committer | valerijf <valerijf@oath.com> | 2017-08-21 09:27:55 +0200 |
commit | 868459925a76e9b1105831629841da8c50985a8b (patch) | |
tree | 5f32fc4a3f8880f01e5fcda2be361f8fe5560a10 /node-repository | |
parent | e0ac6fb3d6e32dec0e986d79f789e45f62465dcd (diff) |
Add log message
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java index 77b1dc712df..a86ba955a9a 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java @@ -14,7 +14,10 @@ import com.yahoo.vespa.hosted.provision.node.History; import java.time.Clock; import java.time.Duration; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.logging.Logger; +import java.util.stream.Collectors; /** * This moves expired failed nodes: @@ -40,6 +43,7 @@ import java.util.List; */ public class FailedExpirer extends Expirer { + private static final Logger log = Logger.getLogger(NodeRetirer.class.getName()); private final NodeRepository nodeRepository; private final Zone zone; @@ -55,12 +59,18 @@ public class FailedExpirer extends Expirer { List<Node> nodesToRecycle = new ArrayList<>(); for (Node recycleCandidate : expired) { if (recycleCandidate.status().hardwareFailureDescription().isPresent()) { - boolean shouldBeParked = recycleCandidate.type() != NodeType.host || + List<String> nonParkedChildren = recycleCandidate.type() != NodeType.host ? Collections.emptyList() : nodeRepository.getChildNodes(recycleCandidate.hostname()).stream() - .allMatch(node -> node.state() == Node.State.parked); + .filter(node -> node.state() != Node.State.parked) + .map(Node::hostname) + .collect(Collectors.toList()); - if (shouldBeParked) nodeRepository.park( - recycleCandidate.hostname(), Agent.system, "Parked by FailedExpirer due to HW failure on node"); + if (nonParkedChildren.isEmpty()) { + nodeRepository.park(recycleCandidate.hostname(), Agent.system, "Parked by FailedExpirer due to HW failure on node"); + } else { + log.info(String.format("Expired failed node %s with HW fail is not parked because some of its children" + + " (%s) are not yet parked", recycleCandidate.hostname(), String.join(", ", nonParkedChildren))); + } } else if (! failCountIndicatesHwFail(zone, recycleCandidate) || recycleCandidate.status().failCount() < 5) { nodesToRecycle.add(recycleCandidate); } |