Repository: activemq Updated Branches: refs/heads/master 35b7ac250 -> 8f30866fd
https://issues.apache.org/jira/browse/AMQ-6063 Fixing potential NullPointerException during KahaDB index recovery. Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/8f30866f Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/8f30866f Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/8f30866f Branch: refs/heads/master Commit: 8f30866fdf89f25188a358f1b1c161b2f06de3f5 Parents: 35b7ac2 Author: Christopher L. Shannon (cshannon) <christopher.l.shan...@gmail.com> Authored: Wed Nov 25 16:02:52 2015 +0000 Committer: Christopher L. Shannon (cshannon) <christopher.l.shan...@gmail.com> Committed: Wed Nov 25 16:02:52 2015 +0000 ---------------------------------------------------------------------- .../apache/activemq/store/kahadb/MessageDatabase.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/8f30866f/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java ---------------------------------------------------------------------- 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 85e25d0..cd9067d 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 @@ -762,12 +762,14 @@ public abstract class MessageDatabase extends ServiceSupport implements BrokerSe for (Long sequenceId : matches) { MessageKeys keys = sd.orderIndex.remove(tx, sequenceId); - sd.locationIndex.remove(tx, keys.location); - sd.messageIdIndex.remove(tx, keys.messageId); - metadata.producerSequenceIdTracker.rollback(keys.messageId); - undoCounter++; - decrementAndSubSizeToStoreStat(key, keys.location.getSize()); - // TODO: do we need to modify the ack positions for the pub sub case? + if (keys != null) { + sd.locationIndex.remove(tx, keys.location); + sd.messageIdIndex.remove(tx, keys.messageId); + metadata.producerSequenceIdTracker.rollback(keys.messageId); + undoCounter++; + decrementAndSubSizeToStoreStat(key, keys.location.getSize()); + // TODO: do we need to modify the ack positions for the pub sub case? + } } }