diff --git a/pom.xml b/pom.xml index fe85bf3f41..faf8915b3a 100644 --- a/pom.xml +++ b/pom.xml @@ -95,12 +95,12 @@ 4.5.14 6.7.2 4.1.101.Final - 4.4.4 + 4.4.6 - 20.2 + 20.4 9.31 1.75 1.9.3 diff --git a/src/main/java/io/cryostat/net/web/http/api/v2/RuleDeleteHandler.java b/src/main/java/io/cryostat/net/web/http/api/v2/RuleDeleteHandler.java index 2bfa9fad18..ca358347a7 100644 --- a/src/main/java/io/cryostat/net/web/http/api/v2/RuleDeleteHandler.java +++ b/src/main/java/io/cryostat/net/web/http/api/v2/RuleDeleteHandler.java @@ -127,13 +127,13 @@ public IntermediateResponse handle(RequestParameters params) throws ApiExc .send(); if (Boolean.valueOf(params.getQueryParams().get(CLEAN_PARAM))) { vertx.executeBlocking( - promise -> { + () -> { try { cleanup(params, rule); - promise.complete(); } catch (Exception e) { - promise.fail(e); + logger.error(e); } + return null; }); } return new IntermediateResponse().body(null); @@ -144,7 +144,7 @@ private void cleanup(RequestParameters params, Rule rule) { .forEach( (ServiceRef ref) -> { vertx.executeBlocking( - promise -> { + () -> { try { if (ruleRegistry.applies(rule, ref)) { String targetId = ref.getServiceUri().toString(); @@ -157,11 +157,10 @@ private void cleanup(RequestParameters params, Rule rule) { recordings.stopRecording( cd, rule.getRecordingName(), true); } - promise.complete(); } catch (Exception e) { logger.error(e); - promise.fail(e); } + return null; }); }); } diff --git a/src/main/java/io/cryostat/net/web/http/api/v2/RulePatchHandler.java b/src/main/java/io/cryostat/net/web/http/api/v2/RulePatchHandler.java index 2ee969d820..e8f2250dc3 100644 --- a/src/main/java/io/cryostat/net/web/http/api/v2/RulePatchHandler.java +++ b/src/main/java/io/cryostat/net/web/http/api/v2/RulePatchHandler.java @@ -140,13 +140,13 @@ public IntermediateResponse handle(RequestParameters params) throws ApiExc if (!enabled && Boolean.valueOf(params.getQueryParams().get(CLEAN_PARAM))) { vertx.executeBlocking( - promise -> { + () -> { try { cleanup(params, rule); - promise.complete(); } catch (Exception e) { - promise.fail(e); + logger.error(e); } + return null; }); } @@ -158,7 +158,7 @@ private void cleanup(RequestParameters params, Rule rule) { .forEach( (ServiceRef ref) -> { vertx.executeBlocking( - promise -> { + () -> { try { if (ruleRegistry.applies(rule, ref)) { String targetId = ref.getServiceUri().toString(); @@ -171,11 +171,10 @@ private void cleanup(RequestParameters params, Rule rule) { recordings.stopRecording( cd, rule.getRecordingName(), true); } - promise.complete(); } catch (Exception e) { logger.error(e); - promise.fail(e); } + return null; }); }); } diff --git a/src/test/java/io/cryostat/MockVertx.java b/src/test/java/io/cryostat/MockVertx.java index ab69a1d601..0bce2adfe0 100644 --- a/src/test/java/io/cryostat/MockVertx.java +++ b/src/test/java/io/cryostat/MockVertx.java @@ -15,6 +15,8 @@ */ package io.cryostat; +import java.util.concurrent.Callable; + import io.vertx.core.AsyncResult; import io.vertx.core.Handler; import io.vertx.core.Promise; @@ -114,7 +116,7 @@ public boolean failed() { .executeBlocking(Mockito.any(), Mockito.any()); Mockito.lenient() - .when(vertx.executeBlocking(Mockito.any())) + .when(vertx.executeBlocking(Mockito.any(Handler.class))) .thenAnswer( new Answer() { @Override @@ -128,6 +130,17 @@ public Object answer(InvocationOnMock invocation) throws Throwable { } }); + Mockito.lenient() + .when(vertx.executeBlocking(Mockito.any(Callable.class))) + .thenAnswer( + new Answer() { + @Override + public Object answer(InvocationOnMock invocation) throws Throwable { + Callable callable = invocation.getArgument(0); + return callable.call(); + } + }); + Mockito.lenient() .doAnswer( new Answer() { diff --git a/src/test/java/io/cryostat/net/web/http/api/v2/RuleDeleteHandlerTest.java b/src/test/java/io/cryostat/net/web/http/api/v2/RuleDeleteHandlerTest.java index 72307e892c..14cd5e8bb7 100644 --- a/src/test/java/io/cryostat/net/web/http/api/v2/RuleDeleteHandlerTest.java +++ b/src/test/java/io/cryostat/net/web/http/api/v2/RuleDeleteHandlerTest.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.concurrent.Callable; import io.cryostat.MainModule; import io.cryostat.MockVertx; @@ -181,7 +182,7 @@ void shouldRespondWith404ForNonexistentRule() throws Exception { Assertions.assertThrows(ApiException.class, () -> handler.handle(params)); MatcherAssert.assertThat(ex.getStatusCode(), Matchers.equalTo(404)); - Mockito.verify(vertx, Mockito.never()).executeBlocking(Mockito.any()); + Mockito.verify(vertx, Mockito.never()).executeBlocking(Mockito.any(Callable.class)); Mockito.verify(registry, Mockito.never()).deleteRule(Mockito.any(Rule.class)); Mockito.verify(registry, Mockito.never()).deleteRule(Mockito.anyString()); Mockito.verify(registry, Mockito.never()).applies(Mockito.any(), Mockito.any()); @@ -223,7 +224,7 @@ void shouldRespondWith200ForCleanupFailures() throws Exception { IntermediateResponse response = handler.handle(params); MatcherAssert.assertThat(response.getStatusCode(), Matchers.equalTo(200)); - Mockito.verify(vertx, Mockito.times(2)).executeBlocking(Mockito.any()); + Mockito.verify(vertx, Mockito.times(2)).executeBlocking(Mockito.any(Callable.class)); Mockito.verify(registry).deleteRule(rule); Mockito.verify(registry).applies(rule, serviceRef); Mockito.verify(recordingTargetHelper) @@ -253,7 +254,7 @@ void shouldRespondWith200AfterCleanupNoop() throws Exception { IntermediateResponse response = handler.handle(params); MatcherAssert.assertThat(response.getStatusCode(), Matchers.equalTo(200)); - Mockito.verify(vertx, Mockito.times(1)).executeBlocking(Mockito.any()); + Mockito.verify(vertx, Mockito.times(1)).executeBlocking(Mockito.any(Callable.class)); Mockito.verify(registry).deleteRule(rule); Mockito.verify(registry, Mockito.never()).applies(Mockito.any(), Mockito.any()); Mockito.verify(recordingTargetHelper, Mockito.never()) @@ -288,7 +289,7 @@ void shouldRespondWith200AfterSuccessfulCleanup() throws Exception { IntermediateResponse response = handler.handle(params); MatcherAssert.assertThat(response.getStatusCode(), Matchers.equalTo(200)); - Mockito.verify(vertx, Mockito.times(2)).executeBlocking(Mockito.any()); + Mockito.verify(vertx, Mockito.times(2)).executeBlocking(Mockito.any(Callable.class)); Mockito.verify(registry).deleteRule(rule); Mockito.verify(registry).applies(Mockito.any(), Mockito.any()); Mockito.verify(recordingTargetHelper) diff --git a/src/test/java/io/cryostat/net/web/http/api/v2/RulePatchHandlerTest.java b/src/test/java/io/cryostat/net/web/http/api/v2/RulePatchHandlerTest.java index afb680163b..1019868f06 100644 --- a/src/test/java/io/cryostat/net/web/http/api/v2/RulePatchHandlerTest.java +++ b/src/test/java/io/cryostat/net/web/http/api/v2/RulePatchHandlerTest.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.concurrent.Callable; import io.cryostat.MainModule; import io.cryostat.MockVertx; @@ -220,7 +221,7 @@ void shouldDisableRuleAndCleanup() throws Exception { Mockito.verify(notificationBuilder).build(); Mockito.verify(notification).send(); - Mockito.verify(vertx, Mockito.times(2)).executeBlocking(Mockito.any()); + Mockito.verify(vertx, Mockito.times(2)).executeBlocking(Mockito.any(Callable.class)); Mockito.verify(registry) .applies(Mockito.any(Rule.class), Mockito.any(ServiceRef.class)); Mockito.verify(recordingTargetHelper)