Author: aidan
Date: Fri May 16 09:05:49 2008
New Revision: 657116

URL: http://svn.apache.org/viewvc?rev=657116&view=rev
Log:
Merged revisions 657111 via svnmerge from 
https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.x

................
  r657111 | aidan | 2008-05-16 16:53:21 +0100 (Fri, 16 May 2008) | 9 lines
  
  Merged revisions 657097 via svnmerge from 
  https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid
  
  ........
    r657097 | rgodfrey | 2008-05-16 16:08:55 +0100 (Fri, 16 May 2008) | 1 line
    
    QPID-1060 : Release ref to transient meta data; cache message size
  ........
................

Modified:
    incubator/qpid/branches/M2.1.x/   (props changed)
    
incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
    
incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java

Propchange: incubator/qpid/branches/M2.1.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java?rev=657116&r1=657115&r2=657116&view=diff
==============================================================================
--- 
incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
 (original)
+++ 
incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
 Fri May 16 09:05:49 2008
@@ -89,6 +89,11 @@
     private static final boolean SYNCED_CLOCKS =
             
ApplicationRegistry.getInstance().getConfiguration().getBoolean("advanced.synced-clocks",
 false);
 
+    private static final long UNKNOWN_SIZE = Long.MIN_VALUE;
+
+    private long _size = UNKNOWN_SIZE;
+
+
 
     public String debugIdentity()
     {
@@ -255,7 +260,6 @@
         _txnContext = txnContext;
         _immediate = info.isImmediate();
         _transientMessageData.setMessagePublishInfo(info);
-
     }
 
     /**
@@ -276,6 +280,7 @@
         _messageHandle = factory.createMessageHandle(messageId, store, true);
         _txnContext = txnConext;
         _transientMessageData = null;
+
     }
 
     /**
@@ -352,6 +357,7 @@
     public void setContentHeaderBody(ContentHeaderBody contentHeaderBody) 
throws AMQException
     {
         _transientMessageData.setContentHeaderBody(contentHeaderBody);
+        _size = _transientMessageData.getContentHeaderBody().bodySize;
     }
 
     public void routingComplete(MessageStore store, StoreContext storeContext, 
MessageHandleFactory factory)
@@ -376,6 +382,8 @@
         {
             deliver(storeContext);
         }
+
+
     }
 
     public boolean addContentBodyFrame(StoreContext storeContext, ContentChunk 
contentChunk) throws AMQException
@@ -670,6 +678,7 @@
 
             // Remove refence for routing process . Reference count should now 
== delivered queue count
             decrementReference(storeContext);
+            _transientMessageData = null;
         }
     }
 
@@ -681,19 +690,19 @@
 
     public long getSize()
     {
-        try
+        if(_size == UNKNOWN_SIZE)
         {
-            long size = getContentHeaderBody().bodySize;
-
-            return size;
-        }
-        catch (AMQException e)
-        {
-            _log.error(e.toString(), e);
-
-            return 0;
+            try
+            {
+                _size = getContentHeaderBody().bodySize;
+            }
+            catch (AMQException e)
+            {
+                _log.warn("Unable to retrieve message meta data for message:" 
+ this, e);
+                return 0;
+            }
         }
-
+        return _size;
     }
 
     public void restoreTransientMessageData() throws AMQException

Modified: 
incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java?rev=657116&r1=657115&r2=657116&view=diff
==============================================================================
--- 
incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
 (original)
+++ 
incubator/qpid/branches/M2.1.x/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
 Fri May 16 09:05:49 2008
@@ -46,17 +46,7 @@
             final long maximumMessageSize = queue.getMaximumMessageSize();
             if(maximumMessageSize != 0)
             {
-                // Check for threshold message size
-                long messageSize;
-                try
-                {
-                    messageSize = (msg == null) ? 0 : 
msg.getContentHeaderBody().bodySize;
-                }
-                catch (AMQException e)
-                {
-                    messageSize = 0;
-                }
-
+               long messageSize = (msg == null) ? 0 : msg.getSize();
 
                 if (messageSize >= maximumMessageSize)
                 {


Reply via email to