[jboss-jira] [JBoss JIRA] (WFLY-8929) Race condition if timers overlap due to long running execution and short schedules if database persistence is used

Wolf-Dieter Fink (JIRA) issues at jboss.org
Tue Jun 13 12:48:00 EDT 2017


     [ https://issues.jboss.org/browse/WFLY-8929?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Wolf-Dieter Fink updated WFLY-8929:
-----------------------------------
    Steps to Reproduce: 
Create a Simple Bean @Singleton and use a method like this:

   @Schedule(second = "*/1", minute = "*", hour = "*", persistent = true)
  private void longRunning4parallelExecution() {
    LOGGER.info("Start long running scheduled method");
    int sec = 988;
    LOGGER.info("sleeping " + sec + " milli seconds.");
    try {
      Thread.sleep(sec);
    } catch (InterruptedException e) {}
    LOGGER.info("Finished executing concurrent schedule");
  }


The timer show often concurrent WARN messages and should stuck after a few minutes running


> Race condition if timers overlap due to long running execution and short schedules if database persistence is used
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: WFLY-8929
>                 URL: https://issues.jboss.org/browse/WFLY-8929
>             Project: WildFly
>          Issue Type: Bug
>          Components: EJB
>         Environment: Configure DB persistence for timers as file-persistence will not have a persistence check for shouldRun to lock the timer execution.
>            Reporter: Wolf-Dieter Fink
>         Attachments: server-extract.log
>
>
> If timers (here calendar timer) are running longer than scheduled, or the schedule/processing get stuck do to thread or cpu bottleneck, it is possible that the updates for persistence overlap.
> The issue seems that the task(1) try to finish the timer and task(2) is about to start but see the concurrency.
> The DB is updated with the 'old' next timeout, but the internal Timer instance will be updated with the next possible schedule due to a race condition between the two threads updating the object.



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list