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) {
