Skip to content

EvtStoreSvc creates null directory object

When adding objects to the event store, the EvtStoreSvc should create non-null DataObject* representations of intermediate directories when its ForceLeaves property is true. What it actually stores is a nullptr:

p.store->put( dir, std::unique_ptr<DataObject>{} );

One fix is to change from std::unique_ptr to std::make_unique. I see in c9ebcb88 the reverse change was made, so perhaps another solution would be preferred.

The current behaviour is problematic for non-Gaudi-functional algorithms which perform a getIfExists on such intermediate locations. With the behaviour in master, the object retrieved for the intermediate directory is nullptr, causing legacy algorithms to interpret this as a non-existent location, when it has in fact been 'created'.

/cc @graven

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information