You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Igor Berman (Jira)" <ji...@apache.org> on 2023/01/08 18:59:00 UTC
[jira] [Created] (CALCITE-5467) Runtime exception after failure of opening connection is not converted into SQLException
Igor Berman created CALCITE-5467:
------------------------------------
Summary: Runtime exception after failure of opening connection is not converted into SQLException
Key: CALCITE-5467
URL: https://issues.apache.org/jira/browse/CALCITE-5467
Project: Calcite
Issue Type: Bug
Components: avatica
Reporter: Igor Berman
If for any reason connection creation is failing the Runtime exception is propagated as is, but should be wrapped with SQLException as was partially done for some usecases in https://github.com/apache/calcite-avatica/pull/33/files
the effect of current behavior might cause "connection leaks", if avatica connections are wrapped with some connection pools(e.g. HikariCP). Since most of the pool solution handle SQLException but might not handle RuntimeExceptions.
here is stacktrace as an example of such case:
{code}
Caused by: java.lang.RuntimeException: Failed to execute HTTP Request, got HTTP/504
at org.apache.calcite.avatica.remote.AvaticaCommonsHttpClientImpl.send(AvaticaCommonsHttpClientImpl.java:229) ~[avatica-core-1.17.0.jar:1.17.0]
at org.apache.calcite.avatica.remote.RemoteProtobufService._apply(RemoteProtobufService.java:44) ~[avatica-core-1.17.0.jar:1.17.0]
at org.apache.calcite.avatica.remote.ProtobufService.apply(ProtobufService.java:89) ~[avatica-core-1.17.0.jar:1.17.0]
at org.apache.calcite.avatica.remote.RemoteMeta$5.call(RemoteMeta.java:149) ~[avatica-core-1.17.0.jar:1.17.0]
at org.apache.calcite.avatica.remote.RemoteMeta$5.call(RemoteMeta.java:135) ~[avatica-core-1.17.0.jar:1.17.0]
at org.apache.calcite.avatica.AvaticaConnection.invokeWithRetries(AvaticaConnection.java:793) ~[avatica-core-1.17.0.jar:1.17.0]
at org.apache.calcite.avatica.remote.RemoteMeta.connectionSync(RemoteMeta.java:134) ~[avatica-core-1.17.0.jar:1.17.0]
at org.apache.calcite.avatica.AvaticaConnection.sync(AvaticaConnection.java:726) ~[avatica-core-1.17.0.jar:1.17.0]
at org.apache.calcite.avatica.AvaticaConnection.getAutoCommit(AvaticaConnection.java:195) ~[avatica-core-1.17.0.jar:1.17.0]
at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_302]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302]
at com.github.gquintana.metrics.proxy.MethodInvocation.proceed(MethodInvocation.java:75) ~[metrics-sql-3.1.0-taboola.jar:?]
at com.github.gquintana.metrics.sql.ConnectionProxyHandler.invoke(ConnectionProxyHandler.java:59) ~[metrics-sql-3.1.0-taboola.jar:?]
at com.github.gquintana.metrics.proxy.ProxyHandler.invoke(ProxyHandler.java:56) ~[metrics-sql-3.1.0-taboola.jar:?]
at com.sun.proxy.$Proxy70.getAutoCommit(Unknown Source) ~[?:?]
at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) ~[HikariCP-3.3.1.jar:?]
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)