From: Tomas Olvecky Date: Thu, 20 Mar 2014 15:47:45 +0000 (+0100) Subject: Fix small resource leak in config-manager. X-Git-Tag: autorelease-tag-v20140601202136_82eb3f9~296^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=46be013a4bbe36f36bf661b7f45caad66bc56bae;hp=36173c816a96cb06f2493709a3f13b95f9ad9806;p=controller.git Fix small resource leak in config-manager. When transaction is aborted, its ObjectName was not unregistered from platform mbean server. Change-Id: Ia9b70ca68622fc187ed3db734d9344bd0d7b4ce9 Signed-off-by: Tomas Olvecky --- diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigRegistryImpl.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigRegistryImpl.java index dd510a1ed7..fb0718a721 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigRegistryImpl.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigRegistryImpl.java @@ -161,6 +161,8 @@ public class ConfigRegistryImpl implements AutoCloseable, ConfigRegistryImplMXBe Map> allCurrentFactories = Collections.unmodifiableMap( resolver.getAllFactories()); + + // closed by transaction controller ConfigTransactionLookupRegistry txLookupRegistry = new ConfigTransactionLookupRegistry(new TransactionIdentifier( transactionName), factory, allCurrentFactories); ServiceReferenceWritableRegistry writableRegistry = ServiceReferenceRegistryImpl.createSRWritableRegistry( diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionControllerImpl.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionControllerImpl.java index 84f76c9936..6b7251c302 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionControllerImpl.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionControllerImpl.java @@ -407,12 +407,14 @@ class ConfigTransactionControllerImpl implements } private void internalAbort() { + logger.trace("Aborting {}", this); transactionStatus.setAborted(); close(); } public void close() { dependencyResolverManager.close(); + txLookupRegistry.close(); } @Override diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/test/SimpleConfigurationTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/test/SimpleConfigurationTest.java index 28408abed2..9852a45853 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/test/SimpleConfigurationTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/test/SimpleConfigurationTest.java @@ -326,26 +326,18 @@ public class SimpleConfigurationTest extends AbstractConfigTest { } @Test - public void testAbort() throws InstanceAlreadyExistsException, ValidationException { + public void testAbort() throws Exception { ConfigTransactionJMXClient transaction = configRegistryClient .createTransaction(); assertEquals(1, configRegistryClient.getOpenConfigs().size()); transaction.abortConfig(); + assertEquals(0, configRegistryClient.getOpenConfigs().size()); try { - transaction.createModule(TestingFixedThreadPoolModuleFactory.NAME, - fixed1); - fail(); - } catch (IllegalStateException e) { - assertEquals("Configuration was aborted", e.getMessage()); - } - try { - transaction.validateConfig(); + platformMBeanServer.getMBeanInfo(transaction.getObjectName()); fail(); - } catch (IllegalStateException e) { - assertEquals("Configuration was aborted", e.getMessage()); + }catch(InstanceNotFoundException e){ } - assertEquals(0, configRegistryClient.getOpenConfigs().size()); } @Test