BUG#: 8756
authorvenkat.puvvada <venkat.puvvada>
Fri, 9 Apr 2010 07:29:36 +0000 (07:29 +0000)
committervenkat.puvvada <venkat.puvvada>
Fri, 9 Apr 2010 07:29:36 +0000 (07:29 +0000)
TITLE: indication providers are reinitialized after provder module disable
DESCRIPTION: Don't load the provider again after disable

src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp
src/Pegasus/ProviderManager2/CMPI/CMPIProvider.h
src/Pegasus/ProviderManager2/CMPI/CMPIProviderManager.cpp

index b1cbd62090ae5ad58b724b159d6ce6abd698f005..7669cf00b1c807d248add7d73b691acf561471ae 100644 (file)
@@ -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;
index f49bc7b10365e08c158b4b656e9821d33c7ab52c..287e771f1a6a3889ec1aed05dc81e79a6a7e43eb 100644 (file)
@@ -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.
 
index ac6d6e8a415747c5e0d3f0269b6285fca4fe915f..e4997263e721c88fb961b3abdf805992e91f12b2 100644 (file)
@@ -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);
             }
         }
     }