Group.replaceMembers tries to delete effective memberships, throws error

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: Minor
    • 2.6.5
    • Affects Version/s: 2.4.0, 2.4.0.patch, 2.5.0
    • Component/s: API
    • None

      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.

            Assignee:
            Chad Redman (unc.edu) (Inactive)
            Reporter:
            Chad Redman (unc.edu) (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: