Author: robbie Date: Wed May 19 15:42:10 2010 New Revision: 946227 URL: http://svn.apache.org/viewvc?rev=946227&view=rev Log: QPID-2466: swap WeakReference usage to keep handles to message content to SoftReference's.
Applied patch from Andrew Kennedy Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java?rev=946227&r1=946226&r2=946227&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java (original) +++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java Wed May 19 15:42:10 2010 @@ -32,7 +32,7 @@ import org.apache.qpid.transport.codec.B import org.apache.qpid.transport.codec.BBDecoder; import java.nio.ByteBuffer; -import java.lang.ref.WeakReference; +import java.lang.ref.SoftReference; public class MessageMetaData_0_10 implements StorableMessageMetaData { @@ -42,7 +42,7 @@ public class MessageMetaData_0_10 implem private MessageTransferHeader _messageHeader; private long _arrivalTime; private int _bodySize; - private volatile WeakReference<ByteBuffer> _body; + private volatile SoftReference<ByteBuffer> _body; private static final int ENCODER_SIZE = 1 << 16; @@ -89,7 +89,7 @@ public class MessageMetaData_0_10 implem ByteBuffer body = ByteBuffer.allocate(_bodySize); body.put(xfrBody); body.flip(); - _body = new WeakReference(body); + _body = new SoftReference<ByteBuffer>(body); } @@ -212,7 +212,7 @@ public class MessageMetaData_0_10 implem public void setBody(ByteBuffer body) { - _body = new WeakReference(body); + _body = new SoftReference<ByteBuffer>(body); } private static class MetaDataFactory implements MessageMetaDataType.Factory<MessageMetaData_0_10> Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java?rev=946227&r1=946226&r2=946227&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java (original) +++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java Wed May 19 15:42:10 2010 @@ -36,7 +36,7 @@ import org.apache.qpid.server.queue.AMQQ import java.io.ByteArrayInputStream; import java.io.File; -import java.lang.ref.WeakReference; +import java.lang.ref.SoftReference; import java.nio.ByteBuffer; import java.sql.Blob; import java.sql.Connection; @@ -1408,7 +1408,7 @@ public class DerbyMessageStore implement { private final long _messageId; - private volatile WeakReference<StorableMessageMetaData> _metaDataRef; + private volatile SoftReference<StorableMessageMetaData> _metaDataRef; private Connection _conn; StoredDerbyMessage(long messageId, StorableMessageMetaData metaData) @@ -1424,7 +1424,7 @@ public class DerbyMessageStore implement { _messageId = messageId; - _metaDataRef = new WeakReference(metaData); + _metaDataRef = new SoftReference<StorableMessageMetaData>(metaData); if(persist) { _conn = newConnection(); @@ -1451,7 +1451,7 @@ public class DerbyMessageStore implement { throw new RuntimeException(e); } - _metaDataRef = new WeakReference(metaData); + _metaDataRef = new SoftReference<StorableMessageMetaData>(metaData); } return metaData; --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org