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(); } }