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

Reply via email to