Repository: commons-dbcp Updated Branches: refs/heads/master e45d9f8ea -> c96a7ad5a
[DBCP-482] Avoid javax.management.InstanceNotFoundException on shutdown when a bean is not registered. Project: http://git-wip-us.apache.org/repos/asf/commons-dbcp/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-dbcp/commit/c96a7ad5 Tree: http://git-wip-us.apache.org/repos/asf/commons-dbcp/tree/c96a7ad5 Diff: http://git-wip-us.apache.org/repos/asf/commons-dbcp/diff/c96a7ad5 Branch: refs/heads/master Commit: c96a7ad5ab1d8c3ee722e5895f57f54e02e39ec8 Parents: e45d9f8 Author: Gary Gregory <[email protected]> Authored: Tue Jan 16 13:23:11 2018 -0700 Committer: Gary Gregory <[email protected]> Committed: Tue Jan 16 13:23:11 2018 -0700 ---------------------------------------------------------------------- src/changes/changes.xml | 5 +++++ .../org/apache/commons/dbcp2/BasicDataSource.java | 13 +++++++------ .../apache/commons/dbcp2/TestBasicDataSource.java | 16 ++++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/c96a7ad5/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index e108251..15234ac 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -60,6 +60,11 @@ The <action> type attribute can be add,update,fix,remove. --> <body> + <release version="2.2.1" date="2018-MM-DD" description="This is a bug fix release."> + <action dev="ggregory" type="fix" issue="DBCP-482" due-to="Dennis Lloyd, Gary Gregory"> + Avoid javax.management.InstanceNotFoundException on shutdown when a bean is not registered. + </action> + </release> <release version="2.2.0" date="2017-12-DD" description="This is a minor release, including bug fixes and enhancements."> <action dev="ggregory" type="fix" issue="DBCP-481" due-to="Gary Gregory"> Update Apache Commons Pool from 2.4.2 to 2.5.0. http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/c96a7ad5/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 79db3b6..d533fd7 100644 --- a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java +++ b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java @@ -1937,13 +1937,14 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean public synchronized void close() throws SQLException { if (registeredJmxName != null) { final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); - try { - mbs.unregisterMBean(registeredJmxName); - } catch (final JMException e) { - log.warn("Failed to unregister the JMX name: " + registeredJmxName, e); - } finally { - registeredJmxName = null; + if (mbs.isRegistered(registeredJmxName)) { + try { + mbs.unregisterMBean(registeredJmxName); + } catch (final JMException e) { + log.warn("Failed to unregister the JMX name: " + registeredJmxName, e); + } } + registeredJmxName = null; } closed = true; final GenericObjectPool<?> oldpool = connectionPool; http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/c96a7ad5/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 1631a7b..570dd9d 100644 --- a/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java +++ b/src/test/java/org/apache/commons/dbcp2/TestBasicDataSource.java @@ -34,6 +34,7 @@ import javax.management.ObjectName; import javax.sql.DataSource; import org.apache.commons.logging.LogFactory; +import org.hamcrest.CoreMatchers; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -777,6 +778,21 @@ public class TestBasicDataSource extends TestConnectionPool { } /** + * JIRA: DBCP-482 + * Verify warning not logged if JMX MBean unregistered before close() called. + */ + @Test + public void testInstanceNotFoundExceptionLogSuppressed() throws Exception { + final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + try (Connection c = ds.getConnection()) {} + mbs.unregisterMBean(new ObjectName(ds.getJmxName())); + StackMessageLog.clear(); + ds.close(); + assertThat(StackMessageLog.popMessage(), CoreMatchers.not(CoreMatchers.containsString("InstanceNotFoundException"))); + assertNull(ds.getRegisteredJmxName()); + } + + /** * JIRA: DBCP-437 * Verify that BasicDataSource sets disconnect codes properties. * Functionality is verified in pcf tests.
