From 69f79ecf282b3fc86fcb8c2fc9c29308f3c00812 Mon Sep 17 00:00:00 2001 From: "venkat.puvvada" Date: Fri, 9 Apr 2010 07:29:36 +0000 Subject: [PATCH] BUG#: 8756 TITLE: indication providers are reinitialized after provder module disable DESCRIPTION: Don't load the provider again after disable --- .../ProviderManager2/CMPI/CMPIProvider.cpp | 8 ++--- .../ProviderManager2/CMPI/CMPIProvider.h | 5 --- .../CMPI/CMPIProviderManager.cpp | 34 ++++--------------- 3 files changed, 8 insertions(+), 39 deletions(-) diff --git a/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp b/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp index b1cbd6209..7669cf00b 100644 --- a/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp +++ b/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp @@ -103,6 +103,8 @@ void CMPIProvider::set( void CMPIProvider::reset() { + + _currentSubscriptions = 0; _module = 0; _cimom_handle = 0; _no_unload = 0; @@ -639,12 +641,6 @@ Boolean CMPIProvider::testSubscriptions () return currentSubscriptions; } -void CMPIProvider::resetSubscriptions () -{ - AutoMutex lock (_currentSubscriptionsMutex); - _currentSubscriptions = 0; -} - void CMPIProvider::setProviderInstance (const CIMInstance & instance) { _providerInstance = instance; diff --git a/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.h b/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.h index f49bc7b10..287e771f1 100644 --- a/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.h +++ b/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.h @@ -291,11 +291,6 @@ public: */ Boolean testSubscriptions (); - /** - Resets the count of current subscriptions for the indication provider. - */ - void resetSubscriptions (); - /** Sets the provider instance for the provider. diff --git a/src/Pegasus/ProviderManager2/CMPI/CMPIProviderManager.cpp b/src/Pegasus/ProviderManager2/CMPI/CMPIProviderManager.cpp index ac6d6e8a4..e4997263e 100644 --- a/src/Pegasus/ProviderManager2/CMPI/CMPIProviderManager.cpp +++ b/src/Pegasus/ProviderManager2/CMPI/CMPIProviderManager.cpp @@ -2480,9 +2480,6 @@ Message * CMPIProviderManager::handleDisableModuleRequest( //Set to false when provider refused to unload due to pending operations. Boolean disableModuleOk = true; - // get provider module name - Boolean disableProviderOnly = request->disableProviderOnly; - // // Unload providers // @@ -2529,32 +2526,13 @@ Message * CMPIProviderManager::handleDisableModuleRequest( // if (_indicationProviders [i]) { - if (physicalName.size () > 0) + // Remove from IndProvRecord table + IndProvRecord *rec = 0; + WriteLock lock(rwSemProvTab); + if (indProvTab.lookup(providerName, rec)) { - try - { - OpProviderHolder ph = - providerManager.getProvider( - physicalName, - providerName, - moduleName); - ph.GetProvider ().resetSubscriptions (); - - // Remove from IndProvRecord table - IndProvRecord *rec = 0; - WriteLock lock(rwSemProvTab); - indProvTab.lookup(ph.GetProvider().getName(), rec); - delete rec; - indProvTab.remove(ph.GetProvider().getName()); - } - catch (const Exception &e) - { - PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1, - "Exception during reset subscriptions on indication " - "provider %s: %s", - (const char*)providerName.getCString(), - (const char*)e.getMessage().getCString())); - } + delete rec; + indProvTab.remove(providerName); } } } -- 2.34.1