Uploaded image for project: 'Grouper'
  1. Grouper
  2. GRP-3597

Group.replaceMembers tries to delete effective memberships, throws error

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • 2.6.5
    • 2.4.0, 2.4.0.patch, 2.5.0
    • API
    • None

    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

          Activity

            People

              chad.redman@at.internet2.edu Chad Redman (unc.edu)
              chad.redman@at.internet2.edu Chad Redman (unc.edu)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: