diff --git a/broker/migrate/h2/V14__add_id_for_sensitive_word.sql b/broker/migrate/h2/V14__add_id_for_sensitive_word.sql new file mode 100755 index 00000000..f41c25b0 --- /dev/null +++ b/broker/migrate/h2/V14__add_id_for_sensitive_word.sql @@ -0,0 +1 @@ +alter table `t_sensitiveword` add column `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT; diff --git a/broker/migrate/mysql/V19__add_id_for_sensitive_word.sql b/broker/migrate/mysql/V19__add_id_for_sensitive_word.sql new file mode 100755 index 00000000..f41c25b0 --- /dev/null +++ b/broker/migrate/mysql/V19__add_id_for_sensitive_word.sql @@ -0,0 +1 @@ +alter table `t_sensitiveword` add column `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT; diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index e7cdb9a4..313be7be 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -1042,6 +1042,25 @@ public class MemoryMessagesStore implements IMessagesStore { groupInfo = groupInfo.toBuilder().setOwner(newOwner).setUpdateDt(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); + } + for (WFCMessage.GroupMember member : members) { + 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); + } 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); + } + } + return ErrorCode.ERROR_CODE_SUCCESS; }