cancel
Showing results for 
Search instead for 
Did you mean: 

LockException when trying to lock the instance before writing.

Former Member
0 Kudos

hi...

i am working with entity beans. when i am trying to update the data from multiple clients at the same time it is giving exception like...................

[code]

java.rmi.RemoteException: com.sap.engine.services.ejb.exceptions.BaseRemoteException: Exception in method updateTest2.

at in.mobileone.test2.Test2UpdateSessionObjectImpl0.updateTest2(Test2UpdateSessionObjectImpl0.java:140)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0p4_Skel.dispatch(Test2UpdateSessionObjectImpl0p4_Skel.java:157)

at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:294)

at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)

at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)

Caused by: com.sap.engine.services.ejb.exceptions.BaseTransactionRolledbackLocalException: Exception in method in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(java.lang.String).

at in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(Test2EntityLocalLocalObjectImpl0.java:780)

at in.mobileone.test2.Test2UpdateSessionBean.updateTest2(Test2UpdateSessionBean.java:64)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0.updateTest2(Test2UpdateSessionObjectImpl0.java:122)

... 10 more

Caused by: <b>com.sap.engine.services.ejb.entity.pm.lock.LockException: LockException when trying to lock the instance before writing</b>.

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:87)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeLock(UpdatablePersistent.java:186)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeOperation(UpdatablePersistent.java:209)

at in.mobileone.test2.Test2EntityBean0PM.setStrFiled2(Test2EntityBean0PM.java:97)

at in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(Test2EntityLocalLocalObjectImpl0.java:755)

... 12 more

Caused by: com.sap.engine.frame.core.locking.LockException: Cannot lock [2007072510571546800000mobileone202.................5791450, %TMP_TEST2 wCGMIA, test2, E]; it is in use by another owner. The lock collision occurred with user admin.

at com.sap.engine.core.locking.impl3.LockingManagerImpl.lockInternal(LockingManagerImpl.java:154)

at com.sap.engine.core.locking.AbstractLockingManagerImpl.lock(AbstractLockingManagerImpl.java:420)

at com.sap.engine.services.applocking.AbstractBaseLocking.lockInternal(AbstractBaseLocking.java:126)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:129)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:138)

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:82)

... 16 more

; nested exception is:

javax.ejb.TransactionRolledbackLocalException: com.sap.engine.services.ejb.exceptions.BaseTransactionRolledbackLocalException: Exception in method in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(java.lang.String).

at in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(Test2EntityLocalLocalObjectImpl0.java:780)

at in.mobileone.test2.Test2UpdateSessionBean.updateTest2(Test2UpdateSessionBean.java:64)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0.updateTest2(Test2UpdateSessionObjectImpl0.java:122)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0p4_Skel.dispatch(Test2UpdateSessionObjectImpl0p4_Skel.java:157)

at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:294)

at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)

at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)

Caused by: com.sap.engine.services.ejb.entity.pm.lock.LockException: LockException when trying to lock the instance before writing.

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:87)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeLock(UpdatablePersistent.java:186)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeOperation(UpdatablePersistent.java:209)

at in.mobileone.test2.Test2EntityBean0PM.setStrFiled2(Test2EntityBean0PM.java:97)

at in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(Test2EntityLocalLocalObjectImpl0.java:755)

... 12 more

Caused by: com.sap.engine.frame.core.locking.LockException: Cannot lock [2007072510571546800000mobileone202.................5791450, %TMP_TEST2 wCGMIA, test2, E]; it is in use by another owner. The lock collision occurred with user admin.

at com.sap.engine.core.locking.impl3.LockingManagerImpl.lockInternal(LockingManagerImpl.java:154)

at com.sap.engine.core.locking.AbstractLockingManagerImpl.lock(AbstractLockingManagerImpl.java:420)

at com.sap.engine.services.applocking.AbstractBaseLocking.lockInternal(AbstractBaseLocking.java:126)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:129)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:138)

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:82)

... 16 more

com.sap.engine.services.ejb.entity.pm.lock.LockException: LockException when trying to lock the instance before writing.

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:87)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeLock(UpdatablePersistent.java:186)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeOperation(UpdatablePersistent.java:209)

at in.mobileone.test2.Test2EntityBean0PM.setStrFiled2(Test2EntityBean0PM.java:97)

at in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(Test2EntityLocalLocalObjectImpl0.java:755)

at in.mobileone.test2.Test2UpdateSessionBean.updateTest2(Test2UpdateSessionBean.java:64)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0.updateTest2(Test2UpdateSessionObjectImpl0.java:122)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0p4_Skel.dispatch(Test2UpdateSessionObjectImpl0p4_Skel.java:157)

at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:294)

at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)

at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)

Caused by: com.sap.engine.frame.core.locking.LockException: Cannot lock [2007072510571546800000mobileone202.................5791450, %TMP_TEST2 wCGMIA, test2, E]; it is in use by another owner. The lock collision occurred with user admin.

at com.sap.engine.core.locking.impl3.LockingManagerImpl.lockInternal(LockingManagerImpl.java:154)

at com.sap.engine.core.locking.AbstractLockingManagerImpl.lock(AbstractLockingManagerImpl.java:420)

at com.sap.engine.services.applocking.AbstractBaseLocking.lockInternal(AbstractBaseLocking.java:126)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:129)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:138)

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:82)

... 16 more

at com.sap.engine.services.ejb.exceptions.BaseRemoteException.writeReplace(BaseRemoteException.java:276)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at java.io.ObjectStreamClass.invokeWriteReplace(ObjectStreamClass.java:896)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1011)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)

