Hi All,
I am getting Thread blocked state when executing the getChildrenCount() using the _parent key.
We have a Parent - Child mapping with _parent as parentKey in child. While retrieving the children count using the parentKey we are seeing the Thread blocked issue.
Between the issue happens only when there is a large amount of data being upsert with miltiple threads.
ElasticSearch 5.5-
Below is the sample code causing the blockage - In below code we are trying to get the no of children using parentKey
#####################################################################
SearchResponse response = new SearchRequestBuilder(
esClient.getClient(), SearchAction.INSTANCE)
.setIndices(esClient.getIndex()).setTypes(esClient.getAppType())
.setQuery(QueryBuilders.parentId(VCSConstants.APP_TYPE, parentKey))
.setSize(0).get();
#####################################################################
Exception -
"admin-http-pool867" #499694 daemon prio=5 os_prio=0 tid=0x00007f7660017fd0 nid=0x67b2 waiting on condition [0x00007f7416284000]
** java.lang.Thread.State: WAITING (parking)**
** at sun.misc.Unsafe.park(Native Method)**
** - parking to wait for <0x000000070f076ad8> (a org.elasticsearch.common.util.concurrent.BaseFuture$Sync)**
** at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)**
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
at org.elasticsearch.common.util.concurrent.BaseFuture$Sync.get(BaseFuture.java:248)
at org.elasticsearch.common.util.concurrent.BaseFuture.get(BaseFuture.java:91)
at org.elasticsearch.action.support.AdapterActionFuture.actionGet(AdapterActionFuture.java:42)
Please let me know your thoughts on this?