-
1. Re: Major transaction problem
tom.baeyens Mar 6, 2007 3:01 PM (in response to dmlloyd)i don't have ideas. but that could very well be a problem.
is it reproducable ? if it is a bug as i expect, should be fairly easy to reproduce.
question is... how can we automate enterprise testing. i have done some cactus stuff. but i'm not sure if it will be easy to include tests with different jbpm configurations. -
2. Re: Major transaction problem
dmlloyd Mar 6, 2007 3:11 PM (in response to dmlloyd)"tom.baeyens@jboss.com" wrote:
is it reproducable ? if it is a bug as i expect, should be fairly easy to reproduce.
In the web console inside the EAR with my config modifications, it happens every time. But I don't have a separate test case yet. I'll try and get some more information - specifically I'm trying to figure out if this is specific to the EAR, or JTA, or whether it's just a new bug that was introduced in the transaction code. -
3. Re: Major transaction problem
dmlloyd Mar 6, 2007 3:17 PM (in response to dmlloyd)OK the bug also exists when I run the console as a standalone WAR so I'm thinking the bug is in the jBPM transaction code... zeroing in further
-
4. Re: Major transaction problem
dmlloyd Mar 6, 2007 3:23 PM (in response to dmlloyd)OK looks like it's actually a hibernate problem. After rolling back the transaction and starting a new one, the domain objects still seem to contain the modified data from the previous transaction!
Hmmm... -
5. Re: Major transaction problem
dmlloyd Mar 6, 2007 3:28 PM (in response to dmlloyd)so: if I run jbpm-console.war (standalone), and a transaction fails, it is properly rolled back but the hibernate objects still contain the updated data (which makes sense I guess).
If I run the console from the EAR, the transaction is not rolled back and the database contains partially complete information. -
6. Re: Major transaction problem
tom.baeyens Mar 6, 2007 3:32 PM (in response to dmlloyd)from the hibernate reference
"
Rolling back the database transaction doesn't put your business objects back into the state they were at the start of the transaction. This means the database state and the business objects do get out of sync. Usually this is not a problem, because exceptions are not recoverable and you have to start over after rollback anyway.
"
so if there is a rollback, you (or I) should throw away the session and create a new one.
can you find how we could fix this ? -
7. Re: Major transaction problem
dmlloyd Mar 6, 2007 3:38 PM (in response to dmlloyd)Yeah, I can fix that problem. That still leaves the issue of transactions not rolling back (at all) in the jbpm-enterprise.ear, which I'm looking into now.
-
8. Re: Major transaction problem
dmlloyd Mar 6, 2007 5:27 PM (in response to dmlloyd)Yes, JTA transactions in the EAR are majorly broken. The underlying exception *appears* to be:
java.lang.NullPointerException
at org.jbpm.persistence.db.DbPersistenceService.rollback(DbPersistenceService.java:304)
at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:238)
at org.jbpm.svc.Services.close(Services.java:222)
Investigating further. -
9. Re: Major transaction problem
dmlloyd Mar 6, 2007 5:44 PM (in response to dmlloyd)Okay, this just isn't making any sense. There are so many exceptions around rollback, things like "transaction already marked for rollback" and "could not register synchronization with JTA TransactionManager", that it's nearly impossible to figure out the underlying cause. What I *can* tell is that both hibernate and jBPM seem to be forcing a rollback on the transaction under some circumstances, and it seems like a new transaction may not be started afterwards.
Still trying to unwind the txn spaghetti. -
10. Re: Major transaction problem
tom.baeyens Mar 7, 2007 7:55 AM (in response to dmlloyd)maybe this is related and might give some more insight: http://jira.jboss.com/jira/browse/JBPM-833
-
11. Re: Major transaction problem
tom.baeyens Mar 7, 2007 8:50 AM (in response to dmlloyd)i think i start remembering this problem...
the webapp cannot operate with the same hibernate configurations as the jbpm ejbs do. that is, untill the web app isn't refactored to using commands and a command service.
webapp needs JTA transactions and the context blocks in the webapp should have transactions enabled. these transactions then result in JTA transactions. that is necessary in case async node execution leads to messages being sent.
the jbpm ejbeans need CMT transactions (no transaction demarcation in code). i think the beans might be configured for JTA with transactions enabled, as they will always be inside a CMT method with tx-attribute required. So i think that hibernate will not end the JTA transaction if it didn't created it. -
12. Re: Major transaction problem
dmlloyd Mar 9, 2007 12:59 PM (in response to dmlloyd)Ok, I think this issue is resolved. Enabling transactions and clearing out the hibernate session data fixed it.