<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Apache Aurora</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
    <link href="/assets/css/main.css" rel="stylesheet">
	<!-- Analytics -->
	<script type="text/javascript">
		  var _gaq = _gaq || [];
		  _gaq.push(['_setAccount', 'UA-45879646-1']);
		  _gaq.push(['_setDomainName', 'apache.org']);
		  _gaq.push(['_trackPageview']);

		  (function() {
		    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
		    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
		    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
		  })();
	</script>
  </head>
  <body>
	  
        <div class="container-fluid section-header">
  <div class="container">
    <div class="nav nav-bar">
    <a href="/"><img src="/assets/img/aurora_logo_white_bkg.svg" width="300" alt="Transparent Apache Aurora logo with dark background"/></a>
	<ul class="nav navbar-nav navbar-right">
      <li><a href="/documentation/latest/">Documentation</a></li>
      <li><a href="/community/">Community</a></li>
      <li><a href="/downloads/">Downloads</a></li>
      <li><a href="/blog/">Blog</a></li>
    </ul>
    </div>
  </div>
</div>	
  	  <div class="container-fluid">
  	  	<div class="container content">
          <h1 id="cron-jobs">Cron Jobs</h1>

<p>Aurora supports execution of scheduled jobs on a Mesos cluster using cron-style syntax.</p>

<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#collision-policies">Collision Policies</a>

<ul>
<li><a href="#kill_existing">KILL_EXISTING</a></li>
<li><a href="#cancel_new">CANCEL_NEW</a></li>
</ul></li>
<li><a href="#failure-recovery">Failure recovery</a></li>
<li><a href="#interacting-with-cron-jobs-via-the-aurora-cli">Interacting with cron jobs via the Aurora CLI</a>

<ul>
<li><a href="#cron-schedule">cron schedule</a></li>
<li><a href="#cron-deschedule">cron deschedule</a></li>
<li><a href="#cron-start">cron start</a></li>
<li><a href="#job-killall-job-restart-job-kill">job killall, job restart, job kill</a></li>
</ul></li>
<li><a href="#technical-note-about-syntax">Technical Note About Syntax</a></li>
<li><a href="#caveats">Caveats</a>

<ul>
<li><a href="#failovers">Failovers</a></li>
<li><a href="#collision-policy-is-best-effort">Collision policy is best-effort</a></li>
<li><a href="#timezone-configuration">Timezone Configuration</a></li>
</ul></li>
</ul>

<h2 id="overview">Overview</h2>

<p>A job is identified as a cron job by the presence of a
<code>cron_schedule</code> attribute containing a cron-style schedule in the
<a href="configuration-reference.md#job-objects"><code>Job</code></a> object. Examples of cron schedules
include &ldquo;every 5 minutes&rdquo; (<code>*/5 * * * *</code>), &ldquo;Fridays at 17:00&rdquo; (<code>* 17 * * FRI</code>), and
&ldquo;the 1st and 15th day of the month at 03:00&rdquo; (<code>0 3 1,15 *</code>).</p>

