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

GrouperDAOException when threads 'simultaneously' call MemberFinder.internal_findOrCreateBySubject

    XMLWordPrintable

Details

    • Bug
    • Resolution: Completed
    • Minor
    • HEAD
    • 1.2.0, 1.2.1
    • API
    • None

    Description

      More than one thread calling

      MemberFinder.findBySubject();

      may result in

      GrouperDAOException: Could not execute JDBC batch update at edu.internet2.middleware.grouper.internal.dao.hibernate.HibernateMemberDAO.create(HibernateMemberDAO.java:76)
      at edu.internet2.middleware.grouper.MemberFinder.internal_findOrCreateBySubject(MemberFinder.java:139)
      at edu.internet2.middleware.grouper.MemberFinder.internal_findBySubject(MemberFinder.java:123)
      at edu.internet2.middleware.grouper.MemberFinder.findBySubject(MemberFinder.java:53)
      ...
      JDBCExceptionReporter:58 - ERROR: duplicate key violates unique constraint "grouper_members_subject_id_key"

      Our provisioning software uses one thread per provisioned resource, of which we have around 10. When evaluating group membership for the first time for a subject, we've seen this exception. Our workaround is along the lines of

      Member member;
      try {
      member = MemberFinder.findBySubject(s, SubjectFinder.findById());
      } catch (GrouperDAOException e) {
      // try again
      member = MemberFinder.findBySubject(s, SubjectFinder.findById());
      }

      Attachments

        Activity

          People

            tom.zeller@at.internet2.edu Tom Zeller
            tom.zeller@at.internet2.edu Tom Zeller
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: