You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by jo...@apache.org on 2022/01/03 15:08:20 UTC

[sling-org-apache-sling-event-dea] 01/01: SLING-11025 use a dedicated thread pool

This is an automated email from the ASF dual-hosted git repository.

joerghoh pushed a commit to branch improvement/SLING-11025-use-dedicated-threadpool
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-event-dea.git

commit 1d1262eee27567d896e4ffbd3253296dfc9974e6
Author: Joerg Hoh <jh...@adobe.com>
AuthorDate: Mon Jan 3 16:08:00 2022 +0100

    SLING-11025 use a dedicated thread pool
---
 .../apache/sling/event/dea/impl/DistributedEventReceiver.java    | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/event/dea/impl/DistributedEventReceiver.java b/src/main/java/org/apache/sling/event/dea/impl/DistributedEventReceiver.java
index 9d5e71b..6fe6302 100644
--- a/src/main/java/org/apache/sling/event/dea/impl/DistributedEventReceiver.java
+++ b/src/main/java/org/apache/sling/event/dea/impl/DistributedEventReceiver.java
@@ -87,7 +87,7 @@ public class DistributedEventReceiver
     /** The cleanup period. */
     private final int cleanupPeriod;
 
-    /** Resolver used for writing. */
+    /** Resolver used for writing; needs to be refreshed before used */
     private volatile ResourceResolver writerResolver;
 
     /** Is the background task still running? */
@@ -126,6 +126,7 @@ public class DistributedEventReceiver
                 // schedule this service every 30 minutes
                 props.put("scheduler.period", 1800L);
                 props.put("scheduler.concurrent", Boolean.FALSE);
+                props.put("scheduler.threadpool", "org-apache-sling-event-dea");
 
                 final ServiceRegistration<?> reg =
                         bundleContext.registerService(new String[] {EventHandler.class.getName(),
@@ -135,6 +136,10 @@ public class DistributedEventReceiver
 
                 DistributedEventReceiver.this.serviceRegistration = reg;
 
+                /**
+                 * The writerResolver is a long running resource resolver, which is refreshed before it is used.
+                 * We also cannot use try-with-resource here, because writerResolver needs to be global due to this.
+                 */
                 try {
                     writerResolver = resourceResolverFactory.getServiceResourceResolver(null);
                     ResourceUtil.getOrCreateResource(writerResolver,
@@ -148,7 +153,7 @@ public class DistributedEventReceiver
                     running = false;
                 }
                 try {
-                    processWriteQueue();
+                    processWriteQueue(); // this will block until stop() is invoked
                 } catch (final Throwable t) { //NOSONAR
                     logger.error("Writer thread stopped with exception: " + t.getMessage(), t);
                     running = false;