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