[
http://jira.jboss.com/jira/browse/JBPM-1071?page=all ]
Tom Baeyens updated JBPM-1071:
------------------------------
Attachment: LockingTest.java
I attached a test LockingTest. This test does basically the same as your test, but it
fits in our overall test suite.
This test runs fine. So I can't reproduce the problem.
The way that I check the optimistic locking is a bit different. First, I spawn of x
number of competing threads/transactions. In each transaction, a comment is added that
includes the name of the thread.
Later on, we check if exactly 1 thread managed to commit, while the other were rolled
back.
What I think that you do different is that you don't use transactional resource to
measure which transactions committed and which transactions rolled back. A limitation of
the current implementation is that you can't see if an optimistic failure rollback
occured or not.
Possible problem in concurrent signalling from multiple threads
---------------------------------------------------------------
Key: JBPM-1071
URL:
http://jira.jboss.com/jira/browse/JBPM-1071
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: Tom Baeyens
Priority: Critical
Attachments: expl.tar.gz, LockingTest.java
Attached is a simple test case that
1) Deploys process definition with two nodes
2) Starts the process instance that will go to the wait state on first node
3) Starts 20 threads that tries concurrently signal the same process instance
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
Action 2
Action 2
Action 2
Action 2
Action 2 1
Action 2 1
Action 2 1
Action 2 1
Signalist 5
Signalist 6
Signalist 8
Signalist 12
Signalist 7
Signalist 13
Signalist 14
Signalist 15
Signalist 9
Signalist 16
Signalist 17
Signalist 18
Signalist 4
Success 7
Failure 13
Explanation of the outcome
4 threads successfully executed the node action including database operation. All
database opeartion were comitted (4 new records were created)
3 threads successfully executed the signal operation but no real action was performed
13 threads attempted to execute the signal operation but ended with an exception
--
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