Digged into it a bit further.
Seems to me that there are cases for which FORCE lock will never work.
Let me try to explain:
If you have a process with a fork join where the parallel branches contain a node which
performs a query.
If you can run from start to the join in the same transaction you get into trouble with
the FORCE lock.
What happens is:
- Main token gets created and persisted - version is 0
- Fork join is triggered, 2 child tokens are created.
- when query is performed in a node in one of the branches, an auto flush is done. This
will increment the version of the parent lock to 1, since this one changed since the
beginning of the process (some dates are filled in,...)
- When you arrive in the fork, the lock will try to increase the version to 1, which fails
since it is already 1.
So my problem was not related to any bug in oracle but just due to the default locking and
the fact that in my unit test I run through the complete process in one transaction.
In these cases you need to set lock to upgrade.
In other cases you can leave the default locking (force lock).
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4200278#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...