OTimeoutException: Timeout on acquiring exclusive lock against resource of class:

77 views
Skip to first unread message

Adithyan K

unread,
Dec 12, 2014, 7:07:17 AM12/12/14
to orient-...@googlegroups.com
OrientDB Version : 2.0-M3

our software reads from doc db in multi threads while there is another only one thread creating records.......!

1. What is the reason for this Exception???
2. Does this mean that the writing thread's transaction has not been committed/rolledback in 30 seconds. If yes, I want to give you another input that all our transactions are committed and closed within 5 seconds from the time of db.begin()

___________

com.orientechnologies.orient.core.exception.ODatabaseException: Error on retrieving record #43:1148902 (cluster: por_point)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeReadRecord(ODatabaseDocumentTx.java:1530) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.orient.core.tx.OTransactionOptimistic.loadRecord(OTransactionOptimistic.java:221) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.load(ODatabaseDocumentTx.java:1354) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.load(ODatabaseDocumentTx.java:123) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.orient.core.id.ORecordId.getRecord(ORecordId.java:309) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at in.co.nmsworks.documenttdb.db.DocDB.getDocTypeObjects(DocDB.java:118) ~[cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.inventory.store.RcaInvReader.getEntitiesByNonUniqueKeySearch(RcaInvReader.java:344) ~[cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.inventory.store.RcaInvReader.getPointEntities(RcaInvReader.java:354) ~[cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.inventory.store.RcaInvReader.buildImpactAnalysisDataHolderForCTP(RcaInvReader.java:279) ~[cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.plug.impl.circuit.impact.node.constructor.impl2.CTPImpactAnalysisDataBuilder.buildImpactAnalysisData(CTPImpactAnalysisDataBuilder.java:40) ~[cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.plug.impl.circuit.impl2.CircuitPlugHelper.getImpactAnalysisDataHolder(CircuitPlugHelper.java:117) ~[cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.plug.impl.circuit.impl2.CircuitPlug.getImpactAnalysisDataHolder(CircuitPlug.java:216) ~[cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.plug.impl.circuit.impl2.CircuitPlug.analyze(CircuitPlug.java:105) [cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.plug.Plug.computeAndStore(Plug.java:111) [cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.server.PlugInvokationTask.getPlugResult(PlugInvokationTask.java:126) [cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.server.PlugInvokationTask.compute(PlugInvokationTask.java:66) [cygnetOTNMS.jar:?]
        at in.co.nmsworks.cygnet.telecom.fault.rcasia.server.PlugInvokationTask.compute(PlugInvokationTask.java:37) [cygnetOTNMS.jar:?]
        at java.util.concurrent.RecursiveTask.exec(RecursiveTask.java:93) [?:1.7.0_55]
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:334) [?:1.7.0_55]
        at java.util.concurrent.ForkJoinWorkerThread.execTask(ForkJoinWorkerThread.java:604) [?:1.7.0_55]
        at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:762) [?:1.7.0_55]
        at java.util.concurrent.ForkJoinPool.work(ForkJoinPool.java:646) [?:1.7.0_55]
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:398) [?:1.7.0_55]
Caused by: com.orientechnologies.common.concur.OTimeoutException: Timeout on acquiring exclusive lock against resource of class: class com.orientechnologies.common.concur.resource.OSharedResourceAdaptiveExternal with timeout=30000
        at com.orientechnologies.common.concur.resource.OSharedResourceAdaptive.throwTimeoutException(OSharedResourceAdaptive.java:188) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.common.concur.resource.OSharedResourceAdaptive.acquireSharedLock(OSharedResourceAdaptive.java:165) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.common.concur.resource.OSharedResourceAdaptiveExternal.acquireSharedLock(OSharedResourceAdaptiveExternal.java:44) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.readRecord(OAbstractPaginatedStorage.java:1198) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.readRecord(OAbstractPaginatedStorage.java:644) ~[orientdb-core-2.0-M3.jar:2.0-M3]
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeReadRecord(ODatabaseDocumentTx.java:1497) ~[orientdb-core-2.0-M3.jar:2.0-M3]

Andrey Lomakin

unread,
Dec 12, 2014, 8:21:34 AM12/12/14
to orient-database

Hi,
I do not think timeout of 30 s is reasonable.
But le's double check could you set huge timeout like 300 s. and see whether problem is reproducible.
Any way could you create issue about it ?




--
Best regards,
Andrey Lomakin.

Adithyan K

unread,
Dec 12, 2014, 12:43:37 PM12/12/14
to orient-...@googlegroups.com

alexander anguiano

unread,
Feb 6, 2015, 6:03:16 PM2/6/15
to orient-...@googlegroups.com
I have a similar problem.  in the latest release 2.0.1

orientdb 2.0.1
java 7
window & linux
I use sql and the java api

I have a class  that i'm updating frequently in multiple threads.  This same class is used in a guery to show in a  grid.

i did find the setting 

OGlobalConfiguration.STORAGE_LOCK_TIMEOUT.setValue(5 * 60 * 1000);




but it didnt work.  I get this exception

Is there a setting i need to set?

ERROR [2015-02-06 22:24:09,571] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: 1316ba53c041965c
! com.orientechnologies.common.concur.OTimeoutException: Can not lock record for 2000 ms. seems record is deadlocked by other record
! at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.acquireReadLock(OAbstractPaginatedStorage.java:1300) ~[assets.jar:0.0.1-SNAPSHOT]
! at com.orientechnologies.orient.core.tx.OTransactionAbstract.lockRecord(OTransactionAbstract.java:120) ~[assets.jar:0.0.1-SNAPSHOT]
! at com.orientechnologies.orient.core.id.ORecordId.lock(ORecordId.java:282) ~[assets.jar:0.0.1-SNAPSHOT]
! at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.lockRecord(OAbstractPaginatedStorage.java:1776) ~[assets.jar:0.0.1-SNAPSHOT]
! at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.readRecord(OAbstractPaginatedStorage.java:1416) ~[assets.jar:0.0.1-SNAPSHOT]
! at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.readRecord(OAbstractPaginatedStorage.java:694) ~[assets.jar:0.0.1-SNAPSHOT]
! at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeReadRecord(ODatabaseDocumentTx.java:1569) ~[assets.jar:0.0.1-SNAPSHOT]

Kareem Jabr

unread,
Feb 19, 2015, 6:28:20 PM2/19/15
to orient-...@googlegroups.com
I am also having the same issue have you found a solution for it. I am on 2.0.2
Reply all
Reply to author
Forward
0 new messages