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

Merge branch 'EventCache' into 'master'

Delete RawEvent fragments when EventCache is destroyed

See merge request atlas/athena!32916
parents 0766bda1 c312fa0a
No related branches found
No related tags found
No related merge requests found
...@@ -355,7 +355,7 @@ ByteStreamEventStorageInputSvc::buildFragment( ...@@ -355,7 +355,7 @@ ByteStreamEventStorageInputSvc::buildFragment(
// convert old fragment // convert old fragment
if(formatVersion != eformat::MAJOR_DEFAULT_VERSION) { if(formatVersion != eformat::MAJOR_DEFAULT_VERSION) {
// 100 for increase of data-size due to header conversion // 100 for increase of data-size due to header conversion
DataType newEventSize = eventSize + 1000; const uint32_t newEventSize = eventSize + 1000;
DataType* newFragment = new DataType[newEventSize]; DataType* newFragment = new DataType[newEventSize];
eformat::old::convert(fragment, newFragment, newEventSize); eformat::old::convert(fragment, newFragment, newEventSize);
...@@ -464,15 +464,21 @@ ByteStreamEventStorageInputSvc::EventCache::releaseEvent() ...@@ -464,15 +464,21 @@ ByteStreamEventStorageInputSvc::EventCache::releaseEvent()
{ {
// cleanup parts of previous event and re-init them // cleanup parts of previous event and re-init them
if(rawEvent) { if(rawEvent) {
OFFLINE_FRAGMENTS_NAMESPACE::PointerType fragment = 0; OFFLINE_FRAGMENTS_NAMESPACE::PointerType fragment = rawEvent->start();
rawEvent->start(fragment); delete [] fragment; fragment = nullptr;
delete [] fragment; fragment = 0;
rawEvent.reset(nullptr); rawEvent.reset(nullptr);
eventStatus = 0; eventStatus = 0;
} }
} }
/******************************************************************************/
ByteStreamEventStorageInputSvc::EventCache::~EventCache()
{
releaseEvent();
}
/******************************************************************************/ /******************************************************************************/
void void
ByteStreamEventStorageInputSvc::closeBlockIterator(bool clearMetadata) ByteStreamEventStorageInputSvc::closeBlockIterator(bool clearMetadata)
......
...@@ -75,7 +75,8 @@ private: // data ...@@ -75,7 +75,8 @@ private: // data
std::unique_ptr<RawEvent> rawEvent = nullptr; //!< current event std::unique_ptr<RawEvent> rawEvent = nullptr; //!< current event
unsigned int eventStatus = 0; //!< check_tree() status of the current event unsigned int eventStatus = 0; //!< check_tree() status of the current event
long long int eventOffset = 0; //!< event offset within a file, can be -1 long long int eventOffset = 0; //!< event offset within a file, can be -1
void releaseEvent(); void releaseEvent(); //!< deletes fragments and raw event
virtual ~EventCache(); //!< calls releaseEvent
}; };
SG::SlotSpecificObj<EventCache> m_eventsCache; SG::SlotSpecificObj<EventCache> m_eventsCache;
......
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