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