Skip to content
Snippets Groups Projects
Commit ba95e963 authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

Merge branch 'remove.StoreGate-20201215' into 'master'

StoreGate: Fix potential deadlock in removeProxy.

See merge request atlas/athena!39216
parents aee47d94 2654d383
6 merge requests!58791DataQualityConfigurations: Modify L1Calo config for web display,!46784MuonCondInterface: Enable thread-safety checking.,!46776Updated LArMonitoring config file for WD to match new files produced using MT,!45405updated ART test cron job,!42417Draft: DIRE and VINCIA Base Fragments for Pythia 8.3,!39216StoreGate: Fix potential deadlock in removeProxy.
......@@ -1311,15 +1311,21 @@ SGImplSvc::removeProxy(DataProxy* proxy, const void* pTrans,
}
// remove all entries from t2p map
this->t2pRemove(pTrans);
SG::DataProxy::CLIDCont_t clids = proxy->transientID();
for (SG::DataProxy::CLIDCont_t::const_iterator i = clids.begin();
i != clids.end();
++i)
// --- only if the proxy actually has an object!
// otherwise, we can trigger I/O.
// besides being useless here, we can get deadlocks if we
// call into the I/O code while holding the SG lock.
if (proxy->isValidObject()) {
this->t2pRemove(pTrans);
SG::DataProxy::CLIDCont_t clids = proxy->transientID();
for (SG::DataProxy::CLIDCont_t::const_iterator i = clids.begin();
i != clids.end();
++i)
{
void* ptr = SG::DataProxy_cast (proxy, *i);
this->t2pRemove(ptr);
}
}
// remove from store
return m_pStore->removeProxy(proxy, forceRemove, true);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment