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]