aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2021-12-16 09:58:32 +0100
committerJon Marius Venstad <venstad@gmail.com>2021-12-16 09:58:32 +0100
commit6a6a3794558da21f5ca78857a171f822ef643b09 (patch)
tree5860a363dc7afe9cc99fda21fa1be6f5cccc66a9 /controller-server
parent928c99639681b92a8990621eb8403a8579c82797 (diff)
Fix edge case for metric right after upgrades become overdue
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporter.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java22
2 files changed, 15 insertions, 9 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporter.java
index a1c25c1fb53..021b27456a4 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporter.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporter.java
@@ -195,7 +195,7 @@ public class MetricsReporter extends ControllerMaintainer {
Optional<Instant> lastOpened = Optional.empty(); // When the upgrade window most recently opened
Instant oneWeekAgo = upgradingAt.minus(Duration.ofDays(7));
Duration step = Duration.ofHours(1);
- for (Instant instant = upgradingAt; !instanceSpec.canUpgradeAt(instant); instant = instant.minus(step).truncatedTo(ChronoUnit.HOURS)) {
+ for (Instant instant = upgradingAt.truncatedTo(ChronoUnit.HOURS); !instanceSpec.canUpgradeAt(instant); instant = instant.minus(step)) {
if (!instant.isAfter(oneWeekAgo)) { // Wrapped around, the entire week is being blocked
lastOpened = Optional.empty();
break;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
index 3c91fb66894..71a3ce262ad 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
@@ -510,7 +510,7 @@ public class MetricsReporterTest {
.blockChange(true, false, "mon-sun", "0-7", "CET")
.build();
- Instant mondayNight = Instant.parse("2021-12-13T23:00:00.00Z");
+ Instant mondayNight = Instant.parse("2021-12-13T23:30:00.00Z");
DeploymentTester tester = new DeploymentTester().at(mondayNight);
MetricsReporter reporter = createReporter(tester.controller());
DeploymentContext context = tester.newDeploymentContext();
@@ -535,17 +535,23 @@ public class MetricsReporterTest {
assertEquals("Upgrade is not overdue yet", Duration.ZERO, metric.get());
// Upgrade continues into block window
- tester.clock().advance(Duration.ofHours(3)); // Tuesday at 02:00 (03:00 CET)
- assertEquals("Upgrade is overdue measured relative to window 2", Duration.ofHours(2), metric.get());
+ tester.clock().advance(Duration.ofHours(1)); // Tuesday at 00:30 (01:30 CET)
+ assertEquals("Upgrade is overdue measured relative to window 2", Duration.ofHours(0).plusMinutes(30), metric.get());
+
+ tester.clock().advance(Duration.ofHours(1)); // Tuesday at 01:30 (02:30 CET)
+ assertEquals("Upgrade is overdue measured relative to window 2", Duration.ofHours(1).plusMinutes(30), metric.get());
+
+ tester.clock().advance(Duration.ofHours(1)); // Tuesday at 02:30 (03:30 CET)
+ assertEquals("Upgrade is overdue measured relative to window 2", Duration.ofHours(2).plusMinutes(30), metric.get());
- tester.clock().advance(Duration.ofHours(6)); // Tuesday at 08:00 (09:00 CET)
- assertEquals("Upgrade is overdue measured relative to window 1", Duration.ofHours(8), metric.get());
+ tester.clock().advance(Duration.ofHours(6)); // Tuesday at 08:30 (09:30 CET)
+ assertEquals("Upgrade is overdue measured relative to window 1", Duration.ofHours(8).plusMinutes(30), metric.get());
- tester.clock().advance(Duration.ofHours(1)); // Tuesday at 09:00 (10:00 CET)
+ tester.clock().advance(Duration.ofHours(1)); // Tuesday at 09:30 (10:30 CET)
assertEquals("Upgrade is no longer overdue", Duration.ZERO, metric.get());
- tester.clock().advance(Duration.ofDays(2)); // Thursday at 10:00 (11:00 CET)
- assertEquals("Upgrade is overdue measure relative to window 3", Duration.ofHours(34), metric.get());
+ tester.clock().advance(Duration.ofDays(2)); // Thursday at 10:30 (11:30 CET)
+ assertEquals("Upgrade is overdue measure relative to window 3", Duration.ofHours(34).plusMinutes(30), metric.get());
}
@Test