summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java16
-rw-r--r--container-search/abi-spec.json1
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/QueryTree.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java1
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java15
-rw-r--r--hosted-tenant-base/pom.xml8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java19
9 files changed, 47 insertions, 34 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java
index 3decb189f52..1b577e2a203 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java
@@ -64,22 +64,6 @@ public class SchemaValidator {
validate(reader, reader.getName());
}
- @Deprecated
- /* @deprecated Will not give proper context from errors, use another validate method instead */
- public void validate(InputSource inputSource, String fileName) throws IOException {
- errorHandler.fileName = (fileName == null ? "input" : fileName);
- errorHandler.reader = inputSource.getCharacterStream();
- try {
- if ( ! driver.validate(inputSource)) {
- // Shouldn't happen, error handler should have thrown
- throw new RuntimeException("Aborting due to earlier XML errors.");
- }
- } catch (SAXException e) {
- // Shouldn't happen, error handler should have thrown
- throw new IllegalArgumentException("XML error in " + errorHandler.fileName + ": " + Exceptions.toMessageString(e));
- }
- }
-
private void validate(Reader reader, String fileName) throws IOException {
errorHandler.fileName = (fileName == null ? "input" : fileName);
// We need to read from a reader in error handler, so need to read all content into a new one
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index b4ac714b9d2..d4aadb11ba0 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -5363,6 +5363,7 @@
"public void addItem(com.yahoo.prelude.query.Item)",
"public void addItem(int, com.yahoo.prelude.query.Item)",
"public boolean isEmpty()",
+ "public com.yahoo.prelude.query.Item withRank(com.yahoo.prelude.query.Item)",
"public com.yahoo.prelude.query.Item and(com.yahoo.prelude.query.Item)",
"public static java.util.List getPositiveTerms(com.yahoo.prelude.query.Item)",
"public int treeSize()",
diff --git a/container-search/src/main/java/com/yahoo/search/query/QueryTree.java b/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
index 0655727b46b..6326097d9bd 100644
--- a/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
+++ b/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
@@ -110,6 +110,19 @@ public class QueryTree extends CompositeItem {
// -------------- Facade
/**
+ * Modifies this query to become the current query RANK with the given item.
+ *
+ * @return the resulting root item in this
+ */
+ public Item withRank(Item item) {
+ var result = new RankItem();
+ result.addItem(getRoot());
+ result.addItem(item);
+ setRoot(result);
+ return result;
+ }
+
+ /**
* Modifies this query to become the current query AND the given item.
*
* @return the resulting root item in this
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
index d3b166e03d0..0523ca1a7b6 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
@@ -56,7 +56,11 @@ public class DefaultPositionSearcher extends Searcher {
}
if (useV8GeoPositions && (location != null) && (location.getAttribute() != null)) {
var geoLoc = new GeoLocationItem(location);
- query.getModel().getQueryTree().and(geoLoc);
+ if (location.isGeoCircle() && location.degRadius() < 0) {
+ query.getModel().getQueryTree().withRank(geoLoc);
+ } else {
+ query.getModel().getQueryTree().and(geoLoc);
+ }
location = null;
query.getRanking().setLocation(location);
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java
index 8aef09d1a40..8546eb5a971 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java
@@ -73,7 +73,6 @@ public class ApplicationPackageValidator {
.map(Version::getMajor))
.orElseThrow(() -> new IllegalArgumentException("Could not determine wanted major version"));
for (var deprecatedElement : applicationPackage.deploymentSpec().deprecatedElements()) {
- if (applicationPackage.compileVersion().isEmpty()) continue;
if (deprecatedElement.majorVersion() >= wantedMajor) continue;
throw new IllegalArgumentException(deprecatedElement.humanReadableString());
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index f84060063d7..f45f7afd816 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -166,7 +166,7 @@ public class Flags {
public static final UnboundListFlag<String> ALLOWED_ATHENZ_PROXY_IDENTITIES = defineListFlag(
"allowed-athenz-proxy-identities", List.of(), String.class,
- List.of("bjorncs", "tokle"), "2021-02-10", "2022-06-01",
+ List.of("bjorncs", "tokle"), "2021-02-10", "2022-09-01",
"Allowed Athenz proxy identities",
"takes effect at redeployment");
@@ -228,17 +228,6 @@ public class Flags {
"Takes effect at redeploy",
ZONE_ID, APPLICATION_ID);
- public static final UnboundStringFlag JDK_VERSION = defineStringFlag(
- "jdk-version", "17",
- List.of("hmusum"), "2021-10-25", "2022-06-10",
- "JDK version to use on host and inside containers. Note application-id dimension only applies for container, " +
- "while hostname and node type applies for host.",
- "Takes effect on restart for Docker container and on next host-admin tick for host",
- APPLICATION_ID,
- TENANT_ID,
- HOSTNAME,
- NODE_TYPE);
-
public static final UnboundBooleanFlag IGNORE_THREAD_STACK_SIZES = defineFeatureFlag(
"ignore-thread-stack-sizes", false,
List.of("arnej"), "2021-11-12", "2022-06-01",
@@ -411,7 +400,7 @@ public class Flags {
public static final UnboundBooleanFlag USE_YUM_PROXY_V2 = defineFeatureFlag(
"use-yumproxy-v2", false,
- List.of("mortent"), "2022-05-05", "2022-06-01",
+ List.of("tokle"), "2022-05-05", "2022-07-01",
"Use yumproxy-v2",
"Takes effect on host admin restart",
HOSTNAME);
diff --git a/hosted-tenant-base/pom.xml b/hosted-tenant-base/pom.xml
index 734c096d373..a5b9c5d3f82 100644
--- a/hosted-tenant-base/pom.xml
+++ b/hosted-tenant-base/pom.xml
@@ -223,16 +223,20 @@
</configuration>
</execution>
<execution>
- <id>enforce-no-jupiter-compile-scope</id>
+ <id>enforce-just-our-jupiter</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
- <!-- Fail validation for apps with junit-jupiter-api in compile scope. -->
+ <!-- Fail validation for apps with junit-jupiter-api in compile scope, or on wrong version. -->
<excludes>
<exclude>org.junit.jupiter:junit-jupiter-api:*:jar:compile</exclude>
+ <exclude>org.junit.jupiter:junit-jupiter-api:*:jar:provided</exclude>
+ <exclude>org.junit.jupiter:junit-jupiter-api:*:jar:runtime</exclude>
+ <exclude>org.junit.jupiter:junit-jupiter-api:(,${junit.version}):jar:*</exclude>
+ <exclude>org.junit.jupiter:junit-jupiter-api:(${junit.version},):jar:*</exclude>
</excludes>
</bannedDependencies>
</rules>
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
index 0fa406ab0ef..4e2447f58e1 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
@@ -194,7 +194,7 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
.collect(Collectors.toMap(Node::hostname, Function.identity())));
nodes.stream()
- .filter(node -> node.allocation().isPresent())
+ .filter(node -> node.allocation().isPresent() && !node.status().wantToDeprovision())
.flatMap(node -> node.parentHostname().stream())
.distinct()
.forEach(hostsByHostname::remove);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
index 30d0f673fe1..451bcfb0b78 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
@@ -574,6 +574,25 @@ public class DynamicProvisioningMaintainerTest {
assertEquals(2, provisioningTester.activate(applicationId, prepared).size());
}
+ @Test
+ public void deprovision_parked_node_with_allocation() {
+ var tester = new DynamicProvisioningTester();
+ tester.hostProvisioner.with(Behaviour.failProvisioning);
+ Node host4 = tester.addNode("host4", Optional.empty(), NodeType.host, Node.State.parked);
+ Node host41 = tester.addNode("host4-1", Optional.of("host4"), NodeType.tenant, Node.State.parked, DynamicProvisioningTester.tenantApp);
+ tester.nodeRepository.nodes().deprovision("host4", Agent.operator, Instant.now());
+
+ assertEquals(Optional.of(true), tester.nodeRepository.nodes().node("host4").map(n -> n.status().wantToDeprovision()));
+ assertEquals(Optional.of(Node.State.parked), tester.nodeRepository.nodes().node("host4").map(Node::state));
+ assertEquals(Optional.of(true), tester.nodeRepository.nodes().node("host4-1").map(n -> n.status().wantToDeprovision()));
+ assertEquals(Optional.of(Node.State.parked), tester.nodeRepository.nodes().node("host4-1").map(Node::state));
+
+ tester.maintainer.maintain();
+
+ assertEquals(Optional.empty(), tester.nodeRepository.nodes().node("host4"));
+ assertEquals(Optional.empty(), tester.nodeRepository.nodes().node("host4-1"));
+ }
+
private void assertCfghost3IsActive(DynamicProvisioningTester tester) {
assertEquals(5, tester.nodeRepository.nodes().list(Node.State.active).size());
assertEquals(3, tester.nodeRepository.nodes().list(Node.State.active).nodeType(NodeType.confighost).size());