Merge pull request #2 from apache/improvement/SLING-11025-use-dedicated-threadpool

SLING-11025 use a dedicated thread pool
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 @@
     /** 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 @@
                 // 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 @@
 
                 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 @@
                     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;