From e5c90eec9eb73444370f987d009cc79d8af943e8 Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Wed, 19 May 2010 15:42:10 +0000 Subject: QPID-2466: swap WeakReference usage to keep handles to message content to SoftReference's. Applied patch from Andrew Kennedy git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@946227 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/qpid/server/message/MessageMetaData_0_10.java | 8 ++++---- .../main/java/org/apache/qpid/server/store/DerbyMessageStore.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java index 5a5e2fe5b4..cf8ae2166c 100755 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_0_10.java @@ -32,7 +32,7 @@ import org.apache.qpid.transport.codec.BBEncoder; 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 implements StorableMessageMetaData private MessageTransferHeader _messageHeader; private long _arrivalTime; private int _bodySize; - private volatile WeakReference _body; + private volatile SoftReference _body; private static final int ENCODER_SIZE = 1 << 16; @@ -89,7 +89,7 @@ public class MessageMetaData_0_10 implements StorableMessageMetaData ByteBuffer body = ByteBuffer.allocate(_bodySize); body.put(xfrBody); body.flip(); - _body = new WeakReference(body); + _body = new SoftReference(body); } @@ -212,7 +212,7 @@ public class MessageMetaData_0_10 implements StorableMessageMetaData public void setBody(ByteBuffer body) { - _body = new WeakReference(body); + _body = new SoftReference(body); } private static class MetaDataFactory implements MessageMetaDataType.Factory diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java index d38b318fdf..a87cd32e37 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java @@ -36,7 +36,7 @@ import org.apache.qpid.server.queue.AMQQueue; 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 implements MessageStore { private final long _messageId; - private volatile WeakReference _metaDataRef; + private volatile SoftReference _metaDataRef; private Connection _conn; StoredDerbyMessage(long messageId, StorableMessageMetaData metaData) @@ -1424,7 +1424,7 @@ public class DerbyMessageStore implements MessageStore { _messageId = messageId; - _metaDataRef = new WeakReference(metaData); + _metaDataRef = new SoftReference(metaData); if(persist) { _conn = newConnection(); @@ -1451,7 +1451,7 @@ public class DerbyMessageStore implements MessageStore { throw new RuntimeException(e); } - _metaDataRef = new WeakReference(metaData); + _metaDataRef = new SoftReference(metaData); } return metaData; -- cgit v1.2.1