You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2014/01/14 21:57:04 UTC

git commit: AMBARI-4291. To handle misfired trigger, the scheduler should start after a fixed delay. (swagle)

Updated Branches:
  refs/heads/trunk 625d0df9a -> e192cc384


AMBARI-4291. To handle misfired trigger, the scheduler should start after a fixed delay. (swagle)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e192cc38
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e192cc38
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e192cc38

Branch: refs/heads/trunk
Commit: e192cc3849ecc6b22550883808bdd4f969be0fc9
Parents: 625d0df
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Tue Jan 14 12:51:56 2014 -0800
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Tue Jan 14 12:56:59 2014 -0800

----------------------------------------------------------------------
 .../apache/ambari/server/configuration/Configuration.java | 10 ++++++++++
 .../server/scheduler/AbstractLinearExecutionJob.java      |  2 +-
 .../ambari/server/scheduler/ExecutionScheduleManager.java |  4 +++-
 .../ambari/server/scheduler/ExecutionScheduler.java       |  2 +-
 .../ambari/server/scheduler/ExecutionSchedulerImpl.java   |  4 ++--
 .../ambari/server/scheduler/ExecutionSchedulerTest.java   |  4 ++--
 6 files changed, 19 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/e192cc38/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index a1a25e0..6b2301d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -271,9 +271,13 @@ public class Configuration {
     "server.execution.scheduler.maxDbConnections";
   public static final String EXECUTION_SCHEDULER_MISFIRE_TOLERATION =
     "server.execution.scheduler.misfire.toleration.minutes";
+  public static final String EXECUTION_SCHEDULER_START_DELAY =
+    "server.execution.scheduler.start.delay.seconds";
+
   public static final String DEFAULT_SCHEDULER_THREAD_COUNT = "5";
   public static final String DEFAULT_SCHEDULER_MAX_CONNECTIONS = "5";
   public static final String DEFAULT_EXECUTION_SCHEDULER_MISFIRE_TOLERATION = "480";
+  public static final String DEFAULT_SCHEDULER_START_DELAY_SECONDS = "120";
 
   private static final Logger LOG = LoggerFactory.getLogger(
       Configuration.class);
@@ -899,4 +903,10 @@ public class Configuration {
         DEFAULT_EXECUTION_SCHEDULER_MISFIRE_TOLERATION);
     return Long.parseLong(limit);
   }
+
+  public Integer getExecutionSchedulerStartDelay() {
+    String delay = properties.getProperty(EXECUTION_SCHEDULER_START_DELAY,
+      DEFAULT_SCHEDULER_START_DELAY_SECONDS);
+    return Integer.parseInt(delay);
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/e192cc38/ambari-server/src/main/java/org/apache/ambari/server/scheduler/AbstractLinearExecutionJob.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/scheduler/AbstractLinearExecutionJob.java b/ambari-server/src/main/java/org/apache/ambari/server/scheduler/AbstractLinearExecutionJob.java
index 5fdd77e..9203aac 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/scheduler/AbstractLinearExecutionJob.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/scheduler/AbstractLinearExecutionJob.java
@@ -97,7 +97,7 @@ public abstract class AbstractLinearExecutionJob implements ExecutionJob {
       return;
     }
 
-    int separationSeconds = jobDataMap.getIntValue((NEXT_EXECUTION_SEPARATION_SECONDS));
+    int separationSeconds = jobDataMap.getIntValue(NEXT_EXECUTION_SEPARATION_SECONDS);
 
     // Create trigger for next job execution
     Trigger trigger = newTrigger()

http://git-wip-us.apache.org/repos/asf/ambari/blob/e192cc38/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduleManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduleManager.java b/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduleManager.java
index 7949952..98e7b4e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduleManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduleManager.java
@@ -125,8 +125,10 @@ public class ExecutionScheduleManager {
   public void start() {
     LOG.info("Starting scheduler");
     try {
-      executionScheduler.startScheduler();
+      executionScheduler.startScheduler(configuration
+        .getExecutionSchedulerStartDelay());
       schedulerAvailable = true;
+
     } catch (AmbariException e) {
       LOG.warn("Unable to start scheduler. No recurring tasks will be " +
         "scheduled.");

http://git-wip-us.apache.org/repos/asf/ambari/blob/e192cc38/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduler.java b/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduler.java
index c51bd6b..6644e1b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionScheduler.java
@@ -32,7 +32,7 @@ public interface ExecutionScheduler {
    * Initialize and start the scheduler to accept jobs.
    * @throws AmbariException
    */
-  public void startScheduler() throws AmbariException;
+  public void startScheduler(Integer delay) throws AmbariException;
 
   /**
    * Shutdown the scheduler threads and do not accept any more jobs.

http://git-wip-us.apache.org/repos/asf/ambari/blob/e192cc38/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionSchedulerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionSchedulerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionSchedulerImpl.java
index 353aaf0..7e1381d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionSchedulerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/scheduler/ExecutionSchedulerImpl.java
@@ -148,7 +148,7 @@ public class ExecutionSchedulerImpl implements ExecutionScheduler {
   }
 
   @Override
-  public synchronized void startScheduler() throws AmbariException {
+  public synchronized void startScheduler(Integer delay) throws AmbariException {
     try {
       if (!isInitialized) {
         initializeScheduler();
@@ -161,7 +161,7 @@ public class ExecutionSchedulerImpl implements ExecutionScheduler {
       throw new AmbariException(msg);
     }
     try {
-      scheduler.start();
+      scheduler.startDelayed(delay != null ? delay : 0);
     } catch (SchedulerException e) {
       LOG.error("Failed to start scheduler", e);
       throw new AmbariException(e.getMessage());

http://git-wip-us.apache.org/repos/asf/ambari/blob/e192cc38/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionSchedulerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionSchedulerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionSchedulerTest.java
index ebf54ac..89c8d26 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionSchedulerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionSchedulerTest.java
@@ -92,7 +92,7 @@ public class ExecutionSchedulerTest {
     Scheduler scheduler = createNiceMock(Scheduler.class);
 
     expect(factory.getScheduler()).andReturn(scheduler);
-    expectPrivate(scheduler, "start").once();
+    expectPrivate(scheduler, "startDelayed", new Integer(180)).once();
     expectNew(StdSchedulerFactory.class).andReturn(factory);
     expectPrivate(scheduler, "shutdown").once();
 
@@ -100,7 +100,7 @@ public class ExecutionSchedulerTest {
 
     ExecutionSchedulerImpl executionScheduler = new ExecutionSchedulerImpl(configuration);
 
-    executionScheduler.startScheduler();
+    executionScheduler.startScheduler(180);
     executionScheduler.stopScheduler();
 
     PowerMock.verify(factory, StdSchedulerFactory.class, scheduler);