hi robert,

thx - you can test the patch already.

regards,
gerhard

http://www.irian.at

Your JSF/JavaEE powerhouse -
JavaEE Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces



2014-07-04 10:47 GMT+02:00 Bordo, Robert <[email protected]>:

> Hi Gerhard,
>
> thanks a lot for your immediate reply.
>
> I filed the following Jira ticket:
> https://issues.apache.org/jira/browse/DELTASPIKE-656
>
> Best regards.
>
> Robert
>
>
>
> Am 03.07.14 20:28 schrieb "Gerhard Petracek" unter
> <[email protected]>:
>
> >hi robert,
> >
> >please file a jira-ticket, i've a fix for it locally.
> >
> >thx & regards,
> >gerhard
> >
> >
> >
> >2014-07-03 13:18 GMT+02:00 Bordo, Robert <[email protected]>:
> >
> >> Hi All,
> >>
> >> When using the Scheduler Module (1.0.0) together with Quartz (2.2.1) and
> >> start more than one job at the same second, I¹m getting
> >> ConcurrentModificationExceptions.
> >>
> >> This behavior can be reproduced with the following code snippet:
> >>
> >>
> >> package de.rb.sandbox;
> >>
> >>
> >> import javax.enterprise.context.ApplicationScoped;
> >>
> >> import javax.enterprise.context.SessionScoped;
> >>
> >>
> >> import org.apache.deltaspike.cdise.api.CdiContainer;
> >>
> >> import org.apache.deltaspike.cdise.api.CdiContainerLoader;
> >>
> >> import org.apache.deltaspike.cdise.api.ContextControl;
> >>
> >> import org.apache.deltaspike.scheduler.api.Scheduled;
> >>
> >> import org.junit.After;
> >>
> >> import org.junit.Assert;
> >>
> >> import org.junit.Before;
> >>
> >> import org.junit.Test;
> >>
> >> import org.quartz.Job;
> >>
> >> import org.quartz.JobExecutionContext;
> >>
> >> import org.quartz.JobExecutionException;
> >>
> >>
> >> public class SchedulerTest extends Assert {
> >>
> >>
> >> private CdiContainer cdiContainer;
> >>
> >>
> >> @Before
> >>
> >> public void setUp() {
> >>
> >> cdiContainer = CdiContainerLoader.getCdiContainer();
> >>
> >> cdiContainer.boot();
> >>
> >>
> >> ContextControl contextControl = cdiContainer.getContextControl();
> >>
> >> contextControl.startContext(ApplicationScoped.class);
> >>
> >> }
> >>
> >>
> >> @After
> >>
> >> public void tearDown() {
> >>
> >> cdiContainer.shutdown();
> >>
> >> }
> >>
> >>
> >> // runs every second
> >>
> >> @Scheduled(cronExpression = "0/1 * * * * ?", startScopes = {
> >> SessionScoped.class })
> >>
> >> public static class Job1 implements Job {
> >>
> >> public void execute(JobExecutionContext context) throws
> >> JobExecutionException {
> >>
> >> System.out.println("Job1");
> >>
> >>
> >> }
> >>
> >> }
> >>
> >>
> >> // runs every 2 seconds
> >>
> >> @Scheduled(cronExpression = "0/2 * * * * ?", startScopes = {
> >> SessionScoped.class })
> >>
> >> public static class Job2 implements Job {
> >>
> >> public void execute(JobExecutionContext context) throws
> >> JobExecutionException {
> >>
> >> System.out.println("Job1");
> >>
> >> }
> >>
> >> }
> >>
> >>
> >> @Test
> >>
> >> public void testIt() throws Exception {
> >>
> >> // run for a minute
> >>
> >> Thread.sleep(60000);
> >>
> >> }
> >>
> >> }
> >>
> >> Produces something like:
> >>
> >>
> >> Job1
> >>
> >> ERROR 2678  2014-07-03 12:10:42,714 [DefaultQuartzScheduler_Worker-1]
> >> org.quartz.core.ErrorLogger.schedulerError(2425) - Unable to notify
> >> JobListener(s) of Job to be executed: (Job will NOT be executed!).
> >>trigger=
> >> DEFAULT.6da64b5bd2ee-8e6928dd-89fe-47aa-a620-cb3b80f36aa6 job=
> >>DEFAULT.Job1
> >>
> >> org.quartz.SchedulerException: JobListener
> >>
> >>'org.apache.deltaspike.scheduler.impl.QuartzScheduler$InjectionAwareJobLi
> >>stener'
> >> threw exception: null
> >>
> >> at
> >>
> >>org.quartz.core.QuartzScheduler.notifyJobListenersToBeExecuted(QuartzSche
> >>duler.java:1947)
> >> ~[quartz-2.2.1.jar:na]
> >>
> >> at
> >>
> >>org.quartz.core.JobRunShell.notifyListenersBeginning(JobRunShell.java:324
> >>)
> >> [quartz-2.2.1.jar:na]
> >>
> >> at org.quartz.core.JobRunShell.run(JobRunShell.java:173)
> >> [quartz-2.2.1.jar:na]
> >>
> >> at
> >>
> >>org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:
> >>573)
> >> [quartz-2.2.1.jar:na]
> >>
> >> Caused by: java.util.ConcurrentModificationException: null
> >>
> >> at java.util.Vector$Itr.checkForComodification(Vector.java:1156)
> >> ~[na:1.7.0_60]
> >>
> >> at java.util.Vector$Itr.next(Vector.java:1133) ~[na:1.7.0_60]
> >>
> >> at
> >>
> >>org.apache.deltaspike.scheduler.impl.QuartzScheduler$InjectionAwareJobLis
> >>tener.jobToBeExecuted(QuartzScheduler.java:370)
> >> ~[deltaspike-scheduler-module-impl-1.0.0.jar:1.0.0]
> >>
> >> at
> >>
> >>org.quartz.core.QuartzScheduler.notifyJobListenersToBeExecuted(QuartzSche
> >>duler.java:1945)
> >> ~[quartz-2.2.1.jar:na]
> >>
> >> ... 3 common frames omitted
> >>
> >> ERROR 2678  2014-07-03 12:10:42,714 [DefaultQuartzScheduler_Worker-2]
> >> org.quartz.core.ErrorLogger.schedulerError(2425) - Unable to notify
> >> JobListener(s) of Job to be executed: (Job will NOT be executed!).
> >>trigger=
> >> DEFAULT.6da64b5bd2ee-8e6928dd-89fe-47aa-a620-cb3b80f36aa6 job=
> >>DEFAULT.Job1
> >>
> >> org.quartz.SchedulerException: JobListener
> >>
> >>'org.apache.deltaspike.scheduler.impl.QuartzScheduler$InjectionAwareJobLi
> >>stener'
> >> threw exception: null
> >>
> >> at
> >>
> >>org.quartz.core.QuartzScheduler.notifyJobListenersToBeExecuted(QuartzSche
> >>duler.java:1947)
> >> ~[quartz-2.2.1.jar:na]
> >>
> >> at
> >>
> >>org.quartz.core.JobRunShell.notifyListenersBeginning(JobRunShell.java:324
> >>)
> >> [quartz-2.2.1.jar:na]
> >>
> >> at org.quartz.core.JobRunShell.run(JobRunShell.java:173)
> >> [quartz-2.2.1.jar:na]
> >>
> >> at
> >>
> >>org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:
> >>573)
> >> [quartz-2.2.1.jar:na]
> >>
> >> Caused by: java.util.ConcurrentModificationException: null
> >>
> >> at java.util.Vector$Itr.checkForComodification(Vector.java:1156)
> >> ~[na:1.7.0_60]
> >>
> >> at java.util.Vector$Itr.next(Vector.java:1133) ~[na:1.7.0_60]
> >>
> >> at
> >>
> >>org.apache.deltaspike.scheduler.impl.QuartzScheduler$InjectionAwareJobLis
> >>tener.jobToBeExecuted(QuartzScheduler.java:370)
> >> ~[deltaspike-scheduler-module-impl-1.0.0.jar:1.0.0]
> >>
> >> at
> >>
> >>org.quartz.core.QuartzScheduler.notifyJobListenersToBeExecuted(QuartzSche
> >>duler.java:1945)
> >> ~[quartz-2.2.1.jar:na]
> >>
> >> ... 3 common frames omitted
> >>
> >> Job1
> >>
> >>
> >> <and so onŠ>
> >>
> >> The only way to omit the concurrency problems is to limit the scheduled
> >> scope to none:
> >>
> >>
> >> @Scheduled(cronExpression = "0/1 * * * * ?", startScopes = {})
> >>
> >> But this might not be intended.
> >>
> >> Could you please help?
> >>
> >> Thanks in advance.
> >>
> >> Robert
> >>
> >>
>
>

Reply via email to