You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Vlad Skarzhevskyy (Jira)" <ji...@apache.org> on 2021/02/05 16:31:01 UTC
[jira] [Created] (CALCITE-4489) Avatica JdbcMeta statement IDs
Concurrency problem
Vlad Skarzhevskyy created CALCITE-4489:
------------------------------------------
Summary: 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
Attachments: stak-trace.txt
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)