From bee2f3c6ef3516255df40aec896ae8ef622a9bdb Mon Sep 17 00:00:00 2001 From: "heavyrain.lee" Date: Wed, 13 Nov 2019 15:27:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E7=A7=BB=E7=BE=A4=E4=B8=BB=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/moquette/persistence/MemoryMessagesStore.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index e7c1cf86..21901bce 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -1038,25 +1038,31 @@ public class MemoryMessagesStore implements IMessagesStore { //check the new owner is in member list? is that necessary? long updateDt = System.currentTimeMillis(); - groupInfo = groupInfo.toBuilder().setOwner(newOwner).setUpdateDt(updateDt).build(); - + groupInfo = groupInfo.toBuilder().setOwner(newOwner).setUpdateDt(updateDt).setMemberUpdateDt(updateDt).build(); mIMap.set(groupId, groupInfo); + MultiMap groupMembers = hzInstance.getMultiMap(GROUP_MEMBERS); Collection members = groupMembers.get(groupId); if (members == null || members.size() == 0) { members = loadGroupMemberFromDB(hzInstance, groupId); } + int modifyMemeberCount = 0; for (WFCMessage.GroupMember member : members) { + if (modifyMemeberCount == 2) { + break; + } if (newOwner.equals(member.getMemberId())) { groupMembers.remove(groupId, member); member = member.toBuilder().setType(GroupMemberType_Owner).setUpdateDt(updateDt).build(); databaseStore.persistGroupMember(groupId, Arrays.asList(member)); groupMembers.put(groupId, member); + modifyMemeberCount++; } else if(member.getType() == GroupMemberType_Owner) { groupMembers.remove(groupId, member); member = member.toBuilder().setType(GroupMemberType_Normal).setUpdateDt(updateDt).build(); databaseStore.persistGroupMember(groupId, Arrays.asList(member)); groupMembers.put(groupId, member); + modifyMemeberCount++; } }