Description
Calling Group.replaceMembers and passing in a new set of subjects, when the group has effective members, returns a MemberDeleteAlreadyDeletedException. The logic has been there since 2011 (Grouper 1.7+).
2021-09-10 11:40:50,088: [main] ERROR Group.replaceMembers(1247) - existingMemberListSize: 83, groupName: unc:app:its:****************, newMemberListSize: 1, addedMemberCount: 0, operation: replaceMembers
|
ERROR edu.internet2.middleware.grouper.exception.MemberDeleteAlreadyDeletedException:
|
, group name: unc:app:its:****************, subject: Subject id: 702*********, sourceId: pid, field: members,
|
Problem in HibernateSession: HibernateSession (29699283): new, notReadonly, READ_WRITE_NEW, notActiveTransaction, session (20f63ddc)
|
at edu.internet2.middleware.grouper.Membership.internal_delImmediateMembership (Membership.java:1383)
|
at edu.internet2.middleware.grouper.Group$9.callback (Group.java:2687)
|
at edu.internet2.middleware.grouper.hibernate.HibernateSession.callbackHibernateSession (HibernateSession.java:703)
|
at edu.internet2.middleware.grouper.Group.internal_deleteMember (Group.java:2662)
|
at edu.internet2.middleware.grouper.Group.deleteMember (Group.java:2619)
|
at edu.internet2.middleware.grouper.Group.deleteMember (Group.java:2438)
|
at edu.internet2.middleware.grouper.Group.replaceMembers (Group.java:1226)
|
at edu.internet2.middleware.grouper.Group.replaceMembers (Group.java:1134)
|
at edu.internet2.middleware.grouper.Group$replaceMembers.call (Unknown Source)
|
Note that the group actually only has one immediate member, and it is of type g:gsa. It reports 83 current members, which is the total membership including effective members. The error is coming from Membership.internal_delImmediateMembership, when it tries to delete one of these effective members from the group (the MemberDeleteAlreadyDeletedException error is also unfortunately misleading and should be fixed).
The replaceMembers method should only look at immediate members when comparing old and new members. There is no way to delete effective members, so no point in trying to sync their memberships.
Attachments
Issue Links
- is related to
-
GRP-2328 Calling group.replaceMembers() to replace a direct group with its members deletes instead of replaces
- Resolved