efip10,
Sorry, I used too broad a brush.
At least in some cases, the behavior I described is dependent on the isolation level
selected. If at least level 2 ("read-committed") is selected, then I think it
works as I described, if the database supports it. I believe that row-locking is used
internally to the database to prevent concurrent access during the commit. Everything is
written first, and then everything is unlocked. Thus if the race goes the wrong way, the
early reader will block until the late writer has finished. I don't know about
MySQL's behavior in this area.
While I think that JBPM is supposed to work
with any isolation level, its default isolation level is 1 ("read-uncommitted"),
and so there's much more experience with that level. The level for JBPM is set as
hibernate property hibernate.connection.isolation. I don't know where isolation level
for a database-persisted queue is dealt with for JMS - AFAICT, it's either
vendor-specific, or it's automatically set to "read-committed" if this
isolation level is supported. For JBoss messaging, I haven't found where it's
set, but see
http://labs.jboss.com/file-access/default/members/jbossmessaging/freezone...
for more info. I don't know how current it is.
Please share back whatever you find out!
-Ed Staub
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4066963#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...