Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Threading deadlock with Edge unique indexes #5875

Closed
TeamXceleratorDev opened this issue Mar 23, 2016 · 13 comments
Closed

Threading deadlock with Edge unique indexes #5875

TeamXceleratorDev opened this issue Mar 23, 2016 · 13 comments
Assignees
Milestone

Comments

@TeamXceleratorDev
Copy link

In 2.1.12, it is possible to create a thread deadlock when threads are inserting into an Edge class which has a property bound by a unique indexes. Performance slows down and comes to a halt. I will try to attach an example database later which can reproduce the issue. Work-around for now is to simply remove the unique index.

@andrii0lomakin
Copy link
Member

Hi @TeamXceleratorDev ,
We need full thread dump to fix such kind of issues, also we already have similar issue and may be it is already fixed in 2.1.14. Any way please do not try 2.1.14 but send us full thread dump instead.

@gerdhub
Copy link

gerdhub commented Mar 23, 2016

After some more investigations, this seems to be related to #5821.

@andrii0lomakin
Copy link
Member

Ok, any way please send us full thread dump to fix it.
Seems I asked the same in related issue :-)

@TeamXceleratorDev
Copy link
Author

Here is a sample stack using jconsole from my loading app. It actually seems similar to issue #5433. I am testing now with 2.1.13 GA. The issue still exists. It only happens when I have a multi-threaded edge insertion with a unique index on an edge property.

Name: Thread-3
State: WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync@629f6714 owned by: OrientDB <- Asynch Client (/127.0.0.1:2424)
Total blocked: 188 Total waited: 28,791

Stack trace:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
com.orientechnologies.common.concur.lock.OAdaptiveLock.lock(OAdaptiveLock.java:99)
com.orientechnologies.orient.enterprise.channel.OChannel.acquireReadLock(OChannel.java:121)
com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynchClient.beginResponse(OChannelBinaryAsynchClient.java:181)
com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynchClient.beginResponse(OChannelBinaryAsynchClient.java:170)
com.orientechnologies.orient.client.remote.OStorageRemote.beginResponse(OStorageRemote.java:2167)
com.orientechnologies.orient.client.remote.OStorageRemote.command(OStorageRemote.java:1197)
com.orientechnologies.orient.client.remote.OStorageRemoteThread.command(OStorageRemoteThread.java:453)
com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
com.tinkerpop.blueprints.impls.orient.OrientGraphCommand.execute(OrientGraphCommand.java:49)
dbloadtest.DBLoadTest.performOrientWriteTest(DBLoadTest.java:461)
dbloadtest.DBLoadTest.run(DBLoadTest.java:300)
java.lang.Thread.run(Thread.java:745)

@TeamXceleratorDev
Copy link
Author

Here is the thread dump from Orient itself:

Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.73-b02 mixed mode):

"OrientDB HTTP Connection /0:0:0:0:0:0:0:1:2480<-/0:0:0:0:0:0:0:1:49691" #399 daemon prio=5 os_prio=31 tid=0x00007fcdd6552800 nid=0x621b runnable [0x0000000122d29000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
- locked <0x000000077912adf0> (a java.io.BufferedInputStream)
at com.orientechnologies.orient.enterprise.channel.text.OChannelText.read(OChannelText.java:61)
at com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpAbstract.execute(ONetworkProtocolHttpAbstract.java:571)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB WAL Flush Task (redbox)" #398 daemon prio=5 os_prio=31 tid=0x00007fcdee421800 nid=0x5d23 waiting on condition [0x000000011e0a9000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000007bfcd01c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

