When running in a cluster, jBPM synchronizes on the database. By default with optimistic
locking. This means that each operation is performed in a transaction. And if at the end a
collision is detected, then the transaction is rolled back and has to be handled. E.g. by a
retry. So optimistic locking exceptions are usually part of the normal operation. Therefor,
by default, the org.hibernate.StateObjectStateException
s the that hibernate
throws in that case are not logged with error and a stack trace, but instead a simple info
message 'optimistic locking failed' is displayed.
Hibernate itself will log the StateObjectStateException including a stack trace. If you
want to get rid of these stack traces, put the level of
org.hibernate.event.def.AbstractFlushingEventListener
to FATAL. If you use
log4j following line of configuration can be used for that:
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=FATAL
If you want to enable logging of the jBPM stack traces, add the following line to your jbpm.cfg.xml:
<boolean name="jbpm.hide.stale.object.exceptions" value="false" />
.