You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2017/05/02 09:35:17 UTC

svn commit: r1793452 - in /sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl: QuartzJobExecutor.java WebConsolePrinter.java

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 {