at com.sap.engine.services.rmi_p4.DispatchImpl.throwException(DispatchImpl.java:135)

at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:296)

at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)

at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)

Caused by: javax.ejb.TransactionRolledbackLocalException: com.sap.engine.services.ejb.exceptions.BaseTransactionRolledbackLocalException: Exception in method in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(java.lang.String).

at in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(Test2EntityLocalLocalObjectImpl0.java:780)

at in.mobileone.test2.Test2UpdateSessionBean.updateTest2(Test2UpdateSessionBean.java:64)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0.updateTest2(Test2UpdateSessionObjectImpl0.java:122)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0p4_Skel.dispatch(Test2UpdateSessionObjectImpl0p4_Skel.java:157)

at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:294)

at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)

at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)

Caused by: com.sap.engine.services.ejb.entity.pm.lock.LockException: LockException when trying to lock the instance before writing.

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:87)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeLock(UpdatablePersistent.java:186)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeOperation(UpdatablePersistent.java:209)

at in.mobileone.test2.Test2EntityBean0PM.setStrFiled2(Test2EntityBean0PM.java:97)

at in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(Test2EntityLocalLocalObjectImpl0.java:755)

... 12 more

Caused by: com.sap.engine.frame.core.locking.LockException: Cannot lock [2007072510571546800000mobileone202.................5791450, %TMP_TEST2 wCGMIA, test2, E]; it is in use by another owner. The lock collision occurred with user admin.

at com.sap.engine.core.locking.impl3.LockingManagerImpl.lockInternal(LockingManagerImpl.java:154)

at com.sap.engine.core.locking.AbstractLockingManagerImpl.lock(AbstractLockingManagerImpl.java:420)

at com.sap.engine.services.applocking.AbstractBaseLocking.lockInternal(AbstractBaseLocking.java:126)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:129)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:138)

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:82)

... 16 more

com.sap.engine.services.ejb.entity.pm.lock.LockException: LockException when trying to lock the instance before writing.

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:87)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeLock(UpdatablePersistent.java:186)

at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.writeOperation(UpdatablePersistent.java:209)

at in.mobileone.test2.Test2EntityBean0PM.setStrFiled2(Test2EntityBean0PM.java:97)

at in.mobileone.test2.Test2EntityLocalLocalObjectImpl0.setStrFiled2(Test2EntityLocalLocalObjectImpl0.java:755)

at in.mobileone.test2.Test2UpdateSessionBean.updateTest2(Test2UpdateSessionBean.java:64)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0.updateTest2(Test2UpdateSessionObjectImpl0.java:122)

at in.mobileone.test2.Test2UpdateSessionObjectImpl0p4_Skel.dispatch(Test2UpdateSessionObjectImpl0p4_Skel.java:157)

at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:294)

at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)

at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:119)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)

Caused by: com.sap.engine.frame.core.locking.LockException: Cannot lock [2007072510571546800000mobileone202.................5791450, %TMP_TEST2 wCGMIA, test2, E]; it is in use by another owner. The lock collision occurred with user admin.

at com.sap.engine.core.locking.impl3.LockingManagerImpl.lockInternal(LockingManagerImpl.java:154)

at com.sap.engine.core.locking.AbstractLockingManagerImpl.lock(AbstractLockingManagerImpl.java:420)

at com.sap.engine.services.applocking.AbstractBaseLocking.lockInternal(AbstractBaseLocking.java:126)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:129)

at com.sap.engine.services.applocking.TableLockingImpl.lock(TableLockingImpl.java:138)

at com.sap.engine.services.ejb.entity.pm.lock.TableLockingSystem.write(TableLockingSystem.java:82)

... 16 more

at com.sap.engine.services.ejb.exceptions.BaseTransactionRolledbackLocalException.writeReplace(BaseTransactionRolledbackLocalException.java:273)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at java.io.ObjectStreamClass.invokeWriteReplace(ObjectStreamClass.java:896)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1011)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)

... 11 more[/code]

regards

Guru

Message was edited by:

Guruvulu Bojja

Message was edited by:

Guruvulu Bojja

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

open persistent.xml.

change radio button selection from auto locking to no automatic locking.

Regards,

Naga

Former Member
0 Kudos

hi,

it is working fine but.... we need to lock the table when client is accessing so that we can maintain the consistente data

regards

Guru

Vlado
Advisor
Advisor
0 Kudos

Hi Guru,

> we need to lock the table when client is accessing so that we can maintain the consistente data

And that's exactly why the LockException is thrown. If the second client was allowed to update the same data record, this would result in a dirty write which is not allowed by any means. So it's not quite clear what you expect... You lock the data - you get a LockException on concurrent write access - it's so simple and not surprising at all, isn't it?

What you can probably do is to catch the LockException and retry the operation according to your business logic.

HTH!

-- Vladimir

Former Member
0 Kudos

hi, Vladimir

i think container should not throw an exception when second client wants to update the data it has to put the second client in the wait mode and it wake up the second client when the first client finished its transaction...................

but here we are getting exception ..........wht can i do for this ???????????

regards

Guru

Vlado
Advisor
Advisor
0 Kudos

Hi Guru,

There are different strategies possible, one is indeed to wait for the lock to be released (probably with some timeout), another one is to throw a lock exception immediately (as implemented).

What you can do is to actually implement some kind of wait (sleep) in the client in the case that it gets a LockException, and then retry the operation. See also thread.

-- Vladimir

Answers (0)