Return-Path: Delivered-To: apmail-sling-commits-archive@www.apache.org Received: (qmail 19696 invoked from network); 5 Jul 2010 06:05:08 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 5 Jul 2010 06:05:08 -0000 Received: (qmail 11912 invoked by uid 500); 5 Jul 2010 06:05:08 -0000 Delivered-To: apmail-sling-commits-archive@sling.apache.org Received: (qmail 11858 invoked by uid 500); 5 Jul 2010 06:05:07 -0000 Mailing-List: contact commits-help@sling.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@sling.apache.org Delivered-To: mailing list commits@sling.apache.org Received: (qmail 11851 invoked by uid 99); 5 Jul 2010 06:05:06 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 05 Jul 2010 06:05:06 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 05 Jul 2010 06:05:03 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 7341923889ED; Mon, 5 Jul 2010 06:03:40 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r960452 - in /sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl: JobHandler.java QuartzJobExecutor.java Date: Mon, 05 Jul 2010 06:03:40 -0000 To: commits@sling.apache.org From: cziegeler@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100705060340.7341923889ED@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cziegeler Date: Mon Jul 5 06:03:40 2010 New Revision: 960452 URL: http://svn.apache.org/viewvc?rev=960452&view=rev Log: SLING-1571 : Scheduler must use AtomicBoolean instead of volatile boolean for job-is-running check Modified: sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/JobHandler.java sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzJobExecutor.java Modified: sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/JobHandler.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/JobHandler.java?rev=960452&r1=960451&r2=960452&view=diff ============================================================================== --- sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/JobHandler.java (original) +++ sling/trunk/bundles/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/JobHandler.java Mon Jul 5 06:03:40 2010 @@ -16,6 +16,8 @@ */ package org.apache.sling.commons.scheduler.impl; +import java.util.concurrent.atomic.AtomicBoolean; + /** * The job handler controls the invocation of a job * like parallel invocation and the number of times @@ -25,10 +27,10 @@ public class JobHandler { public final boolean runConcurrently; - public volatile boolean isRunning; + public final AtomicBoolean isRunning; public JobHandler(final boolean runConcurrently) { this.runConcurrently = runConcurrently; - this.isRunning = false; + this.isRunning = new AtomicBoolean(false); } } \ No newline at end of file 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=960452&r1=960451&r2=960452&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 Mon Jul 5 06:03:40 2010 @@ -44,10 +44,9 @@ public class QuartzJobExecutor implement final boolean canRunConcurrently = (handler == null ? true : handler.runConcurrently); if (!canRunConcurrently) { - if ( handler.isRunning ) { + if ( !handler.isRunning.compareAndSet(false, true) ) { return; } - handler.isRunning = true; } final Object job = data.get(QuartzScheduler.DATA_MAP_OBJECT); @@ -76,7 +75,7 @@ public class QuartzJobExecutor implement logger.error("Exception during job execution of " + job + " : " + t.getMessage(), t); } finally { if (!canRunConcurrently) { - handler.isRunning = false; + handler.isRunning.set(false); } } }