From 46be013a4bbe36f36bf661b7f45caad66bc56bae Mon Sep 17 00:00:00 2001 From: Tomas Olvecky Date: Thu, 20 Mar 2014 16:47:45 +0100 Subject: [PATCH] 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 --- .../config/manager/impl/ConfigRegistryImpl.java | 2 ++ .../impl/ConfigTransactionControllerImpl.java | 2 ++ .../threadpool/test/SimpleConfigurationTest.java | 16 ++++------------ 3 files changed, 8 insertions(+), 12 deletions(-) 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 -- 2.36.6