Author: gatfora
Date: Mon Oct  1 04:01:08 2007
New Revision: 580921

URL: http://svn.apache.org/viewvc?rev=580921&view=rev
Log:
SenderBean changed to set sentCount in adjustRetransmission is not the same 
bean instance as the one updated in SenderBeanManager from inside the 
SenderWorker

Modified:
    
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/workers/SenderWorker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java?rev=580921&r1=580920&r2=580921&view=diff
==============================================================================
--- 
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
 Mon Oct  1 04:01:08 2007
@@ -200,20 +200,6 @@
                                return;
                        }
                        
-                       boolean continueSending = 
updateMessage(rmMsgCtx,senderBean,storageManager);
-
-                       if (!continueSending) { 
-                               if (log.isDebugEnabled())
-                                       log.debug("Exit: SenderWorker::run, 
!continueSending");
-                               
-                               if(transaction != null && 
transaction.isActive()) {
-                                       transaction.commit();
-                                       transaction = null;
-                               }
-                               
-                               return;
-                       }
-
                        int messageType = senderBean.getMessageType();
                        
                        if (isAckPiggybackableMsgType(messageType)) {
@@ -225,17 +211,33 @@
                                transaction = 
AcknowledgementManager.piggybackAcksIfPresent(rmMsgCtx, storageManager, 
transaction);
                        }
 
-                       // sending the message
-                       boolean successfullySent = false;
+                       
+                       if (transaction != null && transaction.isActive()) 
+                               transaction.commit();                   
+                       
+                       transaction = storageManager.getTransaction();
+                       
+                       senderBean = 
updateMessage(rmMsgCtx,senderBean,storageManager);
+
+                       if (senderBean == null) { 
+                               if (log.isDebugEnabled())
+                                       log.debug("Exit: SenderWorker::run, 
!continueSending");
+                               
+                               if(transaction != null && 
transaction.isActive()) {
+                                       transaction.rollback();
+                                       transaction = null;
+                               }
+                               
+                               return;
+                       }
 
                        // Although not actually sent yet, update the send 
count to indicate an attempt
                        if (senderBean.isReSend()) {
-                               SenderBean bean2 = 
senderBeanMgr.retrieve(senderBean.getMessageID());
-                               if (bean2 != null) {
-                                       
bean2.setSentCount(senderBean.getSentCount());
-                                       senderBeanMgr.update(bean2);
-                               }
+                               senderBeanMgr.update(senderBean);
                        }
+
+                       // sending the message
+                       boolean successfullySent = false;
                        
                        //try to redecorate the EPR if necessary
                        if (log.isDebugEnabled())
@@ -401,20 +403,20 @@
         * for the message. If the message is an application message then we 
ensure that we have added
         * the Sequence header.
         */
-       private boolean updateMessage(RMMsgContext rmMsgContext, SenderBean 
senderBean, StorageManager storageManager) throws AxisFault {
+       private SenderBean updateMessage(RMMsgContext rmMsgContext, SenderBean 
senderBean, StorageManager storageManager) throws AxisFault {
                
                // Lock the message to enable retransmission update
                senderBean = 
storageManager.getSenderBeanMgr().retrieve(senderBean.getMessageID());
                
                // Only continue if we find a SenderBean
                if (senderBean == null)
-                       return false;
+                       return senderBean;
 
                int messageType = senderBean.getMessageType();
 
                boolean continueSending = 
MessageRetransmissionAdjuster.adjustRetransmittion(
                                rmMsgContext, senderBean, 
rmMsgContext.getConfigurationContext(), storageManager);
-               if(!continueSending) return false;
+               if(!continueSending) return null;
                
                Identifier id = null;
 
@@ -497,7 +499,7 @@
                        
                }
                
-               return true;
+               return senderBean;
        }
        
        private boolean isAckPiggybackableMsgType(int messageType) {



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

Reply via email to