Skip to content
Snippets Groups Projects
Commit a18b03d8 authored by Peter van Gemmeren's avatar Peter van Gemmeren
Browse files

Additional fixes for AthenaMP SharedWriter shut down.

Former-commit-id: 86345a8e
parent 14aafc26
No related branches found
No related tags found
No related merge requests found
......@@ -309,6 +309,10 @@ StatusCode AthenaPoolCnvSvc::connectOutput(const std::string& outputConnectionSp
if (!m_outputStreamingTool.empty() && m_outputStreamingTool[0]->isClient()) {
return(StatusCode::SUCCESS);
}
if (!m_outputStreamingTool.empty() && m_streamServer == m_outputStreamingTool.size()) {
ATH_MSG_DEBUG("connectOutput SKIPPED for expired server.");
return(StatusCode::SUCCESS);
}
try {
if (!m_poolSvc->connect(pool::ITransaction::UPDATE).isSuccess()) {
ATH_MSG_ERROR("connectOutput FAILED to open an UPDATE transaction.");
......@@ -353,8 +357,13 @@ StatusCode AthenaPoolCnvSvc::commitOutput(const std::string& outputConnectionSpe
}
return(StatusCode::SUCCESS);
}
if (!m_outputStreamingTool.empty() && m_streamServer == m_outputStreamingTool.size()) {
ATH_MSG_DEBUG("commitOutput SKIPPED for expired server.");
return(StatusCode::SUCCESS);
}
std::map<void*, RootType> commitCache;
if (!m_outputStreamingTool.empty() && m_outputStreamingTool[m_streamServer]->isServer()) {
if (!m_outputStreamingTool.empty() && m_streamServer < m_outputStreamingTool.size()
&& m_outputStreamingTool[m_streamServer]->isServer()) {
// Clear object to get Placements for all objects in a Stream
char* placementStr = nullptr;
int num = -1;
......@@ -530,6 +539,13 @@ StatusCode AthenaPoolCnvSvc::disconnectOutput() {
if (!m_outputStreamingTool.empty() && m_outputStreamingTool[0]->isClient()) {
return(StatusCode::SUCCESS);
}
if (!m_outputStreamingTool.empty() && m_streamServer == m_outputStreamingTool.size()) {
ATH_MSG_DEBUG("disconnectOutput SKIPPED for expired server.");
return(StatusCode::SUCCESS);
}
if (!m_outputStreamingTool.empty()) {
m_streamServer = m_outputStreamingTool.size();
}
// Setting default 'TREE_MAX_SIZE' for ROOT to 1024 GB to avoid file chains.
std::vector<std::string> maxFileSize;
maxFileSize.push_back("TREE_MAX_SIZE");
......@@ -686,6 +702,12 @@ const Token* AthenaPoolCnvSvc::registerForWrite(const Placement* placement,
tempToken->fromString(tokenStr); tokenStr = nullptr;
token = tempToken; tempToken = nullptr;
} else {
if (!m_outputStreamingTool.empty() && m_streamServer == m_outputStreamingTool.size()) {
ATH_MSG_DEBUG("registerForWrite SKIPPED for expired server.");
Token* tempToken = new Token();
tempToken->setClassID(pool::DbReflex::guid(classDesc));
return(tempToken);
}
token = m_poolSvc->registerForWrite(placement, obj, classDesc);
}
if (m_doChronoStat) {
......
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