activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gtu...@apache.org
Subject svn commit: r1005806 - /activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java
Date Fri, 08 Oct 2010 12:28:42 GMT
Author: gtully
Date: Fri Oct  8 12:28:42 2010
New Revision: 1005806

URL: http://svn.apache.org/viewvc?rev=1005806&view=rev
Log:
resolve https://issues.apache.org/activemq/browse/AMQ-2736, logic issue in code that keeps
data files with acks around pending message file gc. thanks jgenender - test case to follow

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java?rev=1005806&r1=1005805&r2=1005806&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java
(original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java
Fri Oct  8 12:28:42 2010
@@ -1202,13 +1202,14 @@ public class MessageDatabase extends Ser
             }
 
             // check we are not deleting file with ack for in-use journal files
+            final TreeSet<Integer> gcCandidates = new TreeSet<Integer>(gcCandidateSet);
             Iterator<Integer> candidates = gcCandidateSet.iterator();
             while (candidates.hasNext()) {
                 Integer candidate = candidates.next();
                 Set<Integer> referencedFileIds = ackMessageFileMap.get(candidate);
                 if (referencedFileIds != null) {
                     for (Integer referencedFileId : referencedFileIds) {
-                        if (journal.getFileMap().containsKey(referencedFileId) &&
!gcCandidateSet.contains(referencedFileId)) {
+                        if (journal.getFileMap().containsKey(referencedFileId) &&
!gcCandidates.contains(referencedFileId)) {
                             // active file that is not targeted for deletion is referenced
so don't delete
                             candidates.remove();
                             break;



Mime
View raw message