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);

Reply via email to