This is an automated email from the ASF dual-hosted git repository. tmaret pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-journal.git
commit fe471d6d2158d70b74197499cf6a66132f3ab5e7 Author: tmaret <[email protected]> AuthorDate: Tue Apr 7 23:34:39 2020 +0200 SLING-9340 - Add a comments highlighting why we don't use interrupt --- .../journal/impl/precondition/StagingPrecondition.java | 8 ++++++++ .../sling/distribution/journal/impl/queue/impl/PubQueueCache.java | 8 ++++++++ .../journal/impl/subscriber/DistributionSubscriber.java | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/precondition/StagingPrecondition.java b/src/main/java/org/apache/sling/distribution/journal/impl/precondition/StagingPrecondition.java index c0e3d48..d523cdf 100644 --- a/src/main/java/org/apache/sling/distribution/journal/impl/precondition/StagingPrecondition.java +++ b/src/main/java/org/apache/sling/distribution/journal/impl/precondition/StagingPrecondition.java @@ -68,6 +68,14 @@ public class StagingPrecondition implements Precondition, Runnable { @Deactivate public synchronized void deactivate() { + + /* + * Note that we don't interrupt blocking calls using Thread.interrupt() + * because interrupts can stop the Apache Oak repository. + * + * See SLING-9340, OAK-2609 and https://jackrabbit.apache.org/oak/docs/dos_and_donts.html + */ + IOUtils.closeQuietly(watcher); running = false; } diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/queue/impl/PubQueueCache.java b/src/main/java/org/apache/sling/distribution/journal/impl/queue/impl/PubQueueCache.java index 84e28c3..1b9e14d 100644 --- a/src/main/java/org/apache/sling/distribution/journal/impl/queue/impl/PubQueueCache.java +++ b/src/main/java/org/apache/sling/distribution/journal/impl/queue/impl/PubQueueCache.java @@ -150,6 +150,14 @@ public class PubQueueCache { } public void close() { + + /* + * Note that we don't close resources using Thread.interrupt() + * because interrupts can stop the Apache Oak repository. + * + * See SLING-9340, OAK-2609 and https://jackrabbit.apache.org/oak/docs/dos_and_donts.html + */ + closed = true; IOUtils.closeQuietly(tailPoller); jmxRegs.stream().forEach(IOUtils::closeQuietly); diff --git a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java index 8ca48ff..663dce7 100644 --- a/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java +++ b/src/main/java/org/apache/sling/distribution/journal/impl/subscriber/DistributionSubscriber.java @@ -243,6 +243,14 @@ public class DistributionSubscriber implements DistributionAgent { @Deactivate public void deactivate() { + + /* + * Note that we don't interrupt blocking calls using Thread.interrupt() + * because interrupts can stop the Apache Oak repository. + * + * See SLING-9340, OAK-2609 and https://jackrabbit.apache.org/oak/docs/dos_and_donts.html + */ + componentReg.unregister(); IOUtils.closeQuietly(subscriberIdle, announcer, bookKeeper, packagePoller, commandPoller);
