GrouperDAOException when threads 'simultaneously' call MemberFinder.internal_findOrCreateBySubject

XMLWordPrintable

    • Type: Bug
    • Resolution: Completed
    • Priority: Minor
    • HEAD
    • Affects Version/s: 1.2.0, 1.2.1
    • Component/s: API
    • None

      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());
      }

            Assignee:
            Tom Zeller (Inactive)
            Reporter:
            Tom Zeller (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: