This is an automated email from the ASF dual-hosted git repository. tmaret pushed a commit to branch SLING-10314 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-journal.git
commit 8957db47f3a482b311dfca25571d97df8bceb925 Author: tmaret <[email protected]> AuthorDate: Fri Jun 25 16:53:55 2021 +0200 SLING-10314 - PubQueueProviderImpl close may throw IllegalStateException --- pom.xml | 5 +++++ .../journal/queue/impl/PubQueueProviderImpl.java | 1 + .../journal/queue/impl/PubQueueProviderTest.java | 13 ++++++++++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index a564c59..5b2b330 100644 --- a/pom.xml +++ b/pom.xml @@ -216,6 +216,11 @@ <version>1.3.2</version> </dependency> <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.testing.osgi-mock.junit4</artifactId> + <version>3.1.2</version> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> diff --git a/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubQueueProviderImpl.java b/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubQueueProviderImpl.java index 20e11f0..6ee5c31 100644 --- a/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubQueueProviderImpl.java +++ b/src/main/java/org/apache/sling/distribution/journal/queue/impl/PubQueueProviderImpl.java @@ -100,6 +100,7 @@ public class PubQueueProviderImpl implements PubQueueProvider, Runnable { if (reg != null) { try { reg.unregister(); + reg = null; } catch (Exception e) { LOG.info(e.getMessage(), e); } diff --git a/src/test/java/org/apache/sling/distribution/journal/queue/impl/PubQueueProviderTest.java b/src/test/java/org/apache/sling/distribution/journal/queue/impl/PubQueueProviderTest.java index 85e6d24..fbaa44b 100644 --- a/src/test/java/org/apache/sling/distribution/journal/queue/impl/PubQueueProviderTest.java +++ b/src/test/java/org/apache/sling/distribution/journal/queue/impl/PubQueueProviderTest.java @@ -20,6 +20,7 @@ package org.apache.sling.distribution.journal.queue.impl; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; +import static org.mockito.Matchers.any; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -58,6 +59,7 @@ import org.apache.sling.distribution.journal.shared.Topics; import org.apache.sling.distribution.queue.DistributionQueueEntry; import org.apache.sling.distribution.queue.DistributionQueueItem; import org.apache.sling.distribution.queue.spi.DistributionQueue; +import org.apache.sling.testing.mock.osgi.MockOsgi; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -102,8 +104,7 @@ public class PubQueueProviderTest { @Mock private CacheCallback callback; - @Mock - private BundleContext context; + private final BundleContext context = MockOsgi.newBundleContext(); private MessageHandler<PackageMessage> handler; @@ -117,7 +118,7 @@ public class PubQueueProviderTest { .thenReturn(poller); when(clientProvider.createPoller( Mockito.eq(Topics.STATUS_TOPIC), - Mockito.any(Reset.class), + any(Reset.class), statHandlerCaptor.capture())) .thenReturn(statPoller); QueueErrors queueErrors = mock(QueueErrors.class); @@ -186,6 +187,12 @@ public class PubQueueProviderTest { DistributionQueueItem item = head.getItem(); assertThat(item.getPackageId(), equalTo("packageid1")); } + + @Test + public void testMultipleCloseInvocations() { + queueProvider.close(); + queueProvider.close(); + } @Test public void testCleanUp() {