"OrientDB <- BinaryClient (/127.0.0.1:49597)" #367 daemon prio=5 os_prio=31 tid=0x00007fcdca2b5800 nid=0x3c13 waiting on condition [0x0000000124e67000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49596)" #366 daemon prio=5 os_prio=31 tid=0x00007fcdd662d800 nid=0x7407 runnable [0x0000000124d63000]
java.lang.Thread.State: RUNNABLE
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireWriteLock(OReadersWriterSpinLock.java:132)
at com.orientechnologies.common.concur.lock.OModificationLock.prohibitModifications(OModificationLock.java:96)
at com.orientechnologies.common.concur.lock.OModificationLock.prohibitModifications(OModificationLock.java:84)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.synch(OAbstractPaginatedStorage.java:1281)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.checkLowDiskSpaceAndFullCheckpointRequests(OAbstractPaginatedStorage.java:2908)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.commit(OAbstractPaginatedStorage.java:1155)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:606)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49595)" #365 daemon prio=5 os_prio=31 tid=0x00007fcde2851000 nid=0x6c0b waiting on condition [0x0000000124c61000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49594)" #364 daemon prio=5 os_prio=31 tid=0x00007fcdebee8800 nid=0x6e0b waiting on condition [0x0000000124b5e000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49593)" #363 daemon prio=5 os_prio=31 tid=0x00007fcdf504e800 nid=0x6b0b waiting on condition [0x0000000124a5b000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49590)" #362 daemon prio=5 os_prio=31 tid=0x00007fcdfa9d5800 nid=0x640b waiting on condition [0x0000000124958000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49591)" #361 daemon prio=5 os_prio=31 tid=0x00007fcde2864000 nid=0x720b waiting on condition [0x0000000124855000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49589)" #360 daemon prio=5 os_prio=31 tid=0x00007fcde0e58000 nid=0x630b waiting on condition [0x00000001244ad000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49592)" #359 daemon prio=5 os_prio=31 tid=0x00007fcdf2018000 nid=0x5f13 waiting on condition [0x00000001243aa000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB <- BinaryClient (/127.0.0.1:49588)" #358 daemon prio=5 os_prio=31 tid=0x00007fcdeedf8800 nid=0x3f23 waiting on condition [0x0000000124131000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c044a070> (a com.orientechnologies.common.concur.lock.OReadersWriterSpinLock)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireReadLock(OReadersWriterSpinLock.java:77)
at com.orientechnologies.common.concur.lock.OModificationLock.requestModificationLock(OModificationLock.java:48)
at com.orientechnologies.orient.core.index.OIndexAbstract.acquireModificationLock(OIndexAbstract.java:859)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.acquireIndexLocks(OTransactionOptimistic.java:642)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:595)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:156)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2653)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2621)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:161)
at com.orientechnologies.orient.graph.sql.OGraphCommandExecutorSQLFactory.runInConfiguredTxMode(OGraphCommandExecutorSQLFactory.java:262)
at com.orientechnologies.orient.graph.sql.OCommandExecutorSQLCreateEdge.execute(OCommandExecutorSQLCreateEdge.java:153)
at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:90)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:1545)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1518)
at com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:67)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.command(ONetworkProtocolBinary.java:1323)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.executeRequest(ONetworkProtocolBinary.java:400)
at com.orientechnologies.orient.server.network.protocol.binary.OBinaryNetworkProtocolAbstract.execute(OBinaryNetworkProtocolAbstract.java:223)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)

"OrientDB Auditing Logging Thread - redbox" #27 prio=5 os_prio=31 tid=0x00007fcdf231f800 nid=0x6003 waiting on condition [0x0000000124234000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c10469f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.orientechnologies.agent.auditing.OAuditingLoggingThread.run(OAuditingLoggingThread.java:59)

"OrientDB Write Cache Flush Task (redbox)" #25 daemon prio=10 os_prio=31 tid=0x00007fcdf2b95800 nid=0x3b07 waiting on condition [0x0000000123c2e000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c00150b0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

"DestroyJavaVM" #20 prio=5 os_prio=31 tid=0x00007fcdf200b800 nid=0xe07 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"Timer-1" #18 daemon prio=5 os_prio=31 tid=0x00007fcdf31bc800 nid=0x5b03 in Object.wait() [0x0000000123a28000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x00000006c00349c0> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"OrientDB ONetworkProtocolHttpDb listen at 0.0.0.0:2480-2490" #16 prio=5 os_prio=31 tid=0x00007fcdf2aa0000 nid=0x5903 runnable [0x0000000123725000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at java.net.ServerSocket.accept(ServerSocket.java:513)
at com.orientechnologies.orient.server.network.OServerNetworkListener.run(OServerNetworkListener.java:190)

