You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2016/11/03 09:39:40 UTC
commons-dbcp git commit: Fix DBCP-457
Repository: commons-dbcp
Updated Branches:
refs/heads/master 6641cc08d -> 8408716a7
Fix DBCP-457
When using a BasicDataSource, pass changes related to the handling of
abandoned connections to the underlying pool so that the pool
configuration may be updated dynamically.
Project: http://git-wip-us.apache.org/repos/asf/commons-dbcp/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-dbcp/commit/8408716a
Tree: http://git-wip-us.apache.org/repos/asf/commons-dbcp/tree/8408716a
Diff: http://git-wip-us.apache.org/repos/asf/commons-dbcp/diff/8408716a
Branch: refs/heads/master
Commit: 8408716a7f2909eab4618ac2ab6e9a1565a993d0
Parents: 6641cc0
Author: Mark Thomas <ma...@apache.org>
Authored: Thu Nov 3 09:38:09 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Thu Nov 3 09:38:09 2016 +0000
----------------------------------------------------------------------
src/changes/changes.xml | 5 ++++
.../apache/commons/dbcp2/BasicDataSource.java | 24 ++++++++++++++++++++
.../commons/dbcp2/TestBasicDataSource.java | 21 +++++++++++++++++
3 files changed, 50 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/8408716a/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index c1b5d68..0fc7a0e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -122,6 +122,11 @@ The <action> type attribute can be add,update,fix,remove.
Make it simpler to extend BasicDataSource to allow sub-classes to
provide custom GenericObjectPool implementations.
</action>
+ <action dev="markt" type="fix" issue="DBCP-457">
+ When using a BasicDataSource, pass changes related to the handling of
+ abandoned connections to the underlying pool so that the pool
+ configuration may be updated dynamically.
+ </action>
</release>
<release version="2.1.1" date="6 Aug 2015" description=
"This is a patch release, including bug fixes only.">
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/8408716a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
index 250dfd9..12314c8 100644
--- a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
+++ b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
@@ -1667,6 +1667,10 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
}
abandonedConfig.setRemoveAbandonedOnMaintenance(
removeAbandonedOnMaintenance);
+ GenericObjectPool<?> gop = this.connectionPool;
+ if (gop != null) {
+ gop.setAbandonedConfig(abandonedConfig);
+ }
}
/**
@@ -1699,6 +1703,10 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
abandonedConfig = new AbandonedConfig();
}
abandonedConfig.setRemoveAbandonedOnBorrow(removeAbandonedOnBorrow);
+ GenericObjectPool<?> gop = this.connectionPool;
+ if (gop != null) {
+ gop.setAbandonedConfig(abandonedConfig);
+ }
}
/**
@@ -1744,6 +1752,10 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
abandonedConfig = new AbandonedConfig();
}
abandonedConfig.setRemoveAbandonedTimeout(removeAbandonedTimeout);
+ GenericObjectPool<?> gop = this.connectionPool;
+ if (gop != null) {
+ gop.setAbandonedConfig(abandonedConfig);
+ }
}
/**
@@ -1772,6 +1784,10 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
abandonedConfig = new AbandonedConfig();
}
abandonedConfig.setLogAbandoned(logAbandoned);
+ GenericObjectPool<?> gop = this.connectionPool;
+ if (gop != null) {
+ gop.setAbandonedConfig(abandonedConfig);
+ }
}
/**
@@ -1796,6 +1812,10 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
abandonedConfig = new AbandonedConfig();
}
abandonedConfig.setLogWriter(logWriter);
+ GenericObjectPool<?> gop = this.connectionPool;
+ if (gop != null) {
+ gop.setAbandonedConfig(abandonedConfig);
+ }
}
/**
@@ -1829,6 +1849,10 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
abandonedConfig = new AbandonedConfig();
}
abandonedConfig.setUseUsageTracking(usageTracking);
+ GenericObjectPool<?> gop = this.connectionPool;
+ if (gop != null) {
+ gop.setAbandonedConfig(abandonedConfig);
+ }
}
// --------------------------------------------------------- Public Methods
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/8408716a/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java b/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java
index 3f1667d..db99049 100644
--- a/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java
+++ b/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java
@@ -35,6 +35,7 @@ import javax.sql.DataSource;
import org.apache.commons.logging.LogFactory;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -795,6 +796,26 @@ public class TestBasicDataSource extends TestConnectionPool {
assertTrue(pcf.getDisconnectionSqlCodes().contains("XXX"));
assertEquals(1, pcf.getDisconnectionSqlCodes().size());
}
+
+ /**
+ * JIRA: DBCP-457
+ * Verify that changes made to abandoned config are passed to the underlying
+ * pool.
+ */
+ @Test
+ public void testMutateAbandonedConfig() throws Exception {
+ final Properties properties = new Properties();
+ properties.put("initialSize", "1");
+ properties.put("driverClassName", "org.apache.commons.dbcp2.TesterDriver");
+ properties.put("url", "jdbc:apache:commons:testdriver");
+ properties.put("username", "foo");
+ properties.put("password", "bar");
+ final BasicDataSource ds = BasicDataSourceFactory.createDataSource(properties);
+ boolean original = ds.getConnectionPool().getLogAbandoned();
+ ds.setLogAbandoned(!original);
+ Assert.assertNotEquals(Boolean.valueOf(original),
+ Boolean.valueOf(ds.getConnectionPool().getLogAbandoned()));
+ }
}
/**