Dear Calcite Development Team, I am encountering a memory overflow issue when using Calcite. After investigation, I found that a thread continuously holds on to an instance of org.apache.calcite.plan.volcano.RuleQueue without releasing it.
Using jstack, I observed that the program repeatedly executes the following stack trace: at org.apache.calcite.plan.volcano.VolcanoPlanner.getSubset(VolcanoPlanner.java:975) at org.apache.calcite.plan.volcano.RelSubset.getParentSubsets(RelSubset.java:220) at org.apache.calcite.plan.volcano.RelSubset.getParentSubsets(RelSubset.java:218) This behavior seems to suggest a possible deadlock. Could this be related to my use of a Calcite connection in a multi-threaded environment? I would appreciate any insights or guidance you could provide regarding this issue. Thank you for your support. Best regards, Jack han "qtp1700973603-73" #73 prio=5 os_prio=0 tid=0x00007f7676179000 nid=0x36de3 runnable [0x00007f76035e8000] java.lang.Thread.State: RUNNABLE at org.apache.calcite.plan.volcano.RelSubset.getParentSubsets(RelSubset.java:218) at org.apache.calcite.plan.volcano.RuleQueue.computeImportance(RuleQueue.java:393) at org.apache.calcite.plan.volcano.RuleQueue.recompute(RuleQueue.java:192) at org.apache.calcite.plan.volcano.RuleQueue.recompute(RuleQueue.java:205) at org.apache.calcite.plan.volcano.VolcanoPlanner.registerImpl(VolcanoPlanner.java:1604) at org.apache.calcite.plan.volcano.VolcanoPlanner.register(VolcanoPlanner.java:859) at org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:879) at org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:1755) at org.apache.calcite.plan.volcano.VolcanoRuleCall.transformTo(VolcanoRuleCall.java:135) at org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:234) at org.apache.calcite.rel.rules.UnionMergeRule.onMatch(UnionMergeRule.java:140) at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:212) at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:646) at org.apache.calcite.tools.Programs.lambda$standard$3(Programs.java:298) at org.apache.calcite.tools.Programs$$Lambda$949/39179479.run(Unknown Source) at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:358) at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:188) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:319) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:230) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:772) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:636) at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:606) at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:229) at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:550) - locked <0x00000006e9a2b340> (a org.apache.calcite.jdbc.CalciteJdbc41Factory$CalciteJdbc41Statement) at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:676) at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156) at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227) at com.meituan.waimairc.service.impl.QueryServiceImpl.query(QueryServiceImpl.java:141)