Author: gtully
Date: Wed Aug 18 15:20:15 2010
New Revision: 986734

URL: http://svn.apache.org/viewvc?rev=986734&view=rev
Log:
resolve https://issues.apache.org/activemq/browse/AMQ-2584 for AMQ store, if a 
write was outstanding when a second add arrives, the addition was ignored but 
the additonal file reference was not ignored leading to a dangling ref to a 
data file that prevented it being reclaimed

Modified:
    
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQMessageStore.java
    
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2584Test.java

Modified: 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQMessageStore.java
URL: 
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQMessageStore.java?rev=986734&r1=986733&r2=986734&view=diff
==============================================================================
--- 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQMessageStore.java
 (original)
+++ 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/amq/AMQMessageStore.java
 Wed Aug 18 15:20:15 2010
@@ -159,7 +159,10 @@ public class AMQMessageStore extends Abs
         lock.lock();
         try {
             lastLocation = location;
-            messages.put(message.getMessageId(), data);
+            ReferenceData prev = messages.put(message.getMessageId(), data);
+            if (prev != null) {
+                
AMQMessageStore.this.peristenceAdapter.removeInProgressDataFile(AMQMessageStore.this,
 prev.getFileId());
+            }
         } finally {
             lock.unlock();
         }

Modified: 
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2584Test.java
URL: 
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2584Test.java?rev=986734&r1=986733&r2=986734&view=diff
==============================================================================
--- 
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2584Test.java
 (original)
+++ 
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ2584Test.java
 Wed Aug 18 15:20:15 2010
@@ -57,7 +57,7 @@ public class AMQ2584Test extends org.apa
     public void initCombosForTestSize() throws Exception {
         this.addCombinationValues("defaultPersistenceAdapter",
                 new Object[]{
-                        // PersistenceAdapterChoice.AMQ,
+                        PersistenceAdapterChoice.AMQ,
                         PersistenceAdapterChoice.KahaDB
                 });
     }


Reply via email to