diff --git a/Control/StoreGate/src/SGImplSvc.cxx b/Control/StoreGate/src/SGImplSvc.cxx index b49902703a604241692e07e5f12433860e45e7c7..5603a653d1268a2a2a6a18dcf7d8773a3d1dd540 100644 --- a/Control/StoreGate/src/SGImplSvc.cxx +++ b/Control/StoreGate/src/SGImplSvc.cxx @@ -714,6 +714,8 @@ SGImplSvc::addSymLink(const CLID& linkid, DataProxy* dp) if (baseptr) this->t2pRegister (baseptr, dp).ignore(); } + + addedNewTransObject (linkid, dp->name()); return sc; } @@ -728,6 +730,8 @@ SGImplSvc::addAlias(const std::string& aliasKey, DataProxy* proxy) return StatusCode::FAILURE; } + addedNewTransObject (proxy->clID(), aliasKey); + // add key to proxy and to ProxyStore return m_pStore->addAlias(aliasKey, proxy); } @@ -1642,7 +1646,19 @@ void SGImplSvc::addedNewPersObject(CLID clid, DataProxy* dp) { //if proxy is loading from persistency //add key of object to list of "newly recorded" objects if (0 != dp->transientAddress()->provider()) { + // The object itself. s_newObjs.insert(DataObjID(clid,dp->name())); + + // Aliases. + for (const std::string& alias : dp->alias()) { + s_newObjs.insert(DataObjID(clid,alias)); + } + + // Symlinks. + for (CLID clid2 : dp->transientAddress()->transientID()) { + if (clid2 != clid) + s_newObjs.insert(DataObjID(clid2,dp->name())); + } } } void SGImplSvc::addedNewTransObject(CLID clid, const std::string& key) {