Date: Thursday, March 1, 2007 @ 15:48:09
  Author: marc
    Path: /cvsroot/carob/carob/src

Modified: ControllerPool.cpp (1.24 -> 1.25)

Simplification in CAROB-132 / tryTocleanUpPools()


--------------------+
 ControllerPool.cpp |   31 +++++++++++++++++--------------
 1 files changed, 17 insertions(+), 14 deletions(-)


Index: carob/src/ControllerPool.cpp
diff -u carob/src/ControllerPool.cpp:1.24 carob/src/ControllerPool.cpp:1.25
--- carob/src/ControllerPool.cpp:1.24   Thu Mar  1 12:36:03 2007
+++ carob/src/ControllerPool.cpp        Thu Mar  1 15:48:09 2007
@@ -328,24 +328,27 @@
   for (std::map<PoolIndex, AbstractControllerPool*, ltPoolIndex>::iterator iter
       = pool_map.begin(); iter != pool_map.end();)
   {
-    if (iter->second->getRefCount() == 0)
+    std::map<PoolIndex, AbstractControllerPool*, ltPoolIndex>::iterator 
toRemove = pool_map.end();
+
+    // has this controller pool been freed since a long time?
+    if (iter->second->getRefCount() == 0
+       && (currentTimeMillis() - POOL_TIMEOUT_IN_MS) > 
iter->second->getLastTimeZeroRef())
     {
-      if ((currentTimeMillis() - POOL_TIMEOUT_IN_MS) > 
iter->second->getLastTimeZeroRef())
-      {
-        std::map<PoolIndex, AbstractControllerPool*, ltPoolIndex>::iterator 
toRemove = iter;
+        toRemove = iter;
         if (isInfoEnabled())
-          logInfo(fctName, L"Pool \"" + static_cast<wstring>(*toRemove->second)
-              + L"\" freed " + 
toWString(static_cast<int64_t>(currentTimeMillis()-toRemove->second->getLastTimeZeroRef()))
+          logInfo(fctName, L"Pool \"" + static_cast<wstring>(*iter->second)
+              + L"\" freed " + 
toWString(static_cast<int64_t>(currentTimeMillis() - 
iter->second->getLastTimeZeroRef()))
               + L"ms ago - Deleting it");
-        iter++;
-        delete toRemove->second;
-        pool_map.erase(toRemove);
-      }
-      else
-        iter++;
     }
-    else
-      iter++;
+
+    // must increment BEFORE removal
+    iter++;
+
+    if (toRemove != pool_map.end())
+    {
+      delete toRemove->second;
+      pool_map.erase(toRemove);
+    }
   }
 }
 

_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits

Reply via email to