diff options
-rw-r--r-- | abi-check-plugin/pom.xml | 2 | ||||
-rw-r--r-- | bundle-plugin/pom.xml | 17 | ||||
-rw-r--r-- | config-class-plugin/pom.xml | 8 | ||||
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java | 53 | ||||
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java | 11 | ||||
-rw-r--r-- | parent/pom.xml | 22 | ||||
-rw-r--r-- | tenant-base/pom.xml | 2 | ||||
-rw-r--r-- | vespa-application-maven-plugin/pom.xml | 12 |
8 files changed, 75 insertions, 52 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 @@ <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> + <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> + <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> diff --git a/bundle-plugin/pom.xml b/bundle-plugin/pom.xml index 8f52187357f..7993dfecafd 100644 --- a/bundle-plugin/pom.xml +++ b/bundle-plugin/pom.xml @@ -24,17 +24,30 @@ </dependency> <dependency> <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> - <version>3.8.5</version> + <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-archiver</artifactId> - <version>3.5.2</version> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> <scope>provided</scope> </dependency> <dependency> 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 @@ <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> <version>3.5.0</version> + <scope>provided</scope> </dependency> <dependency> <groupId>com.yahoo.vespa</groupId> @@ -48,13 +49,6 @@ </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-install-plugin</artifactId> - <configuration> - <updateReleaseInfo>true</updateReleaseInfo> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <doclint>${doclint},-missing</doclint> 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<Node> remainingNodes = new ArrayList<>(nodeRepository.nodes().list(Node.State.failed) - .nodeType(NodeType.tenant, NodeType.host) - .asList()); + NodeList allNodes = nodeRepository.nodes().list(); + List<Node> 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<Node> nodes, Predicate<Node> recycleCondition) { - List<Node> nodesToRecycle = nodes.stream().filter(recycleCondition).collect(Collectors.toList()); - nodes.removeAll(nodesToRecycle); - recycle(nodesToRecycle); + private void recycleIf(List<Node> failedNodes, Predicate<Node> recycleCondition, NodeList allNodes) { + List<Node> 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<Node> nodes) { + private void recycle(List<Node> nodes, NodeList allNodes) { List<Node> nodesToRecycle = new ArrayList<>(); for (Node candidate : nodes) { - if (broken(candidate)) { + if (broken(candidate, allNodes)) { List<String> 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<String> 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); } /** diff --git a/parent/pom.xml b/parent/pom.xml index f9d585327fc..0dc2db9d52c 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -651,23 +651,28 @@ </dependency> <dependency> <groupId>org.apache.maven</groupId> + <artifactId>maven-archiver</artifactId> + <version>${maven-archiver.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> <artifactId>maven-artifact</artifactId> - <version>3.5.0</version> + <version>${maven-core.version}</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> - <version>3.5.0</version> + <version>${maven-core.version}</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-model</artifactId> - <version>3.5.0</version> + <version>${maven-core.version}</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> - <version>${maven-plugin-tools.version}</version> + <version>${maven-plugin-api.version}</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> @@ -940,16 +945,19 @@ <hdrhistogram.version>2.1.12</hdrhistogram.version> <jna.version>5.9.0</jna.version> <junit.version>5.8.1</junit.version> + <maven-archiver.version>3.5.2</maven-archiver.version> <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version> <maven-bundle-plugin.version>5.1.2</maven-bundle-plugin.version> - <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> - <maven-dependency-plugin.version>3.2.0</maven-dependency-plugin.version> <!-- NOTE: When upgrading, also update explicit versions in tenant base poms! --> + <maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version> + <maven-core.version>3.8.5</maven-core.version> + <maven-dependency-plugin.version>3.3.0</maven-dependency-plugin.version> <!-- NOTE: When upgrading, also update explicit versions in tenant base poms! --> <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version> <maven-enforcer-plugin.version>3.0.0</maven-enforcer-plugin.version> <maven-install-plugin.version>3.0.0-M1</maven-install-plugin.version> <maven-jar-plugin.version>3.2.0</maven-jar-plugin.version> <maven-javadoc-plugin.version>3.3.1</maven-javadoc-plugin.version> - <maven-plugin-tools.version>3.6.1</maven-plugin-tools.version> + <maven-plugin-api.version>3.8.5</maven-plugin-api.version> + <maven-plugin-tools.version>3.6.4</maven-plugin-tools.version> <maven-resources-plugin.version>3.2.0</maven-resources-plugin.version> <maven-shade-plugin.version>3.3.0</maven-shade-plugin.version> <maven-site-plugin.version>3.9.1</maven-site-plugin.version> 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 @@ <!-- dependencies, see (3) above --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> - <version>3.2.0</version> + <version>3.3.0</version> <executions> <execution> <!-- JAR-like dependencies --> 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 @@ -19,7 +19,13 @@ <dependencies> <dependency> <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> + <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> @@ -28,10 +34,12 @@ <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-model</artifactId> + <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-artifact</artifactId> + <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> @@ -39,10 +47,6 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - </dependency> - <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.7</version> |