Return-Path: Delivered-To: apmail-incubator-sling-commits-archive@minotaur.apache.org Received: (qmail 36403 invoked from network); 7 Apr 2009 10:32:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 7 Apr 2009 10:32:04 -0000 Received: (qmail 10078 invoked by uid 500); 7 Apr 2009 10:32:04 -0000 Delivered-To: apmail-incubator-sling-commits-archive@incubator.apache.org Received: (qmail 10027 invoked by uid 500); 7 Apr 2009 10:32:04 -0000 Mailing-List: contact sling-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: sling-dev@incubator.apache.org Delivered-To: mailing list sling-commits@incubator.apache.org Received: (qmail 10016 invoked by uid 99); 7 Apr 2009 10:32:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Apr 2009 10:32:04 +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; Tue, 07 Apr 2009 10:31:57 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id A73552388A3D; Tue, 7 Apr 2009 10:31:36 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r762678 - /incubator/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java Date: Tue, 07 Apr 2009 10:31:36 -0000 To: sling-commits@incubator.apache.org From: cziegeler@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090407103136.A73552388A3D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cziegeler Date: Tue Apr 7 10:31:36 2009 New Revision: 762678 URL: http://svn.apache.org/viewvc?rev=762678&view=rev Log: Acknowledge the job processing before thread is started to avoid problems when a thread pool is used Modified: incubator/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java Modified: incubator/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java URL: http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java?rev=762678&r1=762677&r2=762678&view=diff ============================================================================== --- incubator/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java (original) +++ incubator/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java Tue Apr 7 10:31:36 2009 @@ -236,6 +236,19 @@ * This method also sends an acknowledge message to the job event handler. */ public static void processJob(final Event job, final JobProcessor processor) { + // first check for a notifier context to send an acknowledge + boolean notify = true; + final JobStatusNotifier.NotifierContext ctx = getNotifierContext(job); + if ( ctx != null ) { + if ( !ctx.notifier.sendAcknowledge(job, ctx.eventNodePath) ) { + // if we don't get an ack, someone else is already processing this job. + // we process but do not notify the job event handler. + LoggerFactory.getLogger(EventUtil.class).info("Someone else is already processing job {}.", job); + notify = false; + } + } + final boolean notifyResult = notify; + final Runnable task = new Runnable() { /** @@ -243,19 +256,7 @@ */ public void run() { boolean result = false; - boolean notifyResult = true; try { - // first check for a notifier context to send an acknowledge - final JobStatusNotifier.NotifierContext ctx = getNotifierContext(job); - if ( ctx != null ) { - if ( !ctx.notifier.sendAcknowledge(job, ctx.eventNodePath) ) { - // if we don't get an ack, someone else is already processing this job. - // we process but do not notify the job event handler. - LoggerFactory.getLogger(EventUtil.class).info("Someone else is already processing job {}.", job); - notifyResult = false; - } - } - result = processor.process(job); } catch (Throwable t) { LoggerFactory.getLogger(EventUtil.class).error("Unhandled error occured in job processor " + t.getMessage() + " while processing job " + job, t);