// we obtain a lock in this synchronization interceptor because the lock needs to be tied to the synchronization
// so that it can released on the tx synchronization callbacks
final Object lockOwner = getLockOwner(transactionSynchronizationRegistry);
lock.pushOwner(lockOwner);
try {
lock.lock();
boolean syncRegistered = false;
synchronized (lock) {
//if the previous transaction was rolled back we re-load the entity bean state in the current TX
if(instance.isReloadRequired()) {