<p>Example (available in the <a href="/documentation/latest/vagrant/">Vagrant environment</a>):</p>
<pre class="highlight text">$ cat /vagrant/examples/job/cron_hello_world.aurora
# cron_hello_world.aurora
# A cron job that runs every 5 minutes.
jobs = [
  Job(
    cluster = &#39;devcluster&#39;,
    role = &#39;www-data&#39;,
    environment = &#39;test&#39;,
    name = &#39;cron_hello_world&#39;,
    cron_schedule = &#39;*/5 * * * *&#39;,
    task = SimpleTask(
      &#39;cron_hello_world&#39;,
      &#39;echo &quot;Hello world from cron, the time is now $(date --rfc-822)&quot;&#39;),
  ),
]
</pre>
<h2 id="collision-policies">Collision Policies</h2>

<p>The <code>cron_collision_policy</code> field specifies the scheduler&rsquo;s behavior when a new cron job is
triggered while an older run hasn&rsquo;t finished. The scheduler has two policies available,
<a href="#kill_existing">KILL_EXISTING</a> and <a href="#cancel_new">CANCEL_NEW</a>.</p>

<h3 id="kill_existing">KILL_EXISTING</h3>

<p>The default policy - on a collision the old instances are killed and a instances with the current
configuration are started.</p>

<h3 id="cancel_new">CANCEL_NEW</h3>

<p>On a collision the new run is cancelled.</p>

<p>Note that the use of this flag is likely a code smell - interrupted cron jobs should be able
to recover their progress on a subsequent invocation, otherwise they risk having their work queue
grow faster than they can process it.</p>

<h2 id="failure-recovery">Failure recovery</h2>

<p>Unlike with services, which aurora will always re-execute regardless of exit status, instances of
cron jobs retry according to the <code>max_task_failures</code> attribute of the
<a href="configuration-reference.md#task-objects">Task</a> object. To get &ldquo;run-until-failure&rdquo; semantics,
set <code>max_task_failures</code> to <code>-1</code>.</p>

<h2 id="interacting-with-cron-jobs-via-the-aurora-cli">Interacting with cron jobs via the Aurora CLI</h2>

<p>Most interaction with cron jobs takes place using the <code>cron</code> subcommand. See <code>aurora2 help cron</code>
for up-to-date usage instructions.</p>

<h3 id="cron-schedule">cron schedule</h3>

<p>Schedules a new cron job on the Aurora cluster for later runs or replaces the existing cron template
with a new one. Only future runs will be affected, any existing active tasks are left intact.</p>
<pre class="highlight text">$ aurora2 cron schedule devcluster/www-data/test/cron_hello_world /vagrant/examples/jobs/cron_hello_world.aurora
</pre>
<h3 id="cron-deschedule">cron deschedule</h3>

<p>Deschedules a cron job, preventing future runs but allowing current runs to complete.</p>
<pre class="highlight text">$ aurora2 cron deschedule devcluster/www-data/test/cron_hello_world
</pre>
<h3 id="cron-start">cron start</h3>

<p>Start a cron job immediately, outside of its normal cron schedule.</p>
<pre class="highlight text">$ aurora2 cron start devcluster/www-data/test/cron_hello_world
</pre>
<h3 id="job-killall,-job-restart,-job-kill">job killall, job restart, job kill</h3>

<p>Cron jobs create instances running on the cluster that you can interact with like normal Aurora
tasks with <code>job kill</code> and <code>job restart</code>.</p>

<h2 id="technical-note-about-syntax">Technical Note About Syntax</h2>

<p><code>cron_schedule</code> uses a restricted subset of BSD crontab syntax. While the
execution engine currently uses Quartz, the schedule parsing is custom, a subset of FreeBSD
<a href="http://www.freebsd.org/cgi/man.cgi?crontab(5)">crontab(5)</a> syntax. See
<a href="https://github.com/apache/incubator-aurora/blob/master/src/main/java/org/apache/aurora/scheduler/cron/CrontabEntry.java#L106-L124">the source</a>
for details.</p>

<h2 id="caveats">Caveats</h2>

<h3 id="failovers">Failovers</h3>

<p>No failover recovery. Aurora does not record the latest minute it fired
triggers for across failovers. Therefore it&rsquo;s possible to miss triggers
on failover. Note that this behavior may change in the future.</p>

<p>It&rsquo;s necessary to sync time between schedulers with something like <code>ntpd</code>.
Clock skew could cause double or missed triggers in the case of a failover.</p>

<h3 id="collision-policy-is-best-effort">Collision policy is best-effort</h3>

<p>Aurora aims to always have <em>at least one copy</em> of a given instance running at a time - it&rsquo;s
an AP system, meaning it chooses Availability and Partition Tolerance at the expense of
Consistency.</p>

<p>If your collision policy was <code>CANCEL_NEW</code> and a task has terminated but
Aurora has not noticed this Aurora will go ahead and create your new
task.</p>

<p>If your collision policy was <code>KILL_EXISTING</code> and a task was marked <code>LOST</code>
but not yet GCed Aurora will go ahead and create your new task without
attempting to kill the old one (outside the GC interval).</p>

<h3 id="timezone-configuration">Timezone Configuration</h3>

<p>Cron timezone is configured indepdendently of JVM timezone with the <code>-cron_timezone</code> flag and
defaults to UTC.</p>

  		</div>
  	  </div>
	  
      	<div class="container-fluid section-footer buffer">
      <div class="container">
        <div class="row">
		  <div class="col-md-2 col-md-offset-1"><h3>Quick Links</h3>
		  <ul>
		    <li><a href="/downloads/">Downloads</a></li>
            <li><a href="/community/">Mailing Lists</a></li>
			<li><a href="http://issues.apache.org/jira/browse/AURORA">Issue Tracking</a></li>
			<li><a href="/documentation/latest/contributing/">How To Contribute</a></li>     
		  </ul>
	      </div>
		  <div class="col-md-2"><h3>The ASF</h3>
          <ul>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
            <li><a href="http://www.apache.org/security/">Security</a></li>
          </ul>
		  </div>
		  <div class="col-md-6">
		    <p class="disclaimer">Apache Aurora is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p>
			<p class="disclaimer">Copyright 2014 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. The <a href="https://www.flickr.com/photos/trondk/12706051375/">Aurora Borealis IX photo</a> displayed on the homepage is available under a <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">Creative Commons BY-NC-ND 2.0 license</a>. Apache, Apache Aurora, and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
        </div>
      </div>
    </div>
	</body>
</html>