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)

Reply via email to