diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java index 2584955b496e8..5e515aacf1760 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java @@ -932,15 +932,16 @@ protected synchronized ScheduledExecutorService getCompactorExecutor() { return this.compactorExecutor; } + // only public so mockito can mock it + public Compactor newCompactor() throws PulsarServerException { + return new TwoPhaseCompactor(this.getConfiguration(), + getClient(), getBookKeeperClient(), + getCompactorExecutor()); + } + public synchronized Compactor getCompactor() throws PulsarServerException { if (this.compactor == null) { - try { - this.compactor = new TwoPhaseCompactor(this.getConfiguration(), - getClient(), getBookKeeperClient(), - getCompactorExecutor()); - } catch (Exception e) { - throw new PulsarServerException(e); - } + this.compactor = newCompactor(); } return this.compactor; } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java index 683c220ba5215..33fbea4e9d172 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java @@ -18,6 +18,7 @@ */ package org.apache.pulsar.broker.auth; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -246,9 +247,6 @@ protected PulsarService startBroker(ServiceConfiguration conf) throws Exception pulsar.start(); conf.setAuthorizationEnabled(isAuthorizationEnabled); - Compactor spiedCompactor = spy(pulsar.getCompactor()); - doReturn(spiedCompactor).when(pulsar).getCompactor(); - return pulsar; } @@ -261,6 +259,10 @@ protected void setupBrokerMocks(PulsarService pulsar) throws Exception { doReturn(namespaceServiceSupplier).when(pulsar).getNamespaceServiceProvider(); doReturn(sameThreadOrderedSafeExecutor).when(pulsar).getOrderedExecutor(); + + doAnswer((invocation) -> { + return spy(invocation.callRealMethod()); + }).when(pulsar).newCompactor(); } public TenantInfo createDefaultTenantInfo() throws PulsarAdminException {