"OrientDB ONetworkProtocolBinary listen at 0.0.0.0:2424-2430" #14 prio=5 os_prio=31 tid=0x00007fcdf2a9f000 nid=0x5703 runnable [0x0000000123087000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at java.net.ServerSocket.accept(ServerSocket.java:513)
at com.orientechnologies.orient.server.network.OServerNetworkListener.run(OServerNetworkListener.java:190)

"Timer-0" #11 daemon prio=5 os_prio=31 tid=0x00007fcdf1b9e000 nid=0x5503 in Object.wait() [0x0000000122f03000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x00000006c0044410> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"Service Thread" #9 daemon prio=9 os_prio=31 tid=0x00007fcdf280d800 nid=0x5103 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" #8 daemon prio=9 os_prio=31 tid=0x00007fcdf3017800 nid=0x4f03 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #7 daemon prio=9 os_prio=31 tid=0x00007fcdf2808800 nid=0x4d03 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=31 tid=0x00007fcdf1837800 nid=0x4b03 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=31 tid=0x00007fcdf1836000 nid=0x4903 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=31 tid=0x00007fcdf1860800 nid=0x3d0b waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=31 tid=0x00007fcdf2015800 nid=0x2a03 in Object.wait() [0x000000011df60000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
- locked <0x00000006c004ccd0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x00007fcdf2806000 nid=0x2803 in Object.wait() [0x000000011de5d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)
- locked <0x00000006c004ce88> (a java.lang.ref.Reference$Lock)

"VM Thread" os_prio=31 tid=0x00007fcdf185b800 nid=0x2603 runnable

"GC task thread#0 (ParallelGC)" os_prio=31 tid=0x00007fcdf2803800 nid=0xb07 runnable

"GC task thread#1 (ParallelGC)" os_prio=31 tid=0x00007fcdf3000000 nid=0x90b runnable

"GC task thread#2 (ParallelGC)" os_prio=31 tid=0x00007fcdf3001000 nid=0x717 runnable

"GC task thread#3 (ParallelGC)" os_prio=31 tid=0x00007fcdf3001800 nid=0x51b runnable

"GC task thread#4 (ParallelGC)" os_prio=31 tid=0x00007fcdf3002000 nid=0x313 runnable

"GC task thread#5 (ParallelGC)" os_prio=31 tid=0x00007fcdf3002800 nid=0x113 runnable

"GC task thread#6 (ParallelGC)" os_prio=31 tid=0x00007fcdf180b000 nid=0x1507 runnable

"GC task thread#7 (ParallelGC)" os_prio=31 tid=0x00007fcdf1809000 nid=0x2403 runnable

"VM Periodic Task Thread" os_prio=31 tid=0x00007fcdf1861800 nid=0x5303 waiting on condition

JNI global references: 1761

Heap
PSYoungGen total 1394176K, used 282438K [0x000000076ab00000, 0x00000007c0000000, 0x00000007c0000000)
eden space 1390592K, 20% used [0x000000076ab00000,0x000000077be49a50,0x00000007bf900000)
from space 3584K, 15% used [0x00000007bfc80000,0x00000007bfd08000,0x00000007c0000000)
to space 3584K, 0% used [0x00000007bf900000,0x00000007bf900000,0x00000007bfc80000)
ParOldGen total 2796544K, used 205904K [0x00000006c0000000, 0x000000076ab00000, 0x000000076ab00000)
object space 2796544K, 7% used [0x00000006c0000000,0x00000006cc914068,0x000000076ab00000)
Metaspace used 26409K, capacity 27082K, committed 27264K, reserved 1073152K
class space used 2837K, capacity 3109K, committed 3200K, reserved 1048576K

@andrii0lomakin
Copy link
Member

Hi,
Thank you very much but judging from thread dump we need also:

  1. Memory dump from this state.
  2. Server logs.

Also small note, could you put big snippets of code or thread dumps, not directly to issue comment but as Gist.

@andrii0lomakin
Copy link
Member

Hi guys,
Any updates for this case ?

@TeamXceleratorDev
Copy link
Author

My apologies, we are tied up with a few other efforts at the moment. I will try to provide more detail in a few days. I also spent time recently reading through the source code involved with locking based on the stack trace. I think I understand the basics. This issue only occurs under multi-threaded load test with edges + unique indexes. It is some form of a race condition. I have never run Orient in a debugger before. I bet that would show the issue right away.

@andrii0lomakin
Copy link
Member

@TeamXceleratorDev our idea is that one of the write locks was acquired but was not released . But to find such place we need data which we asked above. Also please note that it is very specific case, look at those lines in thread dump:

com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.synch(OAbstractPaginatedStorage.java:1281)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.checkLowDiskSpaceAndFullCheckpointRequests(OAbstractPaginatedStorage.java:2908)

it means that database thinks that there is no enough free space for data processing and tries to compact it's files .

Anyway once we have all data I think we may quickly fix given issue.

@ygyg70
Copy link

ygyg70 commented Mar 29, 2016

It seems that I have encountered the same issue.
In my case, there is no concurrency. I am embedding the server inside Tomcat. Issue happens whether I am in distributed mode or non distributed mode, with transactions or without transactions.
Happens when there are indexes on edge properties. Also when none of the indexes is unique.

Here is the Orient part of the locked thread stack:
"RMI TCP Connection(3)-127.0.0.1@1477" daemon prio=5 tid=0x14 nid=NA runnable
java.lang.Thread.State: RUNNABLE
at com.orientechnologies.common.concur.lock.OReadersWriterSpinLock.acquireWriteLock(OReadersWriterSpinLock.java:132)
at com.orientechnologies.common.concur.lock.OModificationLock.prohibitModifications(OModificationLock.java:96)
at com.orientechnologies.common.concur.lock.OModificationLock.prohibitModifications(OModificationLock.java:84)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.synch(OAbstractPaginatedStorage.java:1281)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.checkLowDiskSpaceAndFullCheckpointRequests(OAbstractPaginatedStorage.java:2908)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.updateRecord(OAbstractPaginatedStorage.java:931)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:2004)
at com.orientechnologies.orient.core.tx.OTransactionNoTx.saveRecord(OTransactionNoTx.java:159)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:2533)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:122)
at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1768)
at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1759)
at com.tinkerpop.blueprints.impls.orient.OrientElement.save(OrientElement.java:328)
at com.tinkerpop.blueprints.impls.orient.OrientElement.save(OrientElement.java:308)
at com.tinkerpop.blueprints.impls.orient.OrientElement.setProperty(OrientElement.java:203)
at com.tinkerpop.blueprints.impls.orient.OrientEdge.setProperty(OrientEdge.java:340)
at com.tinkerpop.frames.annotations.PropertyAnnotationHandler.processElement(PropertyAnnotationHandler.java:34)
at com.tinkerpop.frames.annotations.PropertyAnnotationHandler.processElement(PropertyAnnotationHandler.java:11)
at com.tinkerpop.frames.FramedElement.invoke(FramedElement.java:89)
at com.sun.proxy.$Proxy70.setType(Unknown Source:-1)

@andrii0lomakin
Copy link
Member

Guys I close this issue as duplication of #5821 . Let's discuss it in single place.

@andrii0lomakin
Copy link
Member

@ygoraly as I mentioned about that is only single thread we need thread dump because ODB has several background threads. Also I mentioned above too :-) could you put such long stack traces as a gists to make conversation more readable. Any way I will really appreciate if you will send us thread dump, server logs and heap dump, the more data we will have the faster we fix given issue.

@ygyg70
Copy link

ygyg70 commented Mar 30, 2016

Thread is stuck on OReadersWriterSpinLock.acquireWriteLock, line 131:
while (!distributedCounter.isEmpty())
;
distributedCounter.get() is 1.
Server is embedded, not running in distributed mode.
Can't share full thread dump and/or heap dump publicly

@robfrank robfrank modified the milestones: 2.1.x (next hotfix), 2.1.15 Apr 4, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

6 participants