From 04effc50586854b6aec51df89bf7c5cfb69831f9 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Thu, 29 Mar 2012 19:17:30 +0200 Subject: [PATCH] bug: Fix deadlock when deleting the same object multiple times (cherry picked from commit 2ca77fb8450a4a191ec9c0776d716a10cf7f9bf9) --- src/image/ImageManagerActions.cc | 1 + src/pool/PoolSQL.cc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/image/ImageManagerActions.cc b/src/image/ImageManagerActions.cc index ad1b8e2627..58f41d3d33 100644 --- a/src/image/ImageManagerActions.cc +++ b/src/image/ImageManagerActions.cc @@ -296,6 +296,7 @@ int ImageManager::delete_image(int iid, const string& ds_data) if ( imd == 0 ) { + img->unlock(); return -1; } diff --git a/src/pool/PoolSQL.cc b/src/pool/PoolSQL.cc index 0d167e2d4f..12835f7cc6 100644 --- a/src/pool/PoolSQL.cc +++ b/src/pool/PoolSQL.cc @@ -187,6 +187,7 @@ PoolObjectSQL * PoolSQL::get( if ( objectsql->isValid() == false ) { + objectsql->unlock(); objectsql = 0; } } @@ -276,7 +277,6 @@ PoolObjectSQL * PoolSQL::get(const string& name, int ouid, bool olock) if ( objectsql->isValid() == false ) { objectsql->unlock(); - objectsql = 0; } }