Use Java record for Forwarder.Result
Change-Id: I475d55b33aff1c5b6e893178779fd0eda269cac1
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/Forwarder.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/Forwarder.java
index 5d92700..3bf08b4 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/Forwarder.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/Forwarder.java
@@ -21,32 +21,10 @@
/** Forward indexing, stream events and cache evictions to the other primary */
public interface Forwarder {
- public class Result {
- private EventType type;
- private boolean result;
- private boolean isRecoverable;
-
+ public record Result(EventType type, boolean result, boolean isRecoverable) {
public Result(EventType task, boolean result) {
this(task, result, true);
}
-
- public Result(EventType type, boolean result, boolean isRecoverable) {
- this.type = type;
- this.result = result;
- this.isRecoverable = isRecoverable;
- }
-
- public EventType getType() {
- return type;
- }
-
- public boolean getResult() {
- return result;
- }
-
- public boolean isRecoverable() {
- return isRecoverable;
- }
}
/**
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/FailsafeExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/FailsafeExecutorProvider.java
index df2ab14..be6bbf4 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/FailsafeExecutorProvider.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/FailsafeExecutorProvider.java
@@ -46,7 +46,7 @@
e ->
log.atWarning().log(
"%d jgroups retries exceeded for event %s", cfg.jgroups().maxTries(), e))
- .handleResultIf(r -> !r.getResult())
+ .handleResultIf(r -> !r.result())
.build();
return Failsafe.with(retryPolicy)
.with(workQueue.createQueue(cfg.jgroups().threadPoolSize(), "JGroupsForwarder"));
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/JGroupsForwarder.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/JGroupsForwarder.java
index be8bd7c..0bd8c5d 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/JGroupsForwarder.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/JGroupsForwarder.java
@@ -64,7 +64,7 @@
this.metricsRegistry = metricsRegistry;
this.executor.onComplete(
ev -> {
- this.metricsRegistry.get(ev.getResult().getType()).recordRetries(ev.getAttemptCount());
+ this.metricsRegistry.get(ev.getResult().type()).recordRetries(ev.getAttemptCount());
});
}
@@ -130,7 +130,7 @@
.getAsync(() -> executeOnce(cmd))
.thenApplyAsync(
result -> {
- metricsRegistry.get(cmd.type).recordResult(result.getResult());
+ metricsRegistry.get(cmd.type).recordResult(result.result());
metricsRegistry
.get(cmd.type)
.recordLatency(Duration.between(cmd.eventCreatedOn, Instant.now()).toMillis());
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/FailsafeExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/FailsafeExecutorProvider.java
index 6c27d4b..6168880 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/FailsafeExecutorProvider.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/FailsafeExecutorProvider.java
@@ -46,8 +46,8 @@
e ->
log.atWarning().log(
"%d http retries exceeded for event %s", cfg.http().maxTries(), e))
- .handleResultIf(r -> !r.getResult())
- .abortIf((r, e) -> !r.getResult() && !r.isRecoverable())
+ .handleResultIf(r -> !r.result())
+ .abortIf((r, e) -> !r.result() && !r.isRecoverable())
.build();
// TODO: the executor shall be created by workQueue.createQueue(...)
// However, this currently doesn't work because WorkQueue.Executor doesn't support wrapping of
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarder.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarder.java
index 6d15755..b7ad165 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarder.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarder.java
@@ -79,7 +79,7 @@
this.metricsRegistry = metricsRegistry;
this.executor.onComplete(
ev -> {
- this.metricsRegistry.get(ev.getResult().getType()).recordRetries(ev.getAttemptCount());
+ this.metricsRegistry.get(ev.getResult().type()).recordRetries(ev.getAttemptCount());
});
}
@@ -261,11 +261,10 @@
CompletableFuture.completedFuture(new Result(eventType, true)),
(a, b) ->
a.thenCombine(
- b,
- (left, right) -> new Result(eventType, left.getResult() && right.getResult())))
+ b, (left, right) -> new Result(eventType, left.result() && right.result())))
.thenApplyAsync(
result -> {
- metricsRegistry.get(eventType).recordResult(result.getResult());
+ metricsRegistry.get(eventType).recordResult(result.result());
metricsRegistry
.get(eventType)
.recordLatency(Duration.between(requestStart, Instant.now()).toMillis());
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/JGroupsForwarderTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/JGroupsForwarderTest.java
index 39d388c..e7542b4 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/JGroupsForwarderTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/jgroups/JGroupsForwarderTest.java
@@ -96,7 +96,7 @@
when(dispatcher.castMessage(any(), any(), any())).thenReturn(OK);
CompletableFuture<Result> result = forwarder.indexAccount(100, new IndexEvent());
- assertThat(result.get().getResult()).isTrue();
+ assertThat(result.get().result()).isTrue();
verify(dispatcher, times(1)).castMessage(any(), any(), any());
}
@@ -108,7 +108,7 @@
when(dispatcher.castMessage(any(), any(), any())).thenReturn(FAIL, OK);
CompletableFuture<Result> result = forwarder.indexAccount(100, new IndexEvent());
- assertThat(result.get().getResult()).isTrue();
+ assertThat(result.get().result()).isTrue();
verify(dispatcher, times(2)).castMessage(any(), any(), any());
}
@@ -120,7 +120,7 @@
when(dispatcher.castMessage(any(), any(), any())).thenReturn(FAIL, FAIL, FAIL);
CompletableFuture<Result> result = forwarder.indexAccount(100, new IndexEvent());
- assertThat(result.get().getResult()).isFalse();
+ assertThat(result.get().result()).isFalse();
verify(dispatcher, times(MAX_TRIES)).castMessage(any(), any(), any());
}
}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarderTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarderTest.java
index 94ff2fb..78d21ef 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarderTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarderTest.java
@@ -146,7 +146,7 @@
forwarder
.indexAccount(ACCOUNT_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -158,7 +158,7 @@
forwarder
.indexAccount(ACCOUNT_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -170,7 +170,7 @@
forwarder
.indexAccount(ACCOUNT_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -182,7 +182,7 @@
forwarder
.indexGroup(UUID, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -194,7 +194,7 @@
forwarder
.indexGroup(UUID, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -205,7 +205,7 @@
forwarder
.indexGroup(UUID, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -217,7 +217,7 @@
forwarder
.indexChange(PROJECT_NAME, CHANGE_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -229,7 +229,7 @@
forwarder
.indexChange(PROJECT_NAME, CHANGE_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -241,7 +241,7 @@
forwarder
.indexChange(PROJECT_NAME, CHANGE_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -253,7 +253,7 @@
forwarder
.batchIndexChange(PROJECT_NAME, CHANGE_NUMBER, new IndexEvent())
.get()
- .getResult())
+ .result())
.isTrue();
}
@@ -265,7 +265,7 @@
forwarder
.batchIndexChange(PROJECT_NAME, CHANGE_NUMBER, new IndexEvent())
.get()
- .getResult())
+ .result())
.isFalse();
}
@@ -277,7 +277,7 @@
forwarder
.batchIndexChange(PROJECT_NAME, CHANGE_NUMBER, new IndexEvent())
.get()
- .getResult())
+ .result())
.isFalse();
}
@@ -289,7 +289,7 @@
forwarder
.deleteChangeFromIndex(CHANGE_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -301,7 +301,7 @@
forwarder
.deleteAllChangesForProject(Project.nameKey(PROJECT_NAME))
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -313,7 +313,7 @@
forwarder
.deleteChangeFromIndex(CHANGE_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -324,7 +324,7 @@
forwarder
.deleteChangeFromIndex(CHANGE_NUMBER, new IndexEvent())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -332,20 +332,20 @@
public void testEventSentOK() throws Exception {
when(httpSessionMock.post(eq(EVENT_ENDPOINT), eq(event), any()))
.thenReturn(new HttpResult(SUCCESSFUL, EMPTY_MSG));
- assertThat(forwarder.send(event).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).getResult()).isTrue();
+ assertThat(forwarder.send(event).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result()).isTrue();
}
@Test
public void testEventSentFailed() throws Exception {
when(httpSessionMock.post(eq(EVENT_ENDPOINT), eq(event), any()))
.thenReturn(new HttpResult(FAILED, EMPTY_MSG));
- assertThat(forwarder.send(event).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).getResult()).isFalse();
+ assertThat(forwarder.send(event).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result()).isFalse();
}
@Test
public void testEventSentThrowsException() throws Exception {
when(httpSessionMock.post(eq(EVENT_ENDPOINT), eq(event), any())).thenThrow(IOException.class);
- assertThat(forwarder.send(event).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).getResult()).isFalse();
+ assertThat(forwarder.send(event).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result()).isFalse();
}
@Test
@@ -355,10 +355,7 @@
when(httpSessionMock.post(eq(buildCacheEndpoint(Constants.PROJECTS)), eq(keyJson), any()))
.thenReturn(new HttpResult(SUCCESSFUL, EMPTY_MSG));
assertThat(
- forwarder
- .evict(Constants.PROJECTS, key)
- .get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ forwarder.evict(Constants.PROJECTS, key).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result())
.isTrue();
}
@@ -369,10 +366,7 @@
when(httpSessionMock.post(eq(buildCacheEndpoint(Constants.ACCOUNTS)), eq(keyJson), any()))
.thenReturn(new HttpResult(SUCCESSFUL, EMPTY_MSG));
assertThat(
- forwarder
- .evict(Constants.ACCOUNTS, key)
- .get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ forwarder.evict(Constants.ACCOUNTS, key).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result())
.isTrue();
}
@@ -384,10 +378,7 @@
when(httpSessionMock.post(eq(endpoint), eq(keyJson), any()))
.thenReturn(new HttpResult(SUCCESSFUL, EMPTY_MSG));
assertThat(
- forwarder
- .evict(Constants.GROUPS, key)
- .get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ forwarder.evict(Constants.GROUPS, key).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result())
.isTrue();
}
@@ -402,7 +393,7 @@
forwarder
.evict(Constants.GROUPS_BYINCLUDE, key)
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -416,7 +407,7 @@
forwarder
.evict(Constants.GROUPS_MEMBERS, key)
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -427,10 +418,7 @@
when(httpSessionMock.post(eq(buildCacheEndpoint(Constants.PROJECTS)), eq(keyJson), any()))
.thenReturn(new HttpResult(FAILED, EMPTY_MSG));
assertThat(
- forwarder
- .evict(Constants.PROJECTS, key)
- .get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ forwarder.evict(Constants.PROJECTS, key).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result())
.isFalse();
}
@@ -441,10 +429,7 @@
when(httpSessionMock.post(eq(buildCacheEndpoint(Constants.PROJECTS)), eq(keyJson), any()))
.thenThrow(IOException.class);
assertThat(
- forwarder
- .evict(Constants.PROJECTS, key)
- .get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ forwarder.evict(Constants.PROJECTS, key).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result())
.isFalse();
}
@@ -458,10 +443,7 @@
when(httpSessionMock.post(eq(buildProjectListCacheEndpoint(projectName)), any(), any()))
.thenReturn(new HttpResult(SUCCESSFUL, EMPTY_MSG));
assertThat(
- forwarder
- .addToProjectList(projectName)
- .get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ forwarder.addToProjectList(projectName).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result())
.isTrue();
}
@@ -471,10 +453,7 @@
when(httpSessionMock.post(eq(buildProjectListCacheEndpoint(projectName)), any(), any()))
.thenReturn(new HttpResult(FAILED, EMPTY_MSG));
assertThat(
- forwarder
- .addToProjectList(projectName)
- .get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ forwarder.addToProjectList(projectName).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result())
.isFalse();
}
@@ -484,10 +463,7 @@
when(httpSessionMock.post(eq(buildProjectListCacheEndpoint(projectName)), any(), any()))
.thenThrow(IOException.class);
assertThat(
- forwarder
- .addToProjectList(projectName)
- .get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ forwarder.addToProjectList(projectName).get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS).result())
.isFalse();
}
@@ -500,7 +476,7 @@
forwarder
.removeFromProjectList(projectName)
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -513,7 +489,7 @@
forwarder
.removeFromProjectList(projectName)
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -526,7 +502,7 @@
forwarder
.removeFromProjectList(projectName)
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -545,7 +521,7 @@
forwarder
.evict(Constants.PROJECT_LIST, new Object())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -560,7 +536,7 @@
forwarder
.evict(Constants.PROJECT_LIST, new Object())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isTrue();
}
@@ -574,7 +550,7 @@
forwarder
.evict(Constants.PROJECT_LIST, new Object())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
@@ -589,7 +565,7 @@
forwarder
.evict(Constants.PROJECT_LIST, new Object())
.get(TEST_TIMEOUT, TEST_TIMEOUT_UNITS)
- .getResult())
+ .result())
.isFalse();
}
}