summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-04-25 08:31:21 +0200
committerHarald Musum <musum@yahooinc.com>2022-04-25 08:31:21 +0200
commit2564b647feef1cce10235a85df4eede030aa4959 (patch)
tree5f8525e77185413f15387578f5429b85023e2b89
parentebc1ba048760b2ea9d7c3039c3dcedacd2fe5f47 (diff)
parent42dfc8a672fa4e088246fd8d7430a61b724bcbdf (diff)
Merge branch 'master' into hmusum/upgrade-curator
-rw-r--r--abi-check-plugin/pom.xml2
-rw-r--r--bundle-plugin/pom.xml17
-rw-r--r--config-class-plugin/pom.xml8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java53
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java11
-rw-r--r--parent/pom.xml22
-rw-r--r--tenant-base/pom.xml2
-rw-r--r--vespa-application-maven-plugin/pom.xml12
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>