Author: cziegeler
Date: Tue May  2 09:35:16 2017
New Revision: 1793452

URL: http://svn.apache.org/viewvc?rev=1793452&view=rev
Log:
SLING-5387 : Provide support for running singleton jobs on non leader cluster 
nodes also

Modified:
    
sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzJobExecutor.java
    
sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/WebConsolePrinter.java

Modified: 
sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzJobExecutor.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzJobExecutor.java?rev=1793452&r1=1793451&r2=1793452&view=diff
==============================================================================
--- 
sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzJobExecutor.java
 (original)
+++ 
sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzJobExecutor.java
 Tue May  2 09:35:16 2017
@@ -106,7 +106,10 @@ public class QuartzJobExecutor implement
             return runOn != null && runOn.length == 1 && 
Scheduler.VALUE_RUN_ON_SINGLE.equals(runOn[0]);
         }
 
-        public boolean shouldRunAsSingle() {
+        public String shouldRunAsSingleOn() {
+            if ( !isRunOnSingle() ) {
+                return null;
+            }
             final String[] ids = QuartzJobExecutor.SLING_IDS.get();
             boolean schedule = false;
             if ( ids != null ) {
@@ -120,12 +123,13 @@ public class QuartzJobExecutor implement
                     // although this should never happen (MD5 and UTF-8 are 
always available) we consider
                     // this an error case
                     
LoggerFactory.getLogger(getClass().getName()).error("Unable to distribute 
scheduled " + this, ex);
-                    return false;
+                    return "";
                 }
                 final String myId = SLING_ID;
                 schedule = myId != null && myId.equals(ids[index]);
+                return schedule ? null : ids[index];
             }
-            return schedule;
+            return "";
         }
     }
 
@@ -175,7 +179,7 @@ public class QuartzJobExecutor implement
                 if ( myId == null ) {
                     return false;
                 }
-                if ( !desc.shouldRunAsSingle() ) {
+                if ( desc.shouldRunAsSingleOn() != null ) {
                     logger.debug("Excluding {} - distributed to different 
Sling instance", desc);
                     return false;
                 }

Modified: 
sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/WebConsolePrinter.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/WebConsolePrinter.java?rev=1793452&r1=1793451&r2=1793452&view=diff
==============================================================================
--- 
sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/WebConsolePrinter.java
 (original)
+++ 
sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/WebConsolePrinter.java
 Tue May  2 09:35:16 2017
@@ -107,8 +107,11 @@ public class WebConsolePrinter {
                                                         pw.print(" (inactive: 
not leader)");
                                                     }
                                                 } else {
-                                                    if ( 
!desc.shouldRunAsSingle() ) {
-                                                        pw.print(" (inactive: 
single distributed elsewhere)");
+                                                    final String id = 
desc.shouldRunAsSingleOn();
+                                                    if ( id != null ) {
+                                                        pw.print(" (inactive: 
single distributed elsewhere ");
+                                                        pw.print(id);
+                                                        pw.print(")");
                                                     }
                                                 }
                                             } else {


Reply via email to