diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 9d907162..3bb77eac 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -908,9 +908,11 @@ public class MemoryMessagesStore implements IMessagesStore { } List updatedMemberList = new ArrayList<>(); + boolean hasOwnerMember = false; for (WFCMessage.GroupMember member : memberList) { if (member.getMemberId().equals(owner)) { member = member.toBuilder().setUpdateDt(dt).setCreateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build(); + hasOwnerMember = true; } else { member = member.toBuilder().setUpdateDt(dt).setCreateDt(dt).build(); } @@ -919,6 +921,12 @@ public class MemoryMessagesStore implements IMessagesStore { dt++; } + if(!hasOwnerMember && !StringUtil.isNullOrEmpty(owner)) { + WFCMessage.GroupMember member = WFCMessage.GroupMember.newBuilder().setMemberId(owner).setUpdateDt(dt).setCreateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build(); + groupMembers.put(groupId, member); + updatedMemberList.add(member); + } + groupInfo = groupInfo.toBuilder() .setTargetId(groupId) .setName(groupInfo.getName())