diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 32a0ec66..34591bd3 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -2148,8 +2148,14 @@ public class MemoryMessagesStore implements IMessagesStore { HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); if(request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted) { - Collection friendDatas = getFriendDatas(hzInstance, userId); - for (FriendData fd : friendDatas) { + MultiMap friendsMap = hzInstance.getMultiMap(USER_FRIENDS); + + Collection friends = friendsMap.get(userId); + if (friends == null || friends.size() == 0) { + friends = loadFriend(friendsMap, userId); + } + + for (FriendData fd : friends) { if (fd.getFriendUid().equals(request.getTargetUid())) { if (fd.getState() == 0) { return ErrorCode.ERROR_CODE_ALREADY_FRIENDS; @@ -2160,8 +2166,6 @@ public class MemoryMessagesStore implements IMessagesStore { } } - IMap friendEmpty = hzInstance.getMap(USER_FRIENDS_EMPTY); - if (isAdmin) { MultiMap friendsMap = hzInstance.getMultiMap(USER_FRIENDS);