You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/01/16 23:34:59 UTC
commons-dbcp git commit: Redo JMX internals to use a wrapper that
acts as a NOOP is JMX is not available. Dang it,
thought my local build passed. But no. Now OK.
Repository: commons-dbcp
Updated Branches:
refs/heads/master 44d58a53c -> d8e760bd1
Redo JMX internals to use a wrapper that acts as a NOOP is JMX is not
available. Dang it, thought my local build passed. But no. Now OK.
Project: http://git-wip-us.apache.org/repos/asf/commons-dbcp/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-dbcp/commit/d8e760bd
Tree: http://git-wip-us.apache.org/repos/asf/commons-dbcp/tree/d8e760bd
Diff: http://git-wip-us.apache.org/repos/asf/commons-dbcp/diff/d8e760bd
Branch: refs/heads/master
Commit: d8e760bd13b8a5c9ddd2029f2ddec3fbadc280a2
Parents: 44d58a5
Author: Gary Gregory <gg...@apache.org>
Authored: Tue Jan 16 16:34:55 2018 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Tue Jan 16 16:34:55 2018 -0700
----------------------------------------------------------------------
.../apache/commons/dbcp2/BasicDataSource.java | 8 +++----
.../apache/commons/dbcp2/ObjectNameWrapper.java | 12 +++++++----
.../commons/dbcp2/TestBasicDataSource.java | 22 +++++++++++++-------
3 files changed, 26 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/d8e760bd/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 669d0f5..0c96528 100644
--- a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
+++ b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
@@ -2292,7 +2292,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
final ConnectionFactory driverConnectionFactory) throws SQLException {
PoolableConnectionFactory connectionFactory = null;
try {
- connectionFactory = new PoolableConnectionFactory(driverConnectionFactory, registeredJmxObjectName.unwrap());
+ connectionFactory = new PoolableConnectionFactory(driverConnectionFactory, ObjectNameWrapper.unwrap(registeredJmxObjectName));
connectionFactory.setValidationQuery(validationQuery);
connectionFactory.setValidationQueryTimeout(validationQueryTimeout);
connectionFactory.setConnectionInitSql(connectionInitSqls);
@@ -2358,7 +2358,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
return;
}
try {
- ObjectNameWrapper.wrap(requestedName).registerMBean();
+ ObjectNameWrapper.wrap(requestedName).registerMBean(this);
} catch (MalformedObjectNameException e) {
log.warn("The requested JMX name [" + requestedName + "] was not valid and will be ignored.");
}
@@ -2377,7 +2377,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
if (registeredJmxObjectName == null) {
registeredJmxObjectName = ObjectNameWrapper.wrap(objectName);
}
- return registeredJmxObjectName.unwrap();
+ return ObjectNameWrapper.unwrap(registeredJmxObjectName);
}
@Override
@@ -2406,7 +2406,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
}
protected ObjectName getRegisteredJmxName() {
- return registeredJmxObjectName.unwrap();
+ return ObjectNameWrapper.unwrap(registeredJmxObjectName);
}
/**
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/d8e760bd/src/main/java/org/apache/commons/dbcp2/ObjectNameWrapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/ObjectNameWrapper.java b/src/main/java/org/apache/commons/dbcp2/ObjectNameWrapper.java
index b7b1248..01d9a18 100644
--- a/src/main/java/org/apache/commons/dbcp2/ObjectNameWrapper.java
+++ b/src/main/java/org/apache/commons/dbcp2/ObjectNameWrapper.java
@@ -47,6 +47,10 @@ class ObjectNameWrapper {
}
}
+ public static ObjectName unwrap(ObjectNameWrapper wrapper) {
+ return wrapper == null ? null : wrapper.unwrap();
+ }
+
public static ObjectNameWrapper wrap(final ObjectName objectName) {
return new ObjectNameWrapper(objectName);
}
@@ -61,19 +65,19 @@ class ObjectNameWrapper {
this.objectName = objectName;
}
- public void registerMBean() {
- if (MBEAN_SERVER == null) {
+ public void registerMBean(Object object) {
+ if (MBEAN_SERVER == null || objectName == null) {
return;
}
try {
- MBEAN_SERVER.registerMBean(this, objectName);
+ MBEAN_SERVER.registerMBean(object, objectName);
} catch (LinkageError | Exception e) {
log.warn("Failed to complete JMX registration for " + objectName, e);
}
}
public void unregisterMBean() {
- if (MBEAN_SERVER == null) {
+ if (MBEAN_SERVER == null || objectName == null) {
return;
}
if (MBEAN_SERVER.isRegistered(objectName)) {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/d8e760bd/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 570dd9d..6d04495 100644
--- a/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java
+++ b/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java
@@ -682,12 +682,12 @@ public class TestBasicDataSource extends TestConnectionPool {
StackMessageLog.clear();
ds.setMaxConnLifetimeMillis(100);
ds.setLogExpiredConnections(false);
- final Connection conn = ds.getConnection();
- assertEquals(1, ds.getNumActive());
- Thread.sleep(500);
- conn.close();
+ try (final Connection conn = ds.getConnection()) {
+ assertEquals(1, ds.getNumActive());
+ Thread.sleep(500);
+ }
assertEquals(0, ds.getNumIdle());
- assertTrue(StackMessageLog.isEmpty());
+ assertTrue(StackMessageLog.getAll().toString(), StackMessageLog.isEmpty());
} finally {
StackMessageLog.clear();
StackMessageLog.unLock();
@@ -784,11 +784,17 @@ public class TestBasicDataSource extends TestConnectionPool {
@Test
public void testInstanceNotFoundExceptionLogSuppressed() throws Exception {
final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
- try (Connection c = ds.getConnection()) {}
- mbs.unregisterMBean(new ObjectName(ds.getJmxName()));
+ try (Connection c = ds.getConnection()) {
+ // nothing
+ }
+ final ObjectName objectName = new ObjectName(ds.getJmxName());
+ if (mbs.isRegistered(objectName)) {
+ mbs.unregisterMBean(objectName);
+ }
StackMessageLog.clear();
ds.close();
- assertThat(StackMessageLog.popMessage(), CoreMatchers.not(CoreMatchers.containsString("InstanceNotFoundException")));
+ assertThat(StackMessageLog.popMessage(),
+ CoreMatchers.not(CoreMatchers.containsString("InstanceNotFoundException")));
assertNull(ds.getRegisteredJmxName());
}