You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by tm...@apache.org on 2020/04/07 21:38:52 UTC

[sling-org-apache-sling-distribution-journal] 07/07: SLING-9340 - Add a comments highlighting why we don't use interrupt

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 <tm...@adobe.com>
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);