fix : DruidDataSource clone miss socketTimeout, for issue #4976

This commit is contained in:
shaojin.wensj
2022-11-04 09:15:32 +08:00
parent 90c8b7a1f7
commit f4988ad041
3 changed files with 25 additions and 2 deletions
@@ -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<Filter>(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);
@@ -3496,7 +3496,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
return dataSourceStat;
}
public Object clone() throws CloneNotSupportedException {
public Object clone() {
return cloneDruidDataSource();
}
@@ -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());
}
}