From 9c62e3d05c5ab37d60423d2822c636fe161b6d9c Mon Sep 17 00:00:00 2001 From: chris-lumigrow Date: Thu, 10 Nov 2016 14:19:43 -0800 Subject: [PATCH] a bit of defensive programming in the case of negative reference values --- .../java/io/moquette/spi/persistence/MapDBMessagesStore.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/broker/src/main/java/io/moquette/spi/persistence/MapDBMessagesStore.java b/broker/src/main/java/io/moquette/spi/persistence/MapDBMessagesStore.java index 4eb497e0..f8c3d583 100644 --- a/broker/src/main/java/io/moquette/spi/persistence/MapDBMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/persistence/MapDBMessagesStore.java @@ -110,7 +110,10 @@ class MapDBMessagesStore implements IMessagesStore { void removeStoredMessage(MessageGUID guid) { //remove only the not retained and no more referenced StoredMessage storedMessage = m_persistentMessageStore.get(guid); - if (!storedMessage.isRetained() && storedMessage.getReferenceCounter() == 0) { + if (!storedMessage.isRetained() && storedMessage.getReferenceCounter() <= 0) { + if(storedMessage.getReferenceCounter() < 0) { + LOG.error("we should never have gotten a reference count less than zero"); + } LOG.debug("Cleaning not retained message guid {}", guid); m_persistentMessageStore.remove(guid); }