[jboss-jira] [JBoss JIRA] Commented: (JBRULES-3108) problems with concurrent process executions, constraints, and multiple sessions

Jordi Alvarez (JIRA) jira-events at lists.jboss.org
Wed Jun 29 06:38:23 EDT 2011


    [ https://issues.jboss.org/browse/JBRULES-3108?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12611743#comment-12611743 ] 

Jordi Alvarez commented on JBRULES-3108:
----------------------------------------

The modified query we are using is as follows:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
                 version="1.0">  
      <named-query name="ProcessInstancesWaitingForEvent">
          <query>
select 
    processInstanceInfo.processInstanceId
from 
    ProcessInstanceInfo processInstanceInfo
where
    processInstanceInfo.idSession = :idSession and
    :type in elements(processInstanceInfo.eventTypes)
          </query>
      </named-query>
</entity-mappings>

I do not post the changes in files:
- org.drools.persistence.processinstance.ProcessInstanceInfo
- org.drools.persistence.processinstance.JPASignalManager

these changes, as well as that for the posted query, should be evident according to the previous explanations.

we have also added a control and some log to:
- org.drools.persistence.processinstance.JPAProcessInstanceManager

And additionally some log we were missing at debug level to the previous two classes.

But that is, of course, not needed for the solution.


> problems with concurrent process executions, constraints, and multiple sessions
> -------------------------------------------------------------------------------
>
>                 Key: JBRULES-3108
>                 URL: https://issues.jboss.org/browse/JBRULES-3108
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: drools-core (flow)
>    Affects Versions: 5.1.1.FINAL, 5.2.0.Final
>         Environment: Independent of OS, JVM, and Application Server. Reproduced in a windows development environment with a Sun JVM. Also reproduced in linux. Also database independent: reproduced with Oracle RDBMS and HSQLDB.
>            Reporter: Jordi Alvarez
>            Assignee: Mark Proctor
>
> The context is as follows:
> 1. We have drools flow configured with JPA and Hibernate, accessing an Oracle / HSQLDB database (depending on the environment).
> 2. We do have several concurrent stateful sessions in which different instances of the same kind of processes are running. These stateful sessions are persisted in the same database schema.
> 3. We do use wait states (also reproduced with rule nodes) that have constraints that wait for a fact to be inserted into the stateful session.
> 4. Whenever the fact that makes the constraint to satisfy is inserted for one process in a given stateful session; if there are other processes waiting in that wait state/constraint (in other different stateful sessions), the stateful session tries also to continue those process executions, even when they are not part of it.
> A solution has been implemented temporally over drools source code (in order to get our context working): the solution is briefly described in the forum url below. For completeness a summary is included here:
> - Adding a new attribute to org.drools.persistence.processinstance.ProcessInstanceInfo POJO identifying the stateful session to which the process instance corresponds (and the corresponding DB column).
> - modifying the ProcessInstancesWaitingForEvent query (in orm.xml) in order to take into account the session id as a (new) second parameter.
> - modify the class org.drools.persistence.processinstance.JPASignalManager in order to execute the query with both parameters.
> - as a quick way to have the session id, we have a threadlocal.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list