-
Notifications
You must be signed in to change notification settings - Fork 6.9k
Description
Bug Report
For English only, other languages will not accept.
Before report a bug, make sure you have:
org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager#createConnections(java.lang.String, java.lang.String, javax.sql.DataSource, int, org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode) leaks connection if replay throws exception.
Thread stack:
java.sql.SQLNonTransientConnectionException: (conn=2848) Socket error
at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:300)
at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:366)
at org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:938)
at org.mariadb.jdbc.client.impl.StandardClient.readResults(StandardClient.java:854)
at org.mariadb.jdbc.client.impl.StandardClient.readResponse(StandardClient.java:773)
at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:697)
at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:553)
at org.mariadb.jdbc.Connection.setAutoCommit(Connection.java:204)
at com.alibaba.druid.filter.FilterChainImpl.connection_setAutoCommit(FilterChainImpl.java:699)
at com.alibaba.druid.filter.FilterAdapter.connection_setAutoCommit(FilterAdapter.java:964)
at com.alibaba.druid.filter.FilterChainImpl.connection_setAutoCommit(FilterChainImpl.java:694)
at com.alibaba.druid.filter.logging.LogFilter.connection_setAutoCommit(LogFilter.java:467)
at com.alibaba.druid.filter.FilterChainImpl.connection_setAutoCommit(FilterChainImpl.java:694)
at com.alibaba.druid.filter.FilterAdapter.connection_setAutoCommit(FilterAdapter.java:964)
at com.alibaba.druid.filter.FilterChainImpl.connection_setAutoCommit(FilterChainImpl.java:694)
at com.alibaba.druid.filter.FilterAdapter.connection_setAutoCommit(FilterAdapter.java:964)
at com.alibaba.druid.filter.FilterChainImpl.connection_setAutoCommit(FilterChainImpl.java:694)
at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.setAutoCommit(ConnectionProxyImpl.java:416)
at com.alibaba.druid.pool.DruidPooledConnection.setAutoCommit(DruidPooledConnection.java:732)
at org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager.lambda$setAutoCommit$0(DriverDatabaseConnectionManager.java:165)
at org.apache.shardingsphere.driver.jdbc.adapter.invocation.MethodInvocationRecorder.replay(MethodInvocationRecorder.java:53)
at org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager.createConnections(DriverDatabaseConnectionManager.java:386)
at org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager.getConnections(DriverDatabaseConnectionManager.java:359)
at org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager.getRandomConnection(DriverDatabaseConnectionManager.java:335)
at xxx.ShardingDBConfiguration$SmartConnection.prepareStatement(ShardingDBConfiguration.java:50)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:88)
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:90)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:60)
at org.apache.ibatis.executor.BatchExecutor.doUpdate(BatchExecutor.java:71)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at jdk.internal.reflect.GeneratedMethodAccessor168.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
at xxx.MysqlInterceptor.intercept(MysqlInterceptor.java:58)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59)
at jdk.proxy2/jdk.proxy2.$Proxy273.update(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor168.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at jdk.proxy2/jdk.proxy2.$Proxy273.update(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
... 44 more
Caused by: java.net.SocketException: Connection reset
at java.base/sun.nio.ch.NioSocketImpl.implRead(Unknown Source)
at java.base/sun.nio.ch.NioSocketImpl.read(Unknown Source)
at java.base/sun.nio.ch.NioSocketImpl$1.read(Unknown Source)
at java.base/java.net.Socket$SocketInputStream.read(Unknown Source)
at java.base/java.io.BufferedInputStream.fill(Unknown Source)
at java.base/java.io.BufferedInputStream.read1(Unknown Source)
at java.base/java.io.BufferedInputStream.read(Unknown Source)
at org.mariadb.jdbc.client.socket.impl.PacketReader.readReusablePacket(PacketReader.java:62)
at org.mariadb.jdbc.message.ClientMessage.readPacket(ClientMessage.java:153)
at org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:915)
... 85 more
Which version of ShardingSphere did you use?
5.5.0
Which project did you use? ShardingSphere-JDBC or ShardingSphere-Proxy?
ShardingSphere-JDBC
Expected behavior
Connection is closed even some exception throwed during replay.
Actual behavior
Connection is never closed when some exception throwed during replay.
Reason analyze (If you can)
org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager#createConnections(java.lang.String, java.lang.String, javax.sql.DataSource, int, org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode) didn't handle exception while calling replay method.