title: Quartz.net Late Execution with DisallowConcurrentExecution
body: <p>I am using the latest nuget Quartz.net packages (v2.1.2.400). </p>
  
  <p>This is my job...</p>
  
  <pre><code>[DisallowConcurrentExecution]
  [PersistJobDataAfterExecution]
  public class HelloJob : IJob
  {
      public void Execute(IJobExecutionContext context)
      {
          Console.Out.WriteLine("Hello Job Now=" + DateTime.Now.ToString("s") + " Next=" + context.NextFireTimeUtc.Value.ToLocalTime().ToString("s"));
      }
  }
  </code></pre>
  
  <p>This is my job and trigger setup...</p>
  
  <pre><code>            trigger = TriggerBuilder.Create()
              .WithIdentity("trigger1")
              .StartAt(DateTime.UtcNow.AddSeconds(5))
              .WithSchedule(SimpleScheduleBuilder
                  .RepeatSecondlyForever(10)
                  .WithMisfireHandlingInstructionIgnoreMisfires()                    
              ).Build();
              var job = JobBuilder.Create&lt;HelloJob&gt;().WithIdentity("job1").Build();
              sched.ScheduleJob(job, trigger);
  </code></pre>
  
  <p>This is my config...</p>
  
  <pre><code>        properties["quartz.scheduler.instanceName"] = "TestScheduler";
          properties["quartz.scheduler.instanceId"] = "AUTO";
          properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
          properties["quartz.jobStore.useProperties"] = "true";
          properties["quartz.jobStore.dataSource"] = "default";
          properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
          // if running MS SQL Server we need this
          properties["quartz.jobStore.lockHandler.type"] = "Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz";
          properties["quartz.jobStore.clustered"] = "true";
  
          //http://www.connectionstrings.com/mysql#mysql-connector-net-mysqlconnection
          properties["quartz.dataSource.default.connectionString"] = "Server=localhost;Database=quartz;Uid=xxxx;Pwd=xxxxxx;";
          properties["quartz.dataSource.default.provider"] = "MySql-65"; 
  </code></pre>
  
  <p>If I run a job without the [DisallowConcurrentExecution] attribute it runs as expected (i.e. every 10 seconds) like so...</p>
  
  <pre><code>Hello Job Now=2013-07-04T13:04:16 Next=2013-07-04T13:04:26
  Hello Job Now=2013-07-04T13:04:26 Next=2013-07-04T13:04:36
  Hello Job Now=2013-07-04T13:04:36 Next=2013-07-04T13:04:46
  Hello Job Now=2013-07-04T13:04:46 Next=2013-07-04T13:04:56
  Hello Job Now=2013-07-04T13:04:56 Next=2013-07-04T13:05:06
  </code></pre>
  
  <p>If I run a job with the [DisallowConcurrentExecution] attribute it soon runs behind schedule like so...</p>
  
  <pre><code>Hello Job Now=2013-07-04T13:11:00 Next=2013-07-04T13:11:10
  Hello Job Now=2013-07-04T13:11:10 Next=2013-07-04T13:11:20
  Hello Job Now=2013-07-04T13:11:47 Next=2013-07-04T13:11:30
  Hello Job Now=2013-07-04T13:12:17 Next=2013-07-04T13:11:40
  </code></pre>
  
  <p>How can I prevent concurrent execution and have my jobs run on time?</p>