summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-01-08 09:32:45 +0100
committerMartin Polden <mpolden@mpolden.no>2021-01-08 09:32:45 +0100
commitb382919958dff68cb0ed2a027be62b14cbbbff60 (patch)
tree7c13ebd71f3889c3ff46228a339db087e18dd9c4 /vespajlib
parent0be132bb953d7818c4b25b5415ac98f1a02a8248 (diff)
Remove special handling of lock timeout
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java20
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java6
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java19
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java4
4 files changed, 8 insertions, 41 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java
index 2426ca6c5e8..daad1f8fb4b 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java
@@ -1,7 +1,6 @@
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
-import com.google.common.util.concurrent.UncheckedTimeoutException;
import com.yahoo.net.HostName;
import java.time.Duration;
@@ -27,17 +26,15 @@ public abstract class Maintainer implements Runnable {
protected final Logger log = Logger.getLogger(this.getClass().getName());
private final String name;
- private final Mode mode;
private final JobControl jobControl;
private final JobMetrics jobMetrics;
private final Duration interval;
private final ScheduledExecutorService service;
private final AtomicBoolean shutDown = new AtomicBoolean();
- public Maintainer(String name, Mode mode, Duration interval, Instant startedAt, JobControl jobControl,
+ public Maintainer(String name, Duration interval, Instant startedAt, JobControl jobControl,
JobMetrics jobMetrics, List<String> clusterHostnames) {
this.name = name;
- this.mode = Objects.requireNonNull(mode);
this.interval = requireInterval(interval);
this.jobControl = Objects.requireNonNull(jobControl);
this.jobMetrics = Objects.requireNonNull(jobMetrics);
@@ -90,11 +87,6 @@ public abstract class Maintainer implements Runnable {
jobMetrics.recordRunOf(name());
try (var lock = jobControl.lockJob(name())) {
if (maintain()) jobMetrics.recordSuccessOf(name());
- } catch (UncheckedTimeoutException ignored) {
- if (mode == Mode.shared) {
- // This is fine as we're colliding with a run on another node
- jobMetrics.recordSuccessOf(name());
- }
} catch (Throwable e) {
log.log(Level.WARNING, this + " failed. Will retry in " + interval.toMinutes() + " minutes", e);
} finally {
@@ -125,14 +117,4 @@ public abstract class Maintainer implements Runnable {
return interval;
}
- public enum Mode {
-
- /** Completing a scheduled run on any node is sufficient */
- shared,
-
- /** Completing a scheduled run is always required */
- exclusive,
-
- }
-
}
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java
index 61413c2973c..139a2901cd3 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java
@@ -20,8 +20,8 @@ public class JobControlTest {
String job1 = "Job1";
String job2 = "Job2";
JobMetrics metrics = new JobMetrics((job, instant) -> {});
- TestMaintainer maintainer1 = new TestMaintainer(job1, Maintainer.Mode.shared, jobControl, metrics);
- TestMaintainer maintainer2 = new TestMaintainer(job2, Maintainer.Mode.shared, jobControl, metrics);
+ TestMaintainer maintainer1 = new TestMaintainer(job1, jobControl, metrics);
+ TestMaintainer maintainer2 = new TestMaintainer(job2, jobControl, metrics);
assertEquals(2, jobControl.jobs().size());
assertTrue(jobControl.jobs().contains(job1));
assertTrue(jobControl.jobs().contains(job2));
@@ -62,7 +62,7 @@ public class JobControlTest {
public void testJobControlMayDeactivateJobs() {
JobControlStateMock state = new JobControlStateMock();
JobControl jobControl = new JobControl(state);
- TestMaintainer mockMaintainer = new TestMaintainer(null, Maintainer.Mode.shared, jobControl, new JobMetrics((job, instant) -> {}));
+ TestMaintainer mockMaintainer = new TestMaintainer(null, jobControl, new JobMetrics((job, instant) -> {}));
assertTrue(jobControl.jobs().contains("TestMaintainer"));
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java
index 4b726eb6637..e881d4b3ff6 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java
@@ -44,7 +44,7 @@ public class MaintainerTest {
public void success_metric() {
AtomicLong consecutiveFailures = new AtomicLong();
JobMetrics jobMetrics = new JobMetrics((job, count) -> consecutiveFailures.set(count));
- TestMaintainer maintainer = new TestMaintainer(null, Maintainer.Mode.shared, jobControl, jobMetrics);
+ TestMaintainer maintainer = new TestMaintainer(null, jobControl, jobMetrics);
// Maintainer fails twice in a row
maintainer.successOnNextRun(false).run();
@@ -68,24 +68,9 @@ public class MaintainerTest {
maintainer.throwOnNextRun(null).run();
assertEquals(0, consecutiveFailures.get());
- // Lock exception is considered successful for shared maintainer
- maintainer.throwOnNextRun(new UncheckedTimeoutException()).run();
- assertEquals(0, consecutiveFailures.get());
- }
-
- @Test
- public void success_metric_exclusive_maintainer() {
- AtomicLong consecutiveFailures = new AtomicLong();
- JobMetrics jobMetrics = new JobMetrics((job, count) -> consecutiveFailures.set(count));
- TestMaintainer maintainer = new TestMaintainer(null, Maintainer.Mode.exclusive, jobControl, jobMetrics);
-
- // Timeout is considered a failure
+ // Lock exception is treated as a failure
maintainer.throwOnNextRun(new UncheckedTimeoutException()).run();
assertEquals(1, consecutiveFailures.get());
-
- // Maintainer recovers
- maintainer.throwOnNextRun(null).run();
- assertEquals(0, consecutiveFailures.get());
}
}
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
index 291268a416f..ea32af60208 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
@@ -14,8 +14,8 @@ class TestMaintainer extends Maintainer {
private boolean success = true;
private RuntimeException exceptionToThrow = null;
- public TestMaintainer(String name, Mode mode, JobControl jobControl, JobMetrics jobMetrics) {
- super(name, mode, Duration.ofDays(1), Instant.now(), jobControl, jobMetrics, List.of());
+ public TestMaintainer(String name, JobControl jobControl, JobMetrics jobMetrics) {
+ super(name, Duration.ofDays(1), Instant.now(), jobControl, jobMetrics, List.of());
}
public int totalRuns() {