summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java3
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java23
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java6
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java5
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeZooKeeperDatabase.java136
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java18
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java8
-rw-r--r--container-apache-http-client-bundle/pom.xml10
-rw-r--r--dependency-versions/pom.xml6
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java11
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java9
-rw-r--r--maven-plugins/allowed-maven-dependencies.txt6
-rw-r--r--parent/pom.xml10
-rw-r--r--renovate.json27
-rw-r--r--streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.cpp6
-rw-r--r--streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.h2
-rw-r--r--streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.cpp6
-rw-r--r--streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.h2
-rw-r--r--vespa-dependencies-enforcer/allowed-maven-dependencies.txt8
-rw-r--r--vespa-enforcer-extensions/pom.xml2
20 files changed, 253 insertions, 51 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java
index dd2ba5bf5f1..3e520d95d2c 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java
@@ -8,7 +8,6 @@ import com.yahoo.vdslib.state.Node;
import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.database.DatabaseHandler;
-import com.yahoo.vespa.clustercontroller.core.database.ZooKeeperDatabaseFactory;
import com.yahoo.vespa.clustercontroller.core.hostinfo.HostInfo;
import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
import com.yahoo.vespa.clustercontroller.core.listeners.SlobrokListener;
@@ -152,7 +151,7 @@ public class FleetController implements NodeListener, SlobrokListener, SystemSta
options.nodeStateRequestTimeoutEarliestPercentage(),
options.nodeStateRequestTimeoutLatestPercentage(),
options.nodeStateRequestRoundTripTimeMaxSeconds());
- var database = new DatabaseHandler(context, new ZooKeeperDatabaseFactory(context), timer, options.zooKeeperServerAddress(), timer);
+ var database = new DatabaseHandler(context, options.dbFactoryFn().apply(context), timer, options.zooKeeperServerAddress(), timer);
var lookUp = new SlobrokClient(context, timer, options.slobrokConnectionSpecs());
var stateGenerator = new StateChangeHandler(context, timer, log);
var stateBroadcaster = new SystemStateBroadcaster(context, timer, timer);
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java
index d3b2bdf3d8d..a0efaa70b58 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java
@@ -5,6 +5,9 @@ import ai.vespa.validation.Validation;
import com.yahoo.vdslib.distribution.ConfiguredNode;
import com.yahoo.vdslib.distribution.Distribution;
import com.yahoo.vdslib.state.NodeType;
+import com.yahoo.vespa.clustercontroller.core.database.DatabaseFactory;
+import com.yahoo.vespa.clustercontroller.core.database.ZooKeeperDatabaseFactory;
+
import java.time.Duration;
import java.util.Collection;
import java.util.Collections;
@@ -13,6 +16,7 @@ import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
+import java.util.function.Function;
/**
* Immutable class representing all the options that can be set in the fleetcontroller.
@@ -128,6 +132,9 @@ public class FleetControllerOptions {
private final int maxNumberOfGroupsAllowedToBeDown;
+ private final Function<FleetControllerContext, DatabaseFactory> dbFactoryFn;
+
+ // TODO less impressive length...!
private FleetControllerOptions(String clusterName,
int fleetControllerIndex,
int fleetControllerCount,
@@ -168,7 +175,8 @@ public class FleetControllerOptions {
boolean clusterFeedBlockEnabled,
Map<String, Double> clusterFeedBlockLimit,
double clusterFeedBlockNoiseLevel,
- int maxNumberOfGroupsAllowedToBeDown) {
+ int maxNumberOfGroupsAllowedToBeDown,
+ Function<FleetControllerContext, DatabaseFactory> dbFactoryFn) {
this.clusterName = clusterName;
this.fleetControllerIndex = fleetControllerIndex;
this.fleetControllerCount = fleetControllerCount;
@@ -210,6 +218,7 @@ public class FleetControllerOptions {
this.clusterFeedBlockLimit = clusterFeedBlockLimit;
this.clusterFeedBlockNoiseLevel = clusterFeedBlockNoiseLevel;
this.maxNumberOfGroupsAllowedToBeDown = maxNumberOfGroupsAllowedToBeDown;
+ this.dbFactoryFn = dbFactoryFn;
}
public Duration getMaxDeferredTaskVersionWaitTime() {
@@ -382,6 +391,8 @@ public class FleetControllerOptions {
public int maxNumberOfGroupsAllowedToBeDown() { return maxNumberOfGroupsAllowedToBeDown; }
+ public Function<FleetControllerContext, DatabaseFactory> dbFactoryFn() { return dbFactoryFn; }
+
public static class Builder {
private String clusterName;
@@ -425,6 +436,7 @@ public class FleetControllerOptions {
private Map<String, Double> clusterFeedBlockLimit = Collections.emptyMap();
private double clusterFeedBlockNoiseLevel = 0.01;
private int maxNumberOfGroupsAllowedToBeDown = 1;
+ private Function<FleetControllerContext, DatabaseFactory> dbFactoryFn = ZooKeeperDatabaseFactory::new;
public Builder(String clusterName, Collection<ConfiguredNode> nodes) {
this.clusterName = clusterName;
@@ -677,6 +689,11 @@ public class FleetControllerOptions {
return this;
}
+ public Builder setDbFactoryFn(Function<FleetControllerContext, DatabaseFactory> fn) {
+ this.dbFactoryFn = fn;
+ return this;
+ }
+
public FleetControllerOptions build() {
return new FleetControllerOptions(clusterName,
index,
@@ -718,7 +735,8 @@ public class FleetControllerOptions {
clusterFeedBlockEnabled,
clusterFeedBlockLimit,
clusterFeedBlockNoiseLevel,
- maxNumberOfGroupsAllowedToBeDown);
+ maxNumberOfGroupsAllowedToBeDown,
+ dbFactoryFn);
}
public static Builder copy(FleetControllerOptions options) {
@@ -764,6 +782,7 @@ public class FleetControllerOptions {
builder.clusterFeedBlockLimit = Map.copyOf(options.clusterFeedBlockLimit);
builder.clusterFeedBlockNoiseLevel = options.clusterFeedBlockNoiseLevel;
builder.maxNumberOfGroupsAllowedToBeDown = options.maxNumberOfGroupsAllowedToBeDown;
+ builder.dbFactoryFn = options.dbFactoryFn;
return builder;
}
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java
index a77c22da835..6419e5f05e7 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java
@@ -9,9 +9,9 @@ package com.yahoo.vespa.clustercontroller.core.database;
public interface DatabaseFactory {
class Params {
- String dbAddress;
- int dbSessionTimeout;
- Database.DatabaseListener listener;
+ public String dbAddress;
+ public int dbSessionTimeout;
+ public Database.DatabaseListener listener;
Params databaseAddress(String address) { this.dbAddress = address; return this; }
Params databaseSessionTimeout(int timeout) { this.dbSessionTimeout = timeout; return this; }
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java
index 0e48a9bbc45..1e13ed4eef5 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java
@@ -14,9 +14,12 @@ import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
-@ExtendWith(CleanupZookeeperLogsOnSuccess.class)
public class DistributionBitCountTest extends FleetControllerTest {
+ DistributionBitCountTest() {
+ useRealZooKeeperInTest(false);
+ }
+
private FleetControllerOptions setUpSystem() throws Exception {
List<ConfiguredNode> configuredNodes = new ArrayList<>();
for (int i = 0 ; i < 10; i++) {
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeZooKeeperDatabase.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeZooKeeperDatabase.java
new file mode 100644
index 00000000000..057d137650f
--- /dev/null
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeZooKeeperDatabase.java
@@ -0,0 +1,136 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.clustercontroller.core;
+
+import com.yahoo.vdslib.state.Node;
+import com.yahoo.vdslib.state.NodeState;
+import com.yahoo.vespa.clustercontroller.core.database.Database;
+import com.yahoo.vespa.clustercontroller.core.database.DatabaseFactory;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Memory-backed fake DB implementation that tries to mirror the semantics of the
+ * (synchronous) ZooKeeper DB implementation. By itself this fake acts as if a quorum
+ * with a _single_, local ZK instance has been configured. This DB instance cannot be
+ * used across multiple cluster controller instances.
+ *
+ * Threading note: we expect all invocations on this instance to happen from the
+ * main cluster controller thread (i.e. "as-if" single threaded), but we wrap everything
+ * in a mutex to stay on the safe side since this isn't explicitly documented as
+ * part of the API,
+ */
+public class FakeZooKeeperDatabase extends Database {
+
+ public static class Factory implements DatabaseFactory {
+ private final FleetControllerContext context;
+ public Factory(FleetControllerContext context) {
+ this.context = context;
+ }
+ @Override
+ public Database create(Params params) {
+ return new FakeZooKeeperDatabase(context, params.listener);
+ }
+ }
+
+ private final FleetControllerContext context;
+ private final Database.DatabaseListener listener;
+
+ private final Object mutex = new Object();
+ private boolean closed = false;
+ private Integer persistedLatestStateVersion = null;
+ private Map<Integer, Integer> persistedLeaderVotes = new TreeMap<>();
+ private Map<Node, NodeState> persistedWantedStates = new TreeMap<>();
+ private Map<Node, Long> persistedStartTimestamps = new TreeMap<>();
+ private ClusterStateBundle persistedBundle = ClusterStateBundle.ofBaselineOnly(AnnotatedClusterState.emptyState());
+
+ public FakeZooKeeperDatabase(FleetControllerContext context, DatabaseListener listener) {
+ this.context = context;
+ this.listener = listener;
+ }
+
+ @Override
+ public void close() {
+ synchronized (mutex) {
+ closed = true;
+ }
+ }
+
+ @Override
+ public boolean isClosed() {
+ synchronized (mutex) {
+ return closed;
+ }
+ }
+
+ @Override
+ public boolean storeMasterVote(int voteForNode) {
+ Map<Integer, Integer> voteState;
+ synchronized (mutex) {
+ persistedLeaderVotes.put(context.id().index(), voteForNode);
+ voteState = Map.copyOf(persistedLeaderVotes);
+ }
+ listener.handleMasterData(voteState);
+ return true;
+ }
+
+ @Override
+ public boolean storeLatestSystemStateVersion(int version) {
+ synchronized (mutex) {
+ persistedLatestStateVersion = version;
+ return true;
+ }
+ }
+
+ @Override
+ public Integer retrieveLatestSystemStateVersion() {
+ synchronized (mutex) {
+ return persistedLatestStateVersion;
+ }
+ }
+
+ @Override
+ public boolean storeWantedStates(Map<Node, NodeState> states) {
+ synchronized (mutex) {
+ persistedWantedStates = Map.copyOf(states);
+ }
+ return true;
+ }
+
+ @Override
+ public Map<Node, NodeState> retrieveWantedStates() {
+ synchronized (mutex) {
+ return Map.copyOf(persistedWantedStates);
+ }
+ }
+
+ @Override
+ public boolean storeStartTimestamps(Map<Node, Long> timestamps) {
+ synchronized (mutex) {
+ persistedStartTimestamps = Map.copyOf(timestamps);
+ return true;
+ }
+ }
+
+ @Override
+ public Map<Node, Long> retrieveStartTimestamps() {
+ synchronized (mutex) {
+ return Map.copyOf(persistedStartTimestamps);
+ }
+ }
+
+ @Override
+ public boolean storeLastPublishedStateBundle(ClusterStateBundle stateBundle) {
+ synchronized (mutex) {
+ persistedBundle = stateBundle;
+ return true;
+ }
+ }
+
+ @Override
+ public ClusterStateBundle retrieveLastPublishedStateBundle() {
+ synchronized (mutex) {
+ return persistedBundle;
+ }
+ }
+}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
index 400f4a14d24..ee0506070b5 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
@@ -16,7 +16,6 @@ import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vdslib.state.NodeType;
import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.database.DatabaseHandler;
-import com.yahoo.vespa.clustercontroller.core.database.ZooKeeperDatabaseFactory;
import com.yahoo.vespa.clustercontroller.core.rpc.RPCCommunicator;
import com.yahoo.vespa.clustercontroller.core.rpc.RpcServer;
import com.yahoo.vespa.clustercontroller.core.rpc.SlobrokClient;
@@ -49,13 +48,14 @@ import static org.junit.jupiter.api.Assertions.fail;
*/
public abstract class FleetControllerTest implements Waiter {
- private static final Logger log = Logger.getLogger(FleetControllerTest.class.getName());
+ protected static final Logger log = Logger.getLogger(FleetControllerTest.class.getName());
private static final int DEFAULT_NODE_COUNT = 10;
private final Duration timeout = Duration.ofSeconds(30);
protected Slobrok slobrok;
protected FleetControllerOptions options;
+ private boolean useRealZooKeeperInTest = true;
ZooKeeperTestServer zooKeeperServer;
protected final List<FleetController> fleetControllers = new ArrayList<>();
protected List<DummyVdsNode> nodes = new ArrayList<>();
@@ -73,6 +73,10 @@ public abstract class FleetControllerTest implements Waiter {
LogSetup.initVespaLogging("fleetcontroller");
}
+ protected void useRealZooKeeperInTest(boolean useRealZk) {
+ this.useRealZooKeeperInTest = useRealZk;
+ }
+
protected static FleetControllerOptions.Builder defaultOptions() {
return defaultOptions(IntStream.range(0, DEFAULT_NODE_COUNT)
.mapToObj(i -> new ConfiguredNode(i, false))
@@ -121,7 +125,7 @@ public abstract class FleetControllerTest implements Waiter {
var log = new EventLog(timer, metricUpdater);
var cluster = new ContentCluster(options.clusterName(), options.nodes(), options.storageDistribution());
var stateGatherer = new NodeStateGatherer(timer, timer, log);
- var database = new DatabaseHandler(context, new ZooKeeperDatabaseFactory(context), timer, options.zooKeeperServerAddress(), timer);
+ var database = new DatabaseHandler(context, options.dbFactoryFn().apply(context), timer, options.zooKeeperServerAddress(), timer);
// Setting this <1000 ms causes ECONNREFUSED on socket trying to connect to ZK server, in ZooKeeper,
// after creating a new ZooKeeper (session). This causes ~10s extra time to connect after connection loss.
// Reasons unknown. Larger values like the default 10_000 causes that much additional running time for some tests.
@@ -139,7 +143,13 @@ public abstract class FleetControllerTest implements Waiter {
}
protected FleetControllerOptions setUpFleetController(Timer timer, FleetControllerOptions.Builder builder) throws Exception {
- setUpZooKeeperServer(builder);
+ // TODO consolidate CC setup in tests; currently partial duplication of
+ // setup/init code across test subclasses.
+ if (useRealZooKeeperInTest) {
+ setUpZooKeeperServer(builder);
+ } else {
+ builder.setDbFactoryFn(FakeZooKeeperDatabase.Factory::new);
+ }
builder.setSlobrokConnectionSpecs(getSlobrokConnectionSpecs(slobrok));
options = builder.build();
startFleetController(timer);
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
index 01987cf1f4c..9e9206526e5 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
@@ -9,7 +9,6 @@ import com.yahoo.vdslib.state.NodeType;
import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.testutils.StateWaiter;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import java.time.Duration;
import java.util.ArrayList;
@@ -23,7 +22,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-@ExtendWith(CleanupZookeeperLogsOnSuccess.class)
public class StateChangeTest extends FleetControllerTest {
private final FakeTimer timer = new FakeTimer();
@@ -31,6 +29,10 @@ public class StateChangeTest extends FleetControllerTest {
private FleetController ctrl;
private DummyCommunicator communicator;
+ StateChangeTest() {
+ useRealZooKeeperInTest(false);
+ }
+
private void initialize(FleetControllerOptions.Builder builder) throws Exception {
List<Node> nodes = new ArrayList<>();
for (int i = 0; i < builder.nodes().size(); ++i) {
@@ -38,7 +40,7 @@ public class StateChangeTest extends FleetControllerTest {
nodes.add(new Node(NodeType.DISTRIBUTOR, i));
}
- setUpZooKeeperServer(builder);
+ builder.setDbFactoryFn(FakeZooKeeperDatabase.Factory::new);
communicator = new DummyCommunicator(nodes, timer);
boolean start = false;
FleetControllerOptions options = builder.build();
diff --git a/container-apache-http-client-bundle/pom.xml b/container-apache-http-client-bundle/pom.xml
index 48a8131b73d..e580364a51a 100644
--- a/container-apache-http-client-bundle/pom.xml
+++ b/container-apache-http-client-bundle/pom.xml
@@ -77,7 +77,15 @@
<Bundle-Version>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</Bundle-Version>
<Export-Package>org.apache.hc.*;version=1.0.0;-noimport:=true,org.apache.http.*;version=1.0.0;-noimport:=true</Export-Package>
<Embed-Dependency>*;scope=compile;type=!pom;inline=true</Embed-Dependency>
- <Import-Package>!javax.servlet,javax.*,org.slf4j,org.ietf.jgss</Import-Package>
+ <Import-Package>
+ !javax.servlet,
+ javax.*,
+ org.slf4j,
+ org.slf4j.spi,
+ org.slf4j.helpers,
+ org.slf4j.event,
+ org.ietf.jgss
+ </Import-Package>
<Embed-Transitive>true</Embed-Transitive>
<_nouses>true</_nouses>
</instructions>
diff --git a/dependency-versions/pom.xml b/dependency-versions/pom.xml
index 8cec79d4216..deb82e9e2c7 100644
--- a/dependency-versions/pom.xml
+++ b/dependency-versions/pom.xml
@@ -93,6 +93,7 @@
<curator.vespa.version>5.5.0</curator.vespa.version>
<dropwizard.metrics.vespa.version>4.1.12.1</dropwizard.metrics.vespa.version> <!-- ZK 3.9.1 requires this -->
<eclipse-collections.vespa.version>11.1.0</eclipse-collections.vespa.version>
+ <eclipse-sisu.vespa.version>0.9.0.M2</eclipse-sisu.vespa.version>
<felix.vespa.version>7.0.5</felix.vespa.version>
<felix.log.vespa.version>1.3.0</felix.log.vespa.version>
<findbugs.vespa.version>3.0.2</findbugs.vespa.version> <!-- Should be kept in sync with guava -->
@@ -102,6 +103,7 @@
<icu4j.vespa.version>74.1</icu4j.vespa.version>
<java-jjwt.vespa.version>0.11.5</java-jjwt.vespa.version>
<java-jwt.vespa.version>4.4.0</java-jwt.vespa.version>
+ <javax.annotation.vespa.version>1.2</javax.annotation.vespa.version>
<jaxb.runtime.vespa.version>4.0.4</jaxb.runtime.vespa.version>
<jetty.vespa.version>11.0.18</jetty.vespa.version>
<jetty-servlet-api.vespa.version>5.0.2</jetty-servlet-api.vespa.version>
@@ -150,7 +152,7 @@
<maven-assembly-plugin.vespa.version>3.6.0</maven-assembly-plugin.vespa.version>
<maven-bundle-plugin.vespa.version>5.1.9</maven-bundle-plugin.vespa.version>
<maven-compiler-plugin.vespa.version>3.11.0</maven-compiler-plugin.vespa.version>
- <maven-core.vespa.version>3.9.5</maven-core.vespa.version>
+ <maven-core.vespa.version>3.9.6</maven-core.vespa.version>
<maven-dependency-plugin.vespa.version>3.6.1</maven-dependency-plugin.vespa.version>
<maven-deploy-plugin.vespa.version>3.1.1</maven-deploy-plugin.vespa.version>
<maven-enforcer-plugin.vespa.version>3.4.1</maven-enforcer-plugin.vespa.version>
@@ -158,7 +160,7 @@
<maven-gpg-plugin.vespa.version>3.1.0</maven-gpg-plugin.vespa.version>
<maven-install-plugin.vespa.version>3.1.1</maven-install-plugin.vespa.version>
<maven-jar-plugin.vespa.version>3.3.0</maven-jar-plugin.vespa.version>
- <maven-javadoc-plugin.vespa.version>3.6.2</maven-javadoc-plugin.vespa.version>
+ <maven-javadoc-plugin.vespa.version>3.6.3</maven-javadoc-plugin.vespa.version>
<maven-plugin-api.vespa.version>${maven-core.vespa.version}</maven-plugin-api.vespa.version>
<maven-plugin-tools.vespa.version>3.10.2</maven-plugin-tools.vespa.version>
<maven-resources-plugin.vespa.version>3.3.1</maven-resources-plugin.vespa.version>
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 95dc1cac9f2..94cba73af39 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -210,7 +210,7 @@ public class Flags {
public static final UnboundIntFlag MAX_ACTIVATION_INHIBITED_OUT_OF_SYNC_GROUPS = defineIntFlag(
"max-activation-inhibited-out-of-sync-groups", 0,
- List.of("vekterli"), "2021-02-19", "2023-12-01",
+ List.of("vekterli"), "2021-02-19", "2024-03-01",
"Allows replicas in up to N content groups to not be activated " +
"for query visibility if they are out of sync with a majority of other replicas",
"Takes effect at redeployment",
@@ -218,7 +218,7 @@ public class Flags {
public static final UnboundDoubleFlag MIN_NODE_RATIO_PER_GROUP = defineDoubleFlag(
"min-node-ratio-per-group", 0.0,
- List.of("geirst", "vekterli"), "2021-07-16", "2023-12-01",
+ List.of("geirst", "vekterli"), "2021-07-16", "2024-03-01",
"Minimum ratio of nodes that have to be available (i.e. not Down) in any hierarchic content cluster group for the group to be Up",
"Takes effect at redeployment",
INSTANCE_ID);
@@ -432,6 +432,13 @@ public class Flags {
"Takes effect immediately",
CONSOLE_USER_EMAIL);
+ public static final UnboundBooleanFlag RESTART_ON_DEPLOY_WHEN_ONNX_MODEL_CHANGES = defineFeatureFlag(
+ "restart-on-deploy-when-onnx-model-changes", false,
+ List.of("hmusum"), "2023-12-04", "2024-01-04",
+ "If set, restart on deploy if onnx model or onnx model options used by a container cluster change",
+ "Takes effect at redeployment",
+ INSTANCE_ID);
+
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, List<String> owners,
String createdAt, String expiresAt, String description,
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
index acebca05fdb..1c4e13cf44b 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
@@ -13,6 +13,7 @@ import java.util.Set;
import java.util.function.Predicate;
import java.util.regex.Pattern;
+import static com.yahoo.vespa.flags.Dimension.CLOUD_ACCOUNT;
import static com.yahoo.vespa.flags.Dimension.INSTANCE_ID;
import static com.yahoo.vespa.flags.Dimension.CLUSTER_ID;
import static com.yahoo.vespa.flags.Dimension.CLUSTER_TYPE;
@@ -414,6 +415,14 @@ public class PermanentFlags {
"Takes effect on next run of CertPoolMaintainer"
);
+ public static final UnboundBooleanFlag ENCLAVE_WITHOUT_WIREGUARD = defineFeatureFlag(
+ "enclave-without-wireguard", false,
+ "Do not use wireguard for inclave. This should only be set for a single legacy account, " +
+ "and removed once that account is no longer in use with us",
+ "Affects generated terraform code, and ip allocation on host provisioning",
+ CLOUD_ACCOUNT
+ );
+
private PermanentFlags() {}
private static UnboundBooleanFlag defineFeatureFlag(
diff --git a/maven-plugins/allowed-maven-dependencies.txt b/maven-plugins/allowed-maven-dependencies.txt
index 3972ddcd085..1c66b81b448 100644
--- a/maven-plugins/allowed-maven-dependencies.txt
+++ b/maven-plugins/allowed-maven-dependencies.txt
@@ -13,7 +13,7 @@ com.google.j2objc:j2objc-annotations:2.8
commons-codec:commons-codec:${commons-codec.vespa.version}
commons-io:commons-io:${commons-io.vespa.version}
jakarta.inject:jakarta.inject-api:${jakarta.inject.vespa.version}
-javax.annotation:javax.annotation-api:${commons-logging.vespa.version}
+javax.annotation:javax.annotation-api:${javax.annotation.vespa.version}
javax.inject:javax.inject:${javax.inject.vespa.version}
junit:junit:${junit4.vespa.version}
net.bytebuddy:byte-buddy-agent:${byte-buddy.vespa.version}
@@ -55,8 +55,8 @@ org.codehaus.plexus:plexus-sec-dispatcher:2.0
org.codehaus.plexus:plexus-utils:${maven-shade-plugin.vespa.version}
org.eclipse.aether:aether-api:1.0.0.v20140518
org.eclipse.aether:aether-util:1.0.0.v20140518
-org.eclipse.sisu:org.eclipse.sisu.inject:0.3.5
-org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.5
+org.eclipse.sisu:org.eclipse.sisu.inject:${eclipse-sisu.vespa.version}
+org.eclipse.sisu:org.eclipse.sisu.plexus:${eclipse-sisu.vespa.version}
org.hamcrest:hamcrest-core:${hamcrest.vespa.version}
org.hamcrest:hamcrest:${hamcrest.vespa.version}
org.iq80.snappy:snappy:0.4
diff --git a/parent/pom.xml b/parent/pom.xml
index 7642b87ac7b..4009c78a0c1 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -992,6 +992,16 @@
<version>${eclipse-collections.vespa.version}</version>
</dependency>
<dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.inject</artifactId>
+ <version>${eclipse-sisu.vespa.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.plexus</artifactId>
+ <version>${eclipse-sisu.vespa.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.eclipse.collections</groupId>
<artifactId>eclipse-collections-api</artifactId>
<version>${eclipse-collections.vespa.version}</version>
diff --git a/renovate.json b/renovate.json
index a87bb9a67c6..c8913bd4783 100644
--- a/renovate.json
+++ b/renovate.json
@@ -5,19 +5,20 @@
],
"dependencyDashboardApproval": true,
"transitiveRemediation": true,
- "prHourlyLimit": 10,
- "prConcurrentLimit": 10,
+ "prHourlyLimit": 20,
+ "prConcurrentLimit": 20,
"ignorePaths": [],
- "ignoreDeps": [
- "com.github.spotbugs:spotbugs-annotations",
- "com.yahoo.vespa.bundle-plugin:test-bundles",
- "com.yahoo.vespa.jdisc_core:test_bundles",
- "com.yahoo.vespa:cloud-tenant-base",
- "com.yahoo.vespa:container-dependency-versions",
- "com.yahoo.vespa:hosted-tenant-base",
- "com.yahoo.vespa:parent",
- "com.yahoo.vespa:zookeeper-server-parent",
- "github.com/go-json-experiment/json",
- "javax.servlet:javax.servlet-api"
+ "ignoreDeps": [],
+ "schedule": ["before 6am on thursday"],
+ "packageRules": [
+ {
+ "matchPackagePatterns": ["^com\\.yahoo\\.vespa"],
+ "matchManagers": ["maven"],
+ "enabled": false
+ },
+ {
+ "minimumReleaseAge": "14 days",
+ "dependencyDashboardApproval": false
+ }
]
}
diff --git a/streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.cpp b/streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.cpp
index 95ebdfe9a90..7dd40348f47 100644
--- a/streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.cpp
+++ b/streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.cpp
@@ -39,10 +39,8 @@ void FloatFieldSearcherT<T>::prepare(search::streaming::QueryTermList& qtl,
for (auto qt : qtl) {
size_t sz(qt->termLen());
if (sz) {
- double low;
- double high;
- bool valid = qt->getAsDoubleTerm(low, high);
- _floatTerm.push_back(FloatInfo(low, high, valid));
+ auto range = qt->getRange<T>();
+ _floatTerm.emplace_back(range.low, range.high, range.valid);
}
}
}
diff --git a/streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.h b/streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.h
index 877050a3276..07b3f6e1c5f 100644
--- a/streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.h
+++ b/streamingvisitors/src/vespa/vsm/searcher/floatfieldsearcher.h
@@ -20,7 +20,7 @@ protected:
class FloatInfo
{
public:
- FloatInfo(T low, T high, bool v) : _lower(low), _upper(high), _valid(v) { if (low > high) { _lower = high; _upper = low; } }
+ FloatInfo(T low, T high, bool v) noexcept : _lower(low), _upper(high), _valid(v) { }
bool cmp(T key) const;
bool valid() const { return _valid; }
void setValid(bool v) { _valid = v; }
diff --git a/streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.cpp b/streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.cpp
index 4a941cecb83..e73c7f5c1a7 100644
--- a/streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.cpp
+++ b/streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.cpp
@@ -29,10 +29,8 @@ void IntFieldSearcher::prepare(search::streaming::QueryTermList& qtl,
for (auto qt : qtl) {
size_t sz(qt->termLen());
if (sz) {
- int64_t low;
- int64_t high;
- bool valid = qt->getAsIntegerTerm(low, high);
- _intTerm.push_back(IntInfo(low, high, valid));
+ auto range = qt->getRange<int64_t>();
+ _intTerm.emplace_back(range.low, range.high, range.valid);
}
}
}
diff --git a/streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.h b/streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.h
index bf143a4d06b..47b83c1538d 100644
--- a/streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.h
+++ b/streamingvisitors/src/vespa/vsm/searcher/intfieldsearcher.h
@@ -20,7 +20,7 @@ protected:
class IntInfo
{
public:
- IntInfo(int64_t low, int64_t high, bool v) : _lower(low), _upper(high), _valid(v) { if (low > high) { _lower = high; _upper = low; } }
+ IntInfo(int64_t low, int64_t high, bool v) noexcept : _lower(low), _upper(high), _valid(v) { }
bool cmp(int64_t key) const { return (_lower <= key) && (key <= _upper); }
bool valid() const { return _valid; }
private:
diff --git a/vespa-dependencies-enforcer/allowed-maven-dependencies.txt b/vespa-dependencies-enforcer/allowed-maven-dependencies.txt
index 525c77f7df6..eb9dee300b7 100644
--- a/vespa-dependencies-enforcer/allowed-maven-dependencies.txt
+++ b/vespa-dependencies-enforcer/allowed-maven-dependencies.txt
@@ -78,7 +78,7 @@ io.prometheus:simpleclient_tracer_otel:${prometheus.client.vespa.version}
io.prometheus:simpleclient_tracer_otel_agent:${prometheus.client.vespa.version}
jakarta.inject:jakarta.inject-api:${jakarta.inject.vespa.version}
javax.activation:javax.activation-api:1.2.0
-javax.annotation:javax.annotation-api:${commons-logging.vespa.version}
+javax.annotation:javax.annotation-api:${javax.annotation.vespa.version}
javax.inject:javax.inject:${javax.inject.vespa.version}
javax.servlet:javax.servlet-api:${javax.servlet-api.vespa.version}
javax.ws.rs:javax.ws.rs-api:${javax.ws.rs-api.vespa.version}
@@ -140,7 +140,7 @@ org.bouncycastle:bcprov-jdk18on:${bouncycastle.vespa.version}
org.bouncycastle:bcutil-jdk18on:${bouncycastle.vespa.version}
org.codehaus.plexus:plexus-archiver:4.8.0
org.codehaus.plexus:plexus-classworlds:2.7.0
-org.codehaus.plexus:plexus-component-annotations:1.5.5
+org.codehaus.plexus:plexus-component-annotations:2.1.0
org.codehaus.plexus:plexus-container-default:1.0-alpha-9-stable-1
org.codehaus.plexus:plexus-interpolation:1.26
org.codehaus.plexus:plexus-io:${maven-enforcer-plugin.vespa.version}
@@ -166,8 +166,8 @@ org.eclipse.jetty:jetty-security:${jetty.vespa.version}
org.eclipse.jetty:jetty-server:${jetty.vespa.version}
org.eclipse.jetty:jetty-servlet:${jetty.vespa.version}
org.eclipse.jetty:jetty-util:${jetty.vespa.version}
-org.eclipse.sisu:org.eclipse.sisu.inject:0.3.5
-org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.5
+org.eclipse.sisu:org.eclipse.sisu.inject:${eclipse-sisu.vespa.version}
+org.eclipse.sisu:org.eclipse.sisu.plexus:${eclipse-sisu.vespa.version}
org.fusesource.jansi:jansi:1.18
org.glassfish.jaxb:jaxb-core:${jaxb.runtime.vespa.version}
org.glassfish.jaxb:jaxb-runtime:${jaxb.runtime.vespa.version}
diff --git a/vespa-enforcer-extensions/pom.xml b/vespa-enforcer-extensions/pom.xml
index 10cd2b8096b..c0b5e34076f 100644
--- a/vespa-enforcer-extensions/pom.xml
+++ b/vespa-enforcer-extensions/pom.xml
@@ -62,7 +62,7 @@
<!-- generate index of project components -->
<groupId>org.eclipse.sisu</groupId>
<artifactId>sisu-maven-plugin</artifactId>
- <version>0.9.0.M2</version>
+ <version>${eclipse-sisu.vespa.version}</version>
<executions>
<execution>
<goals>