[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