summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configd/src/apps/sentinel/config-owner.cpp2
-rw-r--r--configd/src/apps/sentinel/connectivity.cpp2
-rw-r--r--configd/src/apps/sentinel/env.cpp2
-rw-r--r--configd/src/apps/sentinel/manager.cpp2
-rw-r--r--configd/src/apps/sentinel/output-connection.cpp2
-rw-r--r--configd/src/apps/sentinel/outward-check.cpp2
-rw-r--r--configd/src/apps/sentinel/peer-check.cpp2
-rw-r--r--configd/src/apps/sentinel/report-connectivity.cpp2
-rw-r--r--configd/src/apps/sentinel/rpchooks.cpp2
-rw-r--r--configd/src/apps/sentinel/rpcserver.cpp2
-rw-r--r--configd/src/apps/sentinel/sentinel.cpp2
-rw-r--r--configd/src/apps/sentinel/service.cpp2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java16
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java11
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java5
-rw-r--r--storage/src/tests/storageserver/mergethrottlertest.cpp3
-rw-r--r--storage/src/vespa/storage/storageserver/mergethrottler.cpp2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java4
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java2
19 files changed, 42 insertions, 25 deletions
diff --git a/configd/src/apps/sentinel/config-owner.cpp b/configd/src/apps/sentinel/config-owner.cpp
index 665cf07d3e7..89d5796ae79 100644
--- a/configd/src/apps/sentinel/config-owner.cpp
+++ b/configd/src/apps/sentinel/config-owner.cpp
@@ -6,7 +6,7 @@
#include <string>
#include <vespa/log/log.h>
-LOG_SETUP(".config-owner");
+LOG_SETUP(".sentinel.config-owner");
namespace config::sentinel {
diff --git a/configd/src/apps/sentinel/connectivity.cpp b/configd/src/apps/sentinel/connectivity.cpp
index c1c49e3068a..d36190e4e13 100644
--- a/configd/src/apps/sentinel/connectivity.cpp
+++ b/configd/src/apps/sentinel/connectivity.cpp
@@ -10,7 +10,7 @@
#include <thread>
#include <chrono>
-LOG_SETUP(".connectivity");
+LOG_SETUP(".sentinel.connectivity");
using vespalib::make_string_short::fmt;
using namespace std::chrono_literals;
diff --git a/configd/src/apps/sentinel/env.cpp b/configd/src/apps/sentinel/env.cpp
index f857f95a496..c345de1df36 100644
--- a/configd/src/apps/sentinel/env.cpp
+++ b/configd/src/apps/sentinel/env.cpp
@@ -12,7 +12,7 @@
#include <thread>
#include <chrono>
-LOG_SETUP(".env");
+LOG_SETUP(".sentinel.env");
using vespalib::make_string_short::fmt;
using namespace std::chrono_literals;
diff --git a/configd/src/apps/sentinel/manager.cpp b/configd/src/apps/sentinel/manager.cpp
index 0c13292d704..839f7c96ae2 100644
--- a/configd/src/apps/sentinel/manager.cpp
+++ b/configd/src/apps/sentinel/manager.cpp
@@ -11,7 +11,7 @@
#include <sys/wait.h>
#include <vespa/log/log.h>
-LOG_SETUP(".manager");
+LOG_SETUP(".sentinel.manager");
namespace config::sentinel {
diff --git a/configd/src/apps/sentinel/output-connection.cpp b/configd/src/apps/sentinel/output-connection.cpp
index 5dbe1c22f58..caf97c92eea 100644
--- a/configd/src/apps/sentinel/output-connection.cpp
+++ b/configd/src/apps/sentinel/output-connection.cpp
@@ -5,7 +5,7 @@
#include <cstring>
#include <vespa/log/log.h>
-LOG_SETUP("");
+LOG_SETUP(".sentinel.output-connection");
#include <vespa/log/llparser.h>
#include "output-connection.h"
diff --git a/configd/src/apps/sentinel/outward-check.cpp b/configd/src/apps/sentinel/outward-check.cpp
index c9c94443274..391e5fee8bf 100644
--- a/configd/src/apps/sentinel/outward-check.cpp
+++ b/configd/src/apps/sentinel/outward-check.cpp
@@ -3,7 +3,7 @@
#include "outward-check.h"
#include <vespa/log/log.h>
-LOG_SETUP(".outward-check");
+LOG_SETUP(".sentinel.outward-check");
namespace config::sentinel {
diff --git a/configd/src/apps/sentinel/peer-check.cpp b/configd/src/apps/sentinel/peer-check.cpp
index daab80eefc7..b8060742355 100644
--- a/configd/src/apps/sentinel/peer-check.cpp
+++ b/configd/src/apps/sentinel/peer-check.cpp
@@ -4,7 +4,7 @@
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/log/log.h>
-LOG_SETUP(".peer-check");
+LOG_SETUP(".sentinel.peer-check");
using vespalib::make_string_short::fmt;
diff --git a/configd/src/apps/sentinel/report-connectivity.cpp b/configd/src/apps/sentinel/report-connectivity.cpp
index c1e519a4a9a..1ea7365aa3f 100644
--- a/configd/src/apps/sentinel/report-connectivity.cpp
+++ b/configd/src/apps/sentinel/report-connectivity.cpp
@@ -6,7 +6,7 @@
#include <vespa/log/log.h>
#include <chrono>
-LOG_SETUP(".report-connectivity");
+LOG_SETUP(".sentinel.report-connectivity");
using cloud::config::ModelConfig;
using namespace std::chrono_literals;
diff --git a/configd/src/apps/sentinel/rpchooks.cpp b/configd/src/apps/sentinel/rpchooks.cpp
index 0d49063db84..3e5509bc8c3 100644
--- a/configd/src/apps/sentinel/rpchooks.cpp
+++ b/configd/src/apps/sentinel/rpchooks.cpp
@@ -9,7 +9,7 @@
#include <vespa/fnet/frt/rpcrequest.h>
#include <vespa/log/log.h>
-LOG_SETUP(".rpchooks");
+LOG_SETUP(".sentinel.rpchooks");
namespace config::sentinel {
diff --git a/configd/src/apps/sentinel/rpcserver.cpp b/configd/src/apps/sentinel/rpcserver.cpp
index be867ae95db..6c0de35a9e2 100644
--- a/configd/src/apps/sentinel/rpcserver.cpp
+++ b/configd/src/apps/sentinel/rpcserver.cpp
@@ -3,7 +3,7 @@
#include "rpcserver.h"
#include <vespa/log/log.h>
-LOG_SETUP(".rpcserver");
+LOG_SETUP(".sentinel.rpcserver");
namespace config::sentinel {
diff --git a/configd/src/apps/sentinel/sentinel.cpp b/configd/src/apps/sentinel/sentinel.cpp
index ebed1549106..32f4708188c 100644
--- a/configd/src/apps/sentinel/sentinel.cpp
+++ b/configd/src/apps/sentinel/sentinel.cpp
@@ -11,7 +11,7 @@
#include <sys/time.h>
#include <vespa/log/log.h>
-LOG_SETUP("config-sentinel");
+LOG_SETUP("sentinel.config-sentinel");
using namespace config;
diff --git a/configd/src/apps/sentinel/service.cpp b/configd/src/apps/sentinel/service.cpp
index 9c78894f1a7..d1dab4bb26f 100644
--- a/configd/src/apps/sentinel/service.cpp
+++ b/configd/src/apps/sentinel/service.cpp
@@ -12,7 +12,7 @@
#include <sys/wait.h>
#include <vespa/log/log.h>
-LOG_SETUP(".service");
+LOG_SETUP(".sentinel.service");
#include <vespa/log/llparser.h>
static bool stop()
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
index 666d1c3b23a..a02937a03e3 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
@@ -43,8 +43,10 @@ public class OsUpgradeScheduler extends ControllerMaintainer {
@Override
protected double maintain() {
+ Instant now = controller().clock().instant();
+ if (!canTriggerAt(now)) return 1.0;
for (var cloud : supportedClouds()) {
- Optional<Version> newTarget = newTargetIn(cloud);
+ Optional<Version> newTarget = newTargetIn(cloud, now);
if (newTarget.isEmpty()) continue;
controller().upgradeOsIn(cloud, newTarget.get(), upgradeBudget(), false);
}
@@ -52,14 +54,12 @@ public class OsUpgradeScheduler extends ControllerMaintainer {
}
/** Returns the new target version for given cloud, if any */
- private Optional<Version> newTargetIn(CloudName cloud) {
+ private Optional<Version> newTargetIn(CloudName cloud, Instant now) {
Optional<Version> currentTarget = controller().osVersionTarget(cloud)
.map(OsVersionTarget::osVersion)
.map(OsVersion::version);
if (currentTarget.isEmpty()) return Optional.empty();
if (!hasExpired(currentTarget.get())) return Optional.empty();
-
- Instant now = controller().clock().instant();
String qualifier = LocalDate.ofInstant(now.minus(AVAILABILITY_INTERVAL), ZoneOffset.UTC)
.format(VERSION_DATE_PATTERN);
return Optional.of(new Version(currentTarget.get().getMajor(),
@@ -88,6 +88,14 @@ public class OsUpgradeScheduler extends ControllerMaintainer {
.collect(Collectors.toUnmodifiableSet());
}
+ private boolean canTriggerAt(Instant instant) {
+ int hourOfDay = instant.atZone(ZoneOffset.UTC).getHour();
+ int dayOfWeek = instant.atZone(ZoneOffset.UTC).getDayOfWeek().getValue();
+ // Upgrade can only be scheduled between 07:00 and 12:59 UTC, Monday-Thursday
+ return hourOfDay >= 7 && hourOfDay <= 12 &&
+ dayOfWeek < 5;
+ }
+
private Duration upgradeBudget() {
return controller().system().isCd() ? Duration.ofHours(1) : Duration.ofDays(14);
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
index 7d512ba090c..7a0175845ca 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
@@ -24,8 +24,8 @@ public class OsUpgradeSchedulerTest {
public void maintain() {
ControllerTester tester = new ControllerTester();
OsUpgradeScheduler scheduler = new OsUpgradeScheduler(tester.controller(), Duration.ofDays(1));
- Instant initialTime = Instant.parse("2021-01-23T00:00:00.00Z");
- tester.clock().setInstant(initialTime);
+ Instant t0 = Instant.parse("2021-01-23T00:00:00.00Z"); // Outside trigger period
+ tester.clock().setInstant(t0);
CloudName cloud = CloudName.from("cloud");
ZoneApi zone = zone("prod.us-west-1", cloud);
@@ -50,7 +50,12 @@ public class OsUpgradeSchedulerTest {
Version version1 = Version.fromString("7.0.0.20210302");
tester.clock().advance(Duration.ofDays(15).plus(Duration.ofSeconds(1)));
scheduler.maintain();
- assertEquals("New target set", version1, tester.controller().osVersionTarget(cloud).get().osVersion().version());
+ assertEquals("Target is unchanged because we're outside trigger period", version0,
+ tester.controller().osVersionTarget(cloud).get().osVersion().version());
+ tester.clock().advance(Duration.ofHours(7)); // Put us inside the trigger period
+ scheduler.maintain();
+ assertEquals("New target set", version1,
+ tester.controller().osVersionTarget(cloud).get().osVersion().version());
// A few days pass and target remains unchanged
tester.clock().advance(Duration.ofDays(2));
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
index 9f84322fe0f..d8bbf305b57 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
@@ -27,6 +27,7 @@ import com.yahoo.vespa.service.monitor.ServiceModel;
import com.yahoo.vespa.service.monitor.ServiceMonitor;
import java.time.Duration;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -66,7 +67,9 @@ public class MetricsReporter extends NodeRepositoryMaintainer {
@Override
public double maintain() {
- NodeList nodes = nodeRepository().nodes().list();
+ // Sort by hostname to get deterministic metric reporting order (and hopefully avoid changes
+ // to metric reporting time so we get double reporting or no reporting within a minute)
+ NodeList nodes = nodeRepository().nodes().list().sortedBy(Comparator.comparing(Node::hostname));
ServiceModel serviceModel = serviceMonitor.getServiceModelSnapshot();
updateZoneMetrics();
diff --git a/storage/src/tests/storageserver/mergethrottlertest.cpp b/storage/src/tests/storageserver/mergethrottlertest.cpp
index 3a153fef9c3..dfeaee031ba 100644
--- a/storage/src/tests/storageserver/mergethrottlertest.cpp
+++ b/storage/src/tests/storageserver/mergethrottlertest.cpp
@@ -1220,6 +1220,7 @@ TEST_F(MergeThrottlerTest, unknown_merge_with_self_in_chain) {
TEST_F(MergeThrottlerTest, busy_returned_on_full_queue) {
size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
size_t maxQueue = _throttlers[0]->getMaxQueueSize();
+ ASSERT_EQ(20, maxQueue);
ASSERT_LT(maxPending, 100);
for (std::size_t i = 0; i < maxPending + maxQueue; ++i) {
std::vector<MergeBucketCommand::Node> nodes;
@@ -1233,8 +1234,8 @@ TEST_F(MergeThrottlerTest, busy_returned_on_full_queue) {
// Wait till we have maxPending replies and maxQueue queued
_topLinks[0]->waitForMessages(maxPending, _messageWaitTime);
- EXPECT_EQ(19, _throttlers[0]->getMetrics().queueSize.getMaximum());
waitUntilMergeQueueIs(*_throttlers[0], maxQueue, _messageWaitTime);
+ EXPECT_EQ(maxQueue, _throttlers[0]->getMetrics().queueSize.getMaximum());
// Clear all forwarded merges
_topLinks[0]->getRepliesOnce();
diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.cpp b/storage/src/vespa/storage/storageserver/mergethrottler.cpp
index a9bd7ade270..1761abfc097 100644
--- a/storage/src/vespa/storage/storageserver/mergethrottler.cpp
+++ b/storage/src/vespa/storage/storageserver/mergethrottler.cpp
@@ -416,8 +416,8 @@ MergeThrottler::enqueueMerge(
if (!validateNewMerge(mergeCmd, nodeSeq, msgGuard)) {
return;
}
- _metrics->queueSize.set(_queue.size());
_queue.insert(MergePriorityQueue::value_type(msg, _queueSequence++));
+ _metrics->queueSize.set(_queue.size());
}
bool
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java
index 0e9bfe0ef46..840219a6bf1 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java
@@ -40,14 +40,14 @@ public class BenchmarkingCluster implements Cluster {
@Override
public void dispatch(HttpRequest request, CompletableFuture<HttpResponse> vessel) {
requests.incrementAndGet();
- long startMillis = System.currentTimeMillis();
+ long startNanos = System.nanoTime();
delegate.dispatch(request, vessel);
vessel.whenCompleteAsync((response, thrown) -> {
results++;
if (thrown == null) {
responses++;
responsesByCode[response.code()]++;
- long latency = System.currentTimeMillis() - startMillis;
+ long latency = (System.nanoTime() - startNanos) / 1_000_000;
totalLatencyMillis += latency;
minLatencyMillis = Math.min(minLatencyMillis, latency);
maxLatencyMillis = Math.max(maxLatencyMillis, latency);
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java
index 72fa675ecf1..3cce423735f 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java
@@ -59,7 +59,7 @@ class HttpRequestStrategy implements RequestStrategy {
});
HttpRequestStrategy(FeedClientBuilder builder) throws IOException {
- this(builder, new BenchmarkingCluster(new OkCluster(builder)));
+ this(builder, new BenchmarkingCluster(new ApacheCluster(builder)));
}
HttpRequestStrategy(FeedClientBuilder builder, Cluster cluster) {