[prev in list] [next in list] [prev in thread] [next in thread]
List: sandesha-dev
Subject: svn commit: r557671 - in
From: gatfora () apache ! org
Date: 2007-07-19 16:12:21
Message-ID: 20070719161221.8AA071A981D () eris ! apache ! org
[Download RAW message or body]
Author: gatfora
Date: Thu Jul 19 09:12:20 2007
New Revision: 557671
URL: http://svn.apache.org/viewvc?view=rev&rev=557671
Log:
Fix deadlock when piggybacking Acks where the SenderBean and RmdBean locks are taken \
in the wrong order
Modified:
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/AcknowledgementManager.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/AcknowledgementManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/mai \
n/java/org/apache/sandesha2/util/AcknowledgementManager.java?view=diff&rev=557671&r1=557670&r2=557671
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/AcknowledgementManager.java \
(original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/AcknowledgementManager.java \
Thu Jul 19 09:12:20 2007 @@ -39,6 +39,7 @@
import org.apache.sandesha2.i18n.SandeshaMessageHelper;
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
import org.apache.sandesha2.storage.StorageManager;
+import org.apache.sandesha2.storage.Transaction;
import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
import org.apache.sandesha2.storage.beans.RMDBean;
import org.apache.sandesha2.storage.beans.SenderBean;
@@ -58,7 +59,7 @@
* @param applicationRMMsgContext
* @throws SandeshaException
*/
- public static void piggybackAcksIfPresent(RMMsgContext rmMessageContext, \
StorageManager storageManager) + public static Transaction \
piggybackAcksIfPresent(RMMsgContext rmMessageContext, StorageManager storageManager, \
Transaction transaction) throws SandeshaException {
if (log.isDebugEnabled())
log.debug("Enter: AcknowledgementManager::piggybackAcksIfPresent");
@@ -103,7 +104,7 @@
}
}
if(log.isDebugEnabled()) log.debug("Exit: \
AcknowledgementManager::piggybackAcksIfPresent, anon");
- return;
+ return transaction;
}
// From here on, we must be dealing with a real address. Piggyback all sequences \
that have an @@ -115,6 +116,12 @@
findBean.setToAddress(target.getAddress());
Collection collection = retransmitterBeanMgr.find(findBean);
+
+ if (transaction != null && transaction.isActive())
+ transaction.commit();
+
+ transaction = storageManager.getTransaction();
+
Iterator it = collection.iterator();
while (it.hasNext()) {
SenderBean ackBean = (SenderBean) it.next();
@@ -162,6 +169,7 @@
if (log.isDebugEnabled())
log.debug("Exit: AcknowledgementManager::piggybackAcksIfPresent");
+ return transaction;
}
/**
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/mai \
n/java/org/apache/sandesha2/workers/SenderWorker.java?view=diff&rev=557671&r1=557670&r2=557671
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java \
(original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java \
Thu Jul 19 09:12:20 2007 @@ -183,8 +183,12 @@
int messageType = senderBean.getMessageType();
if (isAckPiggybackableMsgType(messageType)) {
+ // Commit the update
+ if(transaction != null && transaction.isActive()) transaction.commit();
+ transaction = storageManager.getTransaction();
+
// Piggyback ack messages based on the 'To' address of the message
- AcknowledgementManager.piggybackAcksIfPresent(rmMsgCtx, storageManager);
+ transaction = AcknowledgementManager.piggybackAcksIfPresent(rmMsgCtx, \
storageManager, transaction); }
// sending the message
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic