diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 1036c84d..9c07b14a 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -41,6 +41,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; @@ -110,7 +111,7 @@ public class MemoryMessagesStore implements IMessagesStore { private final DatabaseStore databaseStore; private ConcurrentHashMap userMaxPullSeq = new ConcurrentHashMap<>(); - private SensitiveFilter mSensitiveFilter; + private AtomicReference mSensitiveFilter; private volatile long lastUpdateSensitiveTime = 0; private ConcurrentHashMap userGlobalSlientMap = new ConcurrentHashMap<>(); @@ -145,7 +146,7 @@ public class MemoryMessagesStore implements IMessagesStore { } } Set sensitiveWords = databaseStore.getSensitiveWord(); - mSensitiveFilter = new SensitiveFilter(sensitiveWords); + mSensitiveFilter.set(new SensitiveFilter(sensitiveWords)); } } @@ -2492,7 +2493,7 @@ public class MemoryMessagesStore implements IMessagesStore { @Override public Set handleSensitiveWord(String message) { updateSensitiveWord(); - return mSensitiveFilter.getSensitiveWords(message, SensitiveFilter.MatchType.MAX_MATCH); + return mSensitiveFilter.get().getSensitiveWords(message, SensitiveFilter.MatchType.MAX_MATCH); } @Override