[ https://issues.apache.org/jira/browse/CALCITE-4489?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17280041#comment-17280041 ]
Vlad Skarzhevskyy commented on CALCITE-4489: -------------------------------------------- Hi [~vladimirsitnikov] the calss JdbcDatasourceMeta is our calss extends CalciteMetaImpl we added to cutomize metadata exposed to Remove JDBC cleint. in this class I had also a debug function createStatement This was is when I creates the stack tace as in orignal atthement ..... If I remove it the cleaner stack trace [^stak-trace-v2.txt] ^---^ ^Your prvious comments make me think and I realized that we created CalciteMetaImpl with one connection to "jdbc:calcite:"...^ and this is the connection we probably sharing between different threads on server. We will try to compile the test server project on Monday to share our full Calcite Datasource on server side. > Avatica JdbcMeta statement IDs Concurrency problem > -------------------------------------------------- > > Key: CALCITE-4489 > URL: https://issues.apache.org/jira/browse/CALCITE-4489 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.26.0 > Reporter: Vlad Skarzhevskyy > Priority: Major > Attachments: LoadAllData.java, stak-trace-v2.txt, stak-trace.txt > > Time Spent: 10m > Remaining Estimate: 0h > > We encountered the JdbcMeta statement IDs concurrency problems that lead to > errors pulling the data from avatica JDBC remote http server under heavy load. > The error stack trace for the error is attached. > > Our setup: Avatica JDBC remote http server handled by Calcite on the > server side. > For the record we had not been able to reproduce the same problems with > Avatica, only remote proxy connected directly to DB. > > We believe that the cause of the problem is unsynchronized increment of > connection.statementCount > see MetaImpl.createStatement > [https://github.com/apache/calcite-avatica/blob/master/core/src/main/java/org/apache/calcite/avatica/MetaImpl.java#L213] > {code:java} > public StatementHandle createStatement(ConnectionHandle ch) { > return new StatementHandle(ch.id, connection.statementCount++, null); > }{code} > Suggested fix is to use AtomicInteger for statementCount. > Our stress tests show that the problem is resolved by the fix.. > > -- This message was sent by Atlassian Jira (v8.3.4#803005)