Author: rgodfrey
Date: Fri May 16 08:08:55 2008
New Revision: 657097
URL: http://svn.apache.org/viewvc?rev=657097&view=rev
Log:
QPID-1060 : Release ref to transient meta data; cache message size
Modified:
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
Modified:
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java?rev=657097&r1=657096&r2=657097&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
(original)
+++
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQMessage.java
Fri May 16 08:08:55 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/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java?rev=657097&r1=657096&r2=657097&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
(original)
+++
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
Fri May 16 08:08:55 2008
@@ -47,16 +47,7 @@
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)
{