diff options
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()); |