Search code examples
orientdborientdb3.0

Orient DB OStorageRemotePushThread.subscribe threads locked


Is it normal for OrientDB 3.2.27 to have lots of OStorageRemotePushThread.subscribe threads locked for long period of time? If not, what could be the reason? We are using Kotlin coroutines and I believe thread local is being saved and restored between coroutine suspends.

|  +---Thread-402 Frozen for at least 10s <Ignore a false positive>                                                                                              |
|  | |                                                                                                                                                           |
|  | +---jdk.internal.misc.Unsafe.park(boolean, long) (native)                                                                                                   |
|  | |                                                                                                                                                           |
|  | +---java.util.concurrent.locks.LockSupport.parkNanos(Object, long)                                                                                          |
|  | |                                                                                                                                                           |
|  | +---java.util.concurrent.SynchronousQueue$TransferStack.transfer(Object, boolean, long)                                                                     |
|  | |                                                                                                                                                           |
|  | +---java.util.concurrent.SynchronousQueue.poll(long, TimeUnit)                                                                                              |
|  | |                                                                                                                                                           |
|  | +---com.orientechnologies.orient.client.remote.OStorageRemotePushThread.subscribe(OBinaryRequest, OStorageRemoteSession) OStorageRemotePushThread.java:124  |
|  | |                                                                                                                                                           |
|  | +---com.orientechnologies.orient.client.remote.OStorageRemote.subscribeStorageConfiguration(OStorageRemoteSession) OStorageRemote.java:1839                 |
|  | |                                                                                                                                                           |
|  | +---com.orientechnologies.orient.client.remote.OStorageRemote.onPushReconnect(String) OStorageRemote.java:2331                                              |
|  | |                                                                                                                                                           |
|  | +---com.orientechnologies.orient.client.remote.OStorageRemotePushThread.run() OStorageRemotePushThread.java:99 

Solution

  • Is normal to have an instance of OStorageRemotePushThread for each database you open in the client in one OrientDB context.

    So the number should match how many databases you have, expecting that you have only one OrientDB context in the application.

    Regars