0 Replies Latest reply on May 2, 2011 3:03 AM by zorin

    Persisted jbpm5: 'delay timer' behavior after JBoss restart

    zorin

      We are testing implementation of JBPM5 plugin for Liferay portal, where JBoss is run independently from Liferay.

       

      In our persisting setup (JBoss5.1.0GA + drools-5.2.0M1 + jbpm-bpmn2-5.0.0) we ran a simple test case when 'delay timer' is defined as:

       

          <intermediateCatchEvent id="_7" name="Timer" >

            <timerEventDefinition>

              <timeCycle>120s</timeCycle>

            </timerEventDefinition>

          </intermediateCatchEvent>

       

       

      Once process instance hits this event, JBoss is manually shut down and immediately restarted.

       

      Session is reloaded using the following code:

       

        java.util.Properties sessionProperties = new java.util.Properties();

        sessionProperties.put("drools.processInstanceManagerFactory", "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");

        sessionProperties.put("drools.processSignalManagerFactory", "org.jbpm.persistence.processinstance.JPASignalManagerFactory");

        KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(sessionProperties);                   

         StatefulKnowledgeSession resultSession = JPAKnowledgeService.loadStatefulKnowledgeSession(

                storedSession.getId(), // we get it from own records

                KnowledgeUtil.getInstance().getKnowledgeBase(),

                config, getEnvironment());

       

      The ISSUE is:

       

      CASE #1: If StatefulKnowledgeSession is reloaded before the expiry of 'delay timer', process wakes up properly. PERFECT !

      CASE #2: If StatefulKnowledgeSession is reloaded after the expiry of 'delay timer', timer is stuck, i.e. nothing happens. PROBLEM !

      (Timer works properly when JBoss is not restarted)

       

      That means those process instances, which have timers may get stuck forever (if shutdown time falls to timer expiry), i.e. JBoss can not be reliably restarted.

       

      Any thoughts on this?