Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.3.0
-
None
Description
At concurrency levels of 30 or more for certain workloads we have seen queries hang in the planning phase in Calcite. The top of the jstack is shown below:
"29b47a17-6ef3-4b7f-98e7-a7c1a702c32f:foreman" daemon prio=10 tid=0x00007f55484a1800 nid=0x289a runnable [0x00007f54b4369000] java.lang.Thread.State: RUNNABLE at java.util.HashMap.getEntry(HashMap.java:465) at java.util.HashMap.get(HashMap.java:417) at org.apache.calcite.rel.metadata.ReflectiveRelMetadataProvider.apply(ReflectiveRelMetadataProvider.java:251) at org.apache.calcite.rel.metadata.ChainedRelMetadataProvider.apply(ChainedRelMetadataProvider.java:60) at org.apache.calcite.rel.metadata.ChainedRelMetadataProvider.apply(ChainedRelMetadataProvider.java:60)
After some investigations, we found that this issue was actually addressed by CALCITE-874 (ReflectiveRelMetadataProvider is not thread-safe). This JIRA is a placeholder to merge that Calcite fix since Drill is currently not up-to-date with Calcite and there is an immediate need for running queries in a high concurrency environment.