Author: gatfora
Date: Thu Sep 13 06:46:45 2007
New Revision: 575314

URL: http://svn.apache.org/viewvc?rev=575314&view=rev
Log:
Fix deadlock described in SANDESHA2-111.  

Modified:
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/InvokerWorker.java

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/InvokerWorker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/InvokerWorker.java?rev=575314&r1=575313&r2=575314&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/InvokerWorker.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/InvokerWorker.java
 Thu Sep 13 06:46:45 2007
@@ -59,6 +59,13 @@
                        InvokerBean invokerBean = 
invokerBeanMgr.retrieve(messageContextKey);
 
                        msgToInvoke = 
storageManager.retrieveMessageContext(messageContextKey, configurationContext);
+
+                       // ending the transaction before invocation.
+                       if(transaction != null) {
+                               transaction.commit();
+                               transaction = storageManager.getTransaction();
+                       }
+
                        RMMsgContext rmMsg = 
MsgInitializer.initializeMessage(msgToInvoke);
 
                        // Lock the RMD Bean just to avoid deadlocks
@@ -69,11 +76,6 @@
                        // removing the corresponding message context as well.
                        storageManager.removeMessageContext(messageContextKey);
 
-                       // ending the transaction before invocation.
-                       if(transaction != null) {
-                               transaction.commit();
-                               transaction = null;
-                       }
                        
                        try {
 
@@ -112,11 +114,17 @@
                              }
                            }
                        }
+                       
+                       if (transaction != null && transaction.isActive())
+                               transaction.commit();
 
                        } catch (Exception e) {
                                if (log.isDebugEnabled())
                                        log.debug("Exception :", e);
 
+                               if (transaction != null && 
transaction.isActive())
+                                       transaction.rollback();
+                               
                                handleFault(rmMsg, e);
                        }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to