From 9c82756ca9e61b202cb2c6695bcc585634d90297 Mon Sep 17 00:00:00 2001 From: gtully Date: Fri, 11 Dec 2015 13:30:55 +0000 Subject: [PATCH] https://issues.apache.org/jira/browse/AMQ-6083 - resolve some test regressions - AMQ2149Test - fail to start with missing data file. Ensure ack map is always saved on modification (cherry picked from commit 31d99b6aa92aed27acfd90a4d2a278c077a47a33) --- .../org/apache/activemq/store/kahadb/MessageDatabase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java index 2e17a69083..6a98ccea2b 100644 --- a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java +++ b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java @@ -1739,6 +1739,7 @@ public abstract class MessageDatabase extends ServiceSupport implements BrokerSe LOG.trace("gc candidates: " + gcCandidateSet); LOG.trace("ackMessageFileMap: " + metadata.ackMessageFileMap); } + boolean ackMessageFileMapMod = false; Iterator candidates = gcCandidateSet.iterator(); while (candidates.hasNext()) { Integer candidate = candidates.next(); @@ -1752,7 +1753,7 @@ public abstract class MessageDatabase extends ServiceSupport implements BrokerSe } } if (gcCandidateSet.contains(candidate)) { - metadata.ackMessageFileMap.remove(candidate); + ackMessageFileMapMod |= (metadata.ackMessageFileMap.remove(candidate) != null); } else { if (LOG.isTraceEnabled()) { LOG.trace("not removing data file: " + candidate @@ -1767,7 +1768,6 @@ public abstract class MessageDatabase extends ServiceSupport implements BrokerSe LOG.debug("Cleanup removing the data files: " + gcCandidateSet); } journal.removeDataFiles(gcCandidateSet); - boolean ackMessageFileMapMod = false; for (Integer candidate : gcCandidateSet) { for (Set ackFiles : metadata.ackMessageFileMap.values()) { ackMessageFileMapMod |= ackFiles.remove(candidate);