diff --git a/core/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/core/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index 0dfafc298a..0f34da3d6c 100644 --- a/core/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/core/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -2108,7 +2108,7 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements to.maxPoolPreparedStatementPerConnectionSize = this.maxPoolPreparedStatementPerConnectionSize; to.logWriter = this.logWriter; if (this.filters != null) { - to.filters = new ArrayList(this.filters); + to.filters = new ArrayList<>(this.filters); } to.exceptionSorter = this.exceptionSorter; to.driver = this.driver; @@ -2137,6 +2137,10 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements to.asyncCloseConnectionEnable = this.asyncCloseConnectionEnable; to.createScheduler = this.createScheduler; to.destroyScheduler = this.destroyScheduler; + to.socketTimeout = this.socketTimeout; + to.connectTimeout = this.connectTimeout; + to.socketTimeoutSr = this.socketTimeoutSr; + to.connectTimeoutStr = this.connectTimeoutStr; } public abstract void discardConnection(Connection realConnection); diff --git a/core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index cc320c42e2..92a53ea2fd 100644 --- a/core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -3496,7 +3496,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat return dataSourceStat; } - public Object clone() throws CloneNotSupportedException { + public Object clone() { return cloneDruidDataSource(); } diff --git a/core/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest10.java b/core/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest10.java new file mode 100644 index 0000000000..5fe1a30753 --- /dev/null +++ b/core/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest10.java @@ -0,0 +1,19 @@ +package com.alibaba.druid.bvt.pool; + +import com.alibaba.druid.pool.DruidDataSource; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class DruidDataSourceTest10 { + @Test + public void test() throws Exception { + DruidDataSource ds = new DruidDataSource(); + ds.setSocketTimeout(10); + ds.setConnectTimeout(20); + + DruidDataSource ds1 = (DruidDataSource) ds.clone(); + assertEquals(ds.getConnectTimeout(), ds1.getConnectTimeout()); + assertEquals(ds.getSocketTimeout(), ds1.getSocketTimeout()); + } +}