From ebff8270130aa4a293c8fce83a65bb239b143b1e Mon Sep 17 00:00:00 2001 From: Denis Flaven Date: Tue, 10 Dec 2013 11:07:24 +0000 Subject: [PATCH] #805 (again): proper fix to avoid blocking when creating a ticket with DBInsert() (instead of DBInsertNoReload !!) SVN:trunk[3032] --- .../2.x/itop-tickets/datamodel.itop-tickets.xml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml index 1da8cfc20..124874811 100755 --- a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml +++ b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml @@ -169,10 +169,19 @@ Overload-DBObject Lock(); + // Beware !!! + // Compensate the fact that CMDBObject::DBInsertTracked_Internal does NOT call the derived version of DBInsertNoReload + // when performing an INsert with "no reload" but actually calls it (followed by Reload) when doing an Insert with reload !! + if ($bDoNotReload) + { + $oMutex = new iTopMutex('ticket_insert'); + $oMutex->Lock(); + } $ret = parent::DBInsertTracked_Internal($bDoNotReload); - $oMutex->Unlock(); + if ($bDoNotReload) + { + $oMutex->Unlock(); + } return $ret; } ]]>