diff --git a/src/main/java/com/actiontech/dble/backend/datasource/PhysicalDbInstance.java b/src/main/java/com/actiontech/dble/backend/datasource/PhysicalDbInstance.java index 126a6826f1..0d6c08e3e2 100644 --- a/src/main/java/com/actiontech/dble/backend/datasource/PhysicalDbInstance.java +++ b/src/main/java/com/actiontech/dble/backend/datasource/PhysicalDbInstance.java @@ -127,33 +127,35 @@ public void getConnection(final String schema, final ResponseHandler handler, throw new IOException("primary dbInstance switched"); } - BackendConnection con = (BackendConnection) connectionPool.borrowDirectly(schema); - if (con != null) { - if (!StringUtil.equals(con.getSchema(), schema)) { - // need do sharding syn in before sql send - con.setSchema(schema); + if (!config.getPoolConfig().getTestOnBorrow()) { + BackendConnection con = (BackendConnection) connectionPool.borrowDirectly(schema); + if (con != null) { + if (!StringUtil.equals(con.getSchema(), schema)) { + // need do sharding syn in before sql send + con.setSchema(schema); + } + TraceManager.crossThread(con.getBackendService(), "backend-response-service", service); + con.getBackendService().setAttachment(attachment); + handler.connectionAcquired(con); + return; } - TraceManager.crossThread(con.getBackendService(), "backend-response-service", service); - con.getBackendService().setAttachment(attachment); - handler.connectionAcquired(con); - return; } DbleServer.getInstance().getComplexQueryExecutor().execute(() -> { - BackendConnection con1; + BackendConnection conn; try { - con1 = getConnection(schema, config.getPoolConfig().getConnectionTimeout()); + conn = getConnection(schema, config.getPoolConfig().getConnectionTimeout()); } catch (IOException e) { handler.connectionError(e, attachment); return; } - if (!StringUtil.equals(con1.getSchema(), schema)) { + if (!StringUtil.equals(conn.getSchema(), schema)) { // need do sharding syn in before sql send - con1.setSchema(schema); + conn.setSchema(schema); } - TraceManager.crossThread(con1.getBackendService(), "backend-response-service", service); - con1.getBackendService().setAttachment(attachment); - handler.connectionAcquired(con1); + TraceManager.crossThread(conn.getBackendService(), "backend-response-service", service); + conn.getBackendService().setAttachment(attachment); + handler.connectionAcquired(conn); }); } finally { TraceManager.finishSpan(traceObject); diff --git a/src/main/java/com/actiontech/dble/backend/pool/ConnectionPool.java b/src/main/java/com/actiontech/dble/backend/pool/ConnectionPool.java index 65a914bb41..ccbe5ce05e 100644 --- a/src/main/java/com/actiontech/dble/backend/pool/ConnectionPool.java +++ b/src/main/java/com/actiontech/dble/backend/pool/ConnectionPool.java @@ -148,7 +148,6 @@ private void newPooledEntry(final String schema, final int waiting) { } } - public void release(final PooledConnection conn) { if (poolConfig.getTestOnReturn()) { ConnectionHeartBeatHandler heartBeatHandler = new ConnectionHeartBeatHandler((BackendConnection) conn, false, this);