[jboss-user] [jBPM Users] - takeTask() race condition

scollyp do-not-reply at jboss.com
Fri Nov 13 14:35:39 EST 2009


I have an app that lets users take a task with the following sequence.

1. taskList = taskService.findGroupTasks(user);
2. Task task = taskList.get(0);
3. taskService.takeTask(task.getId(), user);

I'm finding a race condition if multiple users get the same task at step 2 at the same time.  The first user to execute step 3 wins and the second gets the following exception:

Nov 13, 2009 12:42:32 PM org.hibernate.event.def.AbstractFlushingEventListener performExecutions
SEVERE: Could not synchronize database state with session
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.pvm.internal.task.TaskImpl#300945]
        at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1792)
        at 
...
org.jbpm.pvm.internal.svc.TaskServiceImpl.takeTask(TaskServiceImpl.java:178)

Is there a better way to do this?  Or do I just need catch StaleObjectStateException and try again for the second user?




View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4265616#4265616

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4265616



More information about the jboss-user mailing list