From 83d33ec961ec5c30e383f9f85ee9bec97a12b7fe Mon Sep 17 00:00:00 2001 From: gjoranv Date: Mon, 4 Apr 2022 22:29:30 +0200 Subject: Upgrade maven dependencies and plugins. --- bundle-plugin/pom.xml | 1 - parent/pom.xml | 16 +++++++++------- tenant-base/pom.xml | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/bundle-plugin/pom.xml b/bundle-plugin/pom.xml index 8f52187357f..0c535606e90 100644 --- a/bundle-plugin/pom.xml +++ b/bundle-plugin/pom.xml @@ -25,7 +25,6 @@ org.apache.maven maven-plugin-api - 3.8.5 org.apache.maven diff --git a/parent/pom.xml b/parent/pom.xml index ecf257727d1..7ad8740edf6 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -652,22 +652,22 @@ org.apache.maven maven-artifact - 3.5.0 + ${maven-core.version} org.apache.maven maven-core - 3.5.0 + ${maven-core.version} org.apache.maven maven-model - 3.5.0 + ${maven-core.version} org.apache.maven maven-plugin-api - ${maven-plugin-tools.version} + ${maven-plugin-api.version} org.apache.maven @@ -942,14 +942,16 @@ 5.8.1 3.3.0 5.1.2 - 3.8.1 - 3.2.0 + 3.10.1 + 3.8.5 + 3.3.0 2.8.2 3.0.0 3.0.0-M1 3.2.0 3.3.1 - 3.6.1 + 3.8.5 + 3.6.4 3.2.0 3.3.0 3.9.1 diff --git a/tenant-base/pom.xml b/tenant-base/pom.xml index 19af8305659..3ad52ae1b48 100644 --- a/tenant-base/pom.xml +++ b/tenant-base/pom.xml @@ -144,7 +144,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.2.0 + 3.3.0 -- cgit v1.2.3 From e6c8f49cc768573baa37f3d6b59ef6fd9c1bdc13 Mon Sep 17 00:00:00 2001 From: gjoranv Date: Fri, 22 Apr 2022 13:57:25 +0200 Subject: Add version management for maven-archiver in parent. --- bundle-plugin/pom.xml | 1 - parent/pom.xml | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bundle-plugin/pom.xml b/bundle-plugin/pom.xml index 0c535606e90..d0a6d43d9c5 100644 --- a/bundle-plugin/pom.xml +++ b/bundle-plugin/pom.xml @@ -29,7 +29,6 @@ org.apache.maven maven-archiver - 3.5.2 org.apache.maven.plugin-tools diff --git a/parent/pom.xml b/parent/pom.xml index 7ad8740edf6..9372aacc528 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -649,6 +649,11 @@ httpmime ${apache.httpclient.version} + + org.apache.maven + maven-archiver + ${maven-archiver.version} + org.apache.maven maven-artifact @@ -940,6 +945,7 @@ 2.1.12 5.9.0 5.8.1 + 3.5.2 3.3.0 5.1.2 3.10.1 -- cgit v1.2.3 From 955e9e6ae24f60a5163df171a448db21f127cb33 Mon Sep 17 00:00:00 2001 From: gjoranv Date: Fri, 22 Apr 2022 14:26:24 +0200 Subject: Fix and clean up deps for maven plugins. - Set scope to provided to silence error messages from maven-plugin-plugin >=3.6.2 Example: Some dependencies of Maven Plugins are expected to be in provided scope. Please make sure that dependencies listed below declared in POM have set 'provided' as well. The following dependencies are in wrong scope: * org.apache.maven:maven-settings:jar:3.8.5:compile --- abi-check-plugin/pom.xml | 2 ++ bundle-plugin/pom.xml | 15 +++++++++++++++ config-class-plugin/pom.xml | 8 +------- vespa-application-maven-plugin/pom.xml | 12 ++++++++---- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/abi-check-plugin/pom.xml b/abi-check-plugin/pom.xml index 03b2e7c8b60..8d782b1d426 100644 --- a/abi-check-plugin/pom.xml +++ b/abi-check-plugin/pom.xml @@ -18,10 +18,12 @@ org.apache.maven maven-plugin-api + provided org.apache.maven maven-core + provided org.apache.maven.plugin-tools diff --git a/bundle-plugin/pom.xml b/bundle-plugin/pom.xml index d0a6d43d9c5..7993dfecafd 100644 --- a/bundle-plugin/pom.xml +++ b/bundle-plugin/pom.xml @@ -22,9 +22,15 @@ com.google.guava guava + + org.apache.maven + maven-artifact + provided + org.apache.maven maven-plugin-api + provided org.apache.maven @@ -33,6 +39,15 @@ org.apache.maven.plugin-tools maven-plugin-annotations + + + org.apache.maven + maven-core + provided + + + org.apache.maven + maven-model provided diff --git a/config-class-plugin/pom.xml b/config-class-plugin/pom.xml index 0819073e953..50471514cc0 100644 --- a/config-class-plugin/pom.xml +++ b/config-class-plugin/pom.xml @@ -23,6 +23,7 @@ org.apache.maven maven-core 3.5.0 + provided com.yahoo.vespa @@ -46,13 +47,6 @@ org.apache.maven.plugins maven-compiler-plugin - - org.apache.maven.plugins - maven-install-plugin - - true - - org.apache.maven.plugins maven-javadoc-plugin diff --git a/vespa-application-maven-plugin/pom.xml b/vespa-application-maven-plugin/pom.xml index 10c494a7dd4..99248fb0907 100644 --- a/vespa-application-maven-plugin/pom.xml +++ b/vespa-application-maven-plugin/pom.xml @@ -17,9 +17,15 @@ 2.2.0 + + org.apache.maven + maven-core + provided + org.apache.maven maven-plugin-api + provided org.apache.maven.plugin-tools @@ -28,20 +34,18 @@ org.apache.maven maven-model + provided org.apache.maven maven-artifact + provided junit junit test - - org.apache.maven.plugins - maven-jar-plugin - commons-io commons-io -- cgit v1.2.3 From d64f143362a87c8f8bf31f594897cd7ce87f6bd6 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Fri, 22 Apr 2022 19:03:20 +0200 Subject: Read nodes less --- .../provision/maintenance/FailedExpirer.java | 53 ++++++++++++---------- .../hosted/provision/maintenance/NodeFailer.java | 11 ++--- 2 files changed, 33 insertions(+), 31 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 3274f12dbc6..1b0c7602f82 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 @@ -6,6 +6,7 @@ import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.Zone; import com.yahoo.jdisc.Metric; import com.yahoo.vespa.hosted.provision.Node; +import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.node.Agent; import com.yahoo.vespa.hosted.provision.node.History; @@ -66,45 +67,49 @@ public class FailedExpirer extends NodeRepositoryMaintainer { @Override protected double maintain() { - List remainingNodes = new ArrayList<>(nodeRepository.nodes().list(Node.State.failed) - .nodeType(NodeType.tenant, NodeType.host) - .asList()); + NodeList allNodes = nodeRepository.nodes().list(); + List remainingNodes = new ArrayList<>(allNodes.state(Node.State.failed) + .nodeType(NodeType.tenant, NodeType.host) + .asList()); - recycleIf(remainingNodes, node -> node.allocation().isEmpty()); - recycleIf(remainingNodes, node -> - !node.allocation().get().membership().cluster().isStateful() && - node.history().hasEventBefore(History.Event.Type.failed, clock().instant().minus(statelessExpiry))); - recycleIf(remainingNodes, node -> - node.allocation().get().membership().cluster().isStateful() && - node.history().hasEventBefore(History.Event.Type.failed, clock().instant().minus(statefulExpiry))); + recycleIf(remainingNodes, + node -> node.allocation().isEmpty(), + allNodes); + recycleIf(remainingNodes, + node -> !node.allocation().get().membership().cluster().isStateful() && + node.history().hasEventBefore(History.Event.Type.failed, clock().instant().minus(statelessExpiry)), + allNodes); + recycleIf(remainingNodes, + node -> node.allocation().get().membership().cluster().isStateful() && + node.history().hasEventBefore(History.Event.Type.failed, clock().instant().minus(statefulExpiry)), + allNodes); return 1.0; } /** Recycle the nodes matching condition, and remove those nodes from the nodes list. */ - private void recycleIf(List nodes, Predicate recycleCondition) { - List nodesToRecycle = nodes.stream().filter(recycleCondition).collect(Collectors.toList()); - nodes.removeAll(nodesToRecycle); - recycle(nodesToRecycle); + private void recycleIf(List failedNodes, Predicate recycleCondition, NodeList allNodes) { + List nodesToRecycle = failedNodes.stream().filter(recycleCondition).collect(Collectors.toList()); + failedNodes.removeAll(nodesToRecycle); + recycle(nodesToRecycle, allNodes); } /** Move eligible nodes to dirty or parked. This may be a subset of the given nodes */ - private void recycle(List nodes) { + private void recycle(List nodes, NodeList allNodes) { List nodesToRecycle = new ArrayList<>(); for (Node candidate : nodes) { - if (broken(candidate)) { + if (broken(candidate, allNodes)) { List unparkedChildren = !candidate.type().isHost() ? List.of() : - nodeRepository.nodes().list() - .childrenOf(candidate) - .not().state(Node.State.parked) - .mapToList(Node::hostname); + allNodes.childrenOf(candidate) + .not().state(Node.State.parked) + .mapToList(Node::hostname); if (unparkedChildren.isEmpty()) { nodeRepository.nodes().park(candidate.hostname(), false, Agent.FailedExpirer, "Parked by FailedExpirer due to hardware issue or high fail count"); } else { log.info(String.format("Expired failed node %s with hardware issue was not parked because of " + - "unparked children: %s", candidate.hostname(), - String.join(", ", unparkedChildren))); + "unparked children: %s", + candidate.hostname(), String.join(", ", unparkedChildren))); } } else { nodesToRecycle.add(candidate); @@ -114,8 +119,8 @@ public class FailedExpirer extends NodeRepositoryMaintainer { } /** Returns whether node is broken and cannot be recycled */ - private boolean broken(Node node) { - return NodeFailer.hasHardwareIssue(node, nodeRepository) || + private boolean broken(Node node, NodeList allNodes) { + return NodeFailer.hasHardwareIssue(node, allNodes) || (node.type().isHost() && node.status().failCount() >= maxAllowedFailures); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java index 237cbaedf46..3c5b20da4d0 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java @@ -164,7 +164,7 @@ public class NodeFailer extends NodeRepositoryMaintainer { for (Node node : activeNodes) { if (allSuspended(node, activeNodes)) { - Node host = node.parentHostname().flatMap(parent -> nodeRepository().nodes().node(parent)).orElse(node); + Node host = node.parentHostname().flatMap(parent -> activeNodes.node(parent)).orElse(node); if (host.type().isHost()) { List failureReports = reasonsToFailHost(host); if ( ! failureReports.isEmpty()) { @@ -188,8 +188,8 @@ public class NodeFailer extends NodeRepositoryMaintainer { } /** Returns whether node has any kind of hardware issue */ - static boolean hasHardwareIssue(Node node, NodeRepository nodeRepository) { - Node host = node.parentHostname().flatMap(parent -> nodeRepository.nodes().node(parent)).orElse(node); + static boolean hasHardwareIssue(Node node, NodeList allNodes) { + Node host = node.parentHostname().flatMap(parent -> allNodes.node(parent)).orElse(node); return reasonsToFailHost(host).size() > 0; } @@ -207,10 +207,7 @@ public class NodeFailer extends NodeRepositoryMaintainer { private boolean allSuspended(Node node, NodeList activeNodes) { if (!nodeRepository().nodes().suspended(node)) return false; if (node.parentHostname().isPresent()) return true; // optimization - return activeNodes.stream() - .filter(childNode -> childNode.parentHostname().isPresent() && - childNode.parentHostname().get().equals(node.hostname())) - .allMatch(nodeRepository().nodes()::suspended); + return activeNodes.childrenOf(node.hostname()).stream().allMatch(nodeRepository().nodes()::suspended); } /** -- cgit v1.2.3