[JBoss JIRA] Commented: (JBPM-1072) Concurrent JobExecutors can process the same job in parallel
by Alexey Kostylev (JIRA)
[ http://jira.jboss.com/jira/browse/JBPM-1072?page=comments#action_12392824 ]
Alexey Kostylev commented on JBPM-1072:
---------------------------------------
As I investigate this issue I find that the problem with running several JobExecutor instances on the same machine is in query condition:
where ( (job.lockOwner is null) or (job.lockOwner = :lockOwner) )
So 'lockOwner' is the same for all instances on the same machine, so every instance capture jobs that are executing on other instances at that time.
So then I tried to run two instances of Job Executor on different machines. And there's second problem.
The result of query 'JobSession.getFirstAcquirableJob' is always returned from the method acquireJobs() not depending on if optimistic locking is failed or not.
Here is the log:
...
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG JobExecutorThread : querying for acquirable job...
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG JobExecutorThread : trying to obtain a lock for 'job[444795]'
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG JbpmContext : closing jbpmContext org.jbpm.JbpmContext@274874
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG Services : closing service 'persistence': org.jbpm.persistence.db.DbPersistenceService@116ce6e
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG DbPersistenceService : committing hibernate transaction org.hibernate.transaction.JDBCTransaction@105f759
12:09:42,687 [JbpmJobExector:192.168.125.34:1] INFO DbPersistenceService : optimistic locking failed
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG DbPersistenceService : rolling back hibernate transaction
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG DbPersistenceService : closing hibernate session
12:09:42,687 [JbpmJobExector:192.168.125.34:1] INFO Services : problem closing service 'persistence': optimistic locking failed
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG Services : closing service 'tx': org.jbpm.tx.TxService@4aa085
12:09:42,687 [JbpmJobExector:192.168.125.34:1] DEBUG JobExecutorThread : obtained locks on following jobs: [job[444795]]
...
I looked in the code and saw there confirmation of this behaviour.
Should I create the separate issue for second problem, what do you think?
> Concurrent JobExecutors can process the same job in parallel
> ------------------------------------------------------------
>
> Key: JBPM-1072
> URL: http://jira.jboss.com/jira/browse/JBPM-1072
> Project: JBoss jBPM
> Issue Type: Bug
> Components: Core Engine
> Affects Versions: jBPM jPDL 3.2.2
> Environment: Linux 2.6.21-1.3228.fc7 #1 SMP Tue Jun 12 14:56:37 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
> MySQL 5.0.22
> Reporter: Jiri Pechanec
> Assigned To: Koen Aers
> Attachments: expl.tar.gz
>
>
> Attached is a simple test case that
> 1) Deploys process definition with two nodes
> 2) Starts 20 executor threads
> 2) Starts the process instance that will asynchronously execute action on the second node
> 4) The second node writes a record to the database
> The test case needs to be executed multiple times to see the incorrect behaviour.
> This is an example of run output
> Isol 8
> Action 1
> Success 0
> Failure 0
> Action 2
> Action 2 1
> Action 2
> Action 2 1
> Action 2
> Action 2 1
> Action 2
> Action 2 1
> Action 2
> Action 2 1
> Action 2
> Action 2 1
> Action 2
> Action 2
> Action 2 1
> Action 2 1
> Action 2
> Action 2 1
> Explanation of the outcome
> 9 job executors successfully executed the node action (same job) including database operation. All database operations were comitted (9 new records were created)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira