Hi,

   I'm looking for guidance on how we are supposed to be handling this case, 
because the behavior we are seeing is not what we want.

   Components in use: Jboss 4.2.2-GA, Windows Server 2003 , Jboss-Messaging 
1.4.2.
   
   Here is the issue: 

   We have a stateless session bean that is marked as using container managed 
transactions.  We're have the default transaction timeout set as specified in 
jboss-service.xml of 180 seconds.

   When one of our EJB methods is entered (marked as 'required' for the 
transaction), we get a JDBC connection from the data-source that we have 
created via a *-ds.xml file in the jboss deploy directory.  When we get the 
connection, the auto-commit flag is set to false, which is expected.

    We then run a bunch of sql commands (inserts, updates).  Let's say the 
transaction timeout hits for some reason like the queries we're running are 
taking too long.  When the timeout occurs I see the following entries in our 
log4j log:

2009-04-17 17:32:30,075 [            Thread-3] WARN    
com.arjuna.ats.arjuna.logging.arjLoggerI18N : 
[com.arjuna.ats.arjuna.coordinator.BasicAction_58] - Abort of action id 
-53ef9ed4:e28:49e91dfb:1de invoked while multiple threads active within it.
2009-04-17 17:32:30,075 [            Thread-3] WARN    
com.arjuna.ats.arjuna.logging.arjLoggerI18N : 
[com.arjuna.ats.arjuna.coordinator.CheckedAction_2] - CheckedAction::check - 
atomic action -53ef9ed4:e28:49e91dfb:1de aborting with 1 threads active!

   At that exact time when the transaction times out, the container is rolling 
back the transaction, and that's fine.  The problem here is that our thread 
keeps running, AND the connection's auto-commit flag got set back to true.  The 
end result is that any inserts/updates we did after the timeout, get committed 
immediately leaving the database in a bogus state.

    So here are my questions:

     1) Is this expected behavior to have the rollback occurring in parallel to 
the ejb thread continuing to run?
     2) Why is the auto-commit getting set to true when the timeout occurs?
     3) Shouldn't the rollback occur synchronously after our EJB method returns 
into the jboss ejb stub code?
     4) What is the correct way we're supposed to be handling the transaction 
timeout so the database doesn't wind up hosed?  We see this exact same behavior 
with jboss and mysql, and jboss and sql server.
      5) The old jboss transaction manager configuration used to allow you to 
interrupt the thread, instead of continuing to let it run.  I understand this 
feature has been removed for legitimate reasons as explained by this thread: 
http://www.jboss.org/index.html?module=bb&op=viewtopic&t=125962   .  This would 
have been our preferred approach to fix this problem if it were still supported.

    Thanks for the help,
    Joe

      


    

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4227656#4227656

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4227656
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to