From 1696bb669ea848fba70209f146783103c0534f7e Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Fri, 20 Apr 2012 11:04:49 +0200 Subject: [PATCH] bug #1237: Move access to uses_name_pool to critical section --- src/pool/PoolSQL.cc | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/pool/PoolSQL.cc b/src/pool/PoolSQL.cc index f67c70332a..06d47051d8 100644 --- a/src/pool/PoolSQL.cc +++ b/src/pool/PoolSQL.cc @@ -199,8 +199,6 @@ PoolObjectSQL * PoolSQL::get( } else { - map::iterator name_index; - objectsql = create(); objectsql->oid = oid; @@ -217,10 +215,12 @@ PoolObjectSQL * PoolSQL::get( } if ( uses_name_pool ) - { - string okey = key(objectsql->name,objectsql->uid); + { + map::iterator name_index; + string okey; - name_index = name_pool.find(okey); + okey = key(objectsql->name,objectsql->uid); + name_index = name_pool.find(okey); if ( name_index != name_pool.end() ) { @@ -262,11 +262,6 @@ PoolObjectSQL * PoolSQL::get( PoolObjectSQL * PoolSQL::get(const string& name, int ouid, bool olock) { - if ( uses_name_pool == false ) - { - return 0; - } - map::iterator index; PoolObjectSQL * objectsql; @@ -274,6 +269,12 @@ PoolObjectSQL * PoolSQL::get(const string& name, int ouid, bool olock) lock(); + if ( uses_name_pool == false ) + { + unlock(); + return 0; + } + index = name_pool.find(key(name,ouid)); if ( index != name_pool.end() && index->second->isValid() == true ) @@ -354,15 +355,16 @@ void PoolSQL::update_cache_index(string& old_name, string& new_name, int new_uid) { - if ( uses_name_pool == false ) - { - return; - } - map::iterator index; lock(); + if ( uses_name_pool == false ) + { + unlock(); + return; + } + string old_key = key(old_name, old_uid); string new_key = key(new_name, new_uid);