Skip to Content.
Sympa Menu

grouper-users - Re: [grouper-users] Exceptions caused by threading ?

Subject: Grouper Users - Open Discussion List

List archive

Re: [grouper-users] Exceptions caused by threading ?


Chronological Thread 
  • From: Tom Zeller <>
  • To: Tom Barton <>
  • Cc: "GW Brown, Information Systems and Computing" <>,
  • Subject: Re: [grouper-users] Exceptions caused by threading ?
  • Date: Wed, 10 Oct 2007 10:50:08 -0500

As noted in the bug report, our workaround is catch-then-try-again. This issue affects us since our provisioning software (nexus) uses threads and we're almost live with Grouper.

Thanks again,
Tom

On Oct 10, 2007, at 9:35 AM, Tom Barton wrote:

This seems worthy of a Jira issue. TomZ, would you mind doing the honors?

GW Brown, Information Systems and Computing wrote:
Tom,
It isn't 'reasonable' that you get the error, but it is understandable.
MemberFinder.findBySubject(s, SubjectFinder.findById("foo"));
Internally, Grouper checks to see if a record exists. If not it will attempt to create one. If two threads do the same check at the same time, or within a very short space of time, one will succeed in creating a grouper_members record, but the other will fail.
In principle MemberFinder could catch the exception and attempt a new lookup, but that would require a code change.
Gary
--On 10 October 2007 08:00 -0500 Tom Zeller <> wrote:
Greetings,

Is it reasonable that multiple threads executing :

MemberFinder.findBySubject(s, SubjectFinder.findById("foo"));

may result in :

Exception in thread "Thread-17"
edu.internet2.middleware.grouper.internal.dao.GrouperDAOException: Could
not execute JDBC batch update at
edu.internet2.middleware.grouper.internal.dao.hibernate.HibernateMem berD
AO.create(HibernateMemberDAO.java:76)
at
edu.internet2.middleware.grouper.MemberFinder.internal_findOrCreateB ySub
ject(MemberFinder.java:139)
at
edu.internet2.middleware.grouper.MemberFinder.internal_findBySubject
(MemberFinder.java:123)
at edu.internet2.middleware.grouper.MemberFinder.findBySubject
(MemberFinder.java:53)
...
Caused by: net.sf.hibernate.exception.ConstraintViolationException:
Could not execute JDBC batch update
...
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into
grouper_members (member_uuid, subject_id, subject_source, subject_type,
id) values (5add0097-84b4-4c79-9e41-2588c622bd52, foo, umrsa, person,
0d61f1c2158669ff01158726d47a0013) was aborted. Call getNextException to
see the cause.
...
JDBCExceptionReporter:58 - ERROR: duplicate key violates unique
constraint "grouper_members_subject_id_key"
...
SessionImpl:2400 - Could not synchronize database state with session

?

I welcome advice regarding threads and Grouper.

Thank you,
Tom
----------------------
GW Brown, Information Systems and Computing





Archive powered by MHonArc 2.6.16.

Top of Page