From 86c64d6dc002e8f26354af31483846008a5b6030 Mon Sep 17 00:00:00 2001 From: Patrick LeBlanc Date: Thu, 15 Nov 2018 15:33:50 -0600 Subject: [PATCH] MCOL-1558. This likely covers it. First cut. --- procmon/processmonitor.cpp | 5 +++-- versioning/BRM/save_brm.cpp | 4 +++- versioning/BRM/slavecomm.cpp | 16 ++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/procmon/processmonitor.cpp b/procmon/processmonitor.cpp index 752961854..c8170f384 100644 --- a/procmon/processmonitor.cpp +++ b/procmon/processmonitor.cpp @@ -1736,7 +1736,7 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO break; } - + case PROCUNMOUNT: { string dbrootID; @@ -2581,7 +2581,8 @@ pid_t ProcessMonitor::startProcess(string processModuleType, string processName, char line[200] = {0}; oldFile->pread(line, 0, fileSize - 1); // skip the \n line[fileSize] = '\0'; // not necessary, but be sure. - string dbrmFile = line; + // MCOL-1558 - the _current file is now relative to DBRMRoot + string dbrmFile = DBRMroot + line; // if ( !gOAMParentModuleFlag ) { diff --git a/versioning/BRM/save_brm.cpp b/versioning/BRM/save_brm.cpp index 74b7ada19..b3d33168c 100644 --- a/versioning/BRM/save_brm.cpp +++ b/versioning/BRM/save_brm.cpp @@ -100,7 +100,9 @@ int main (int argc, char** argv) #ifndef _MSC_VER prefix += '\n'; #endif - currentFile->write(prefix.c_str(), prefix.length()); + // for MCOL-1558. Make the _current file relative to DBRMRoot + string relative = prefix.substr(prefix.find_last_of('/')); + currentFile->write(relative.c_str(), relative.length()); } catch (exception& e) { diff --git a/versioning/BRM/slavecomm.cpp b/versioning/BRM/slavecomm.cpp index fab93d605..55fe3a15b 100644 --- a/versioning/BRM/slavecomm.cpp +++ b/versioning/BRM/slavecomm.cpp @@ -100,7 +100,7 @@ SlaveComm::SlaveComm(string hostname, SlaveDBRMNode* s) : } } } - + string tmpDir = startup::StartUp::tmpDir(); /* NOTE: this string has to match whatever is designated as the first slave */ @@ -2038,9 +2038,11 @@ void SlaveComm::do_confirm() if (currentSaveFile) { - err = currentSaveFile->write(tmp.c_str(), tmp.length()); + // MCOL-1558. Make the _current file relative to DBRMRoot. + string relative = tmp.substr(tmp.find_last_of('/') + 1); + err = currentSaveFile->write(relative.c_str(), relative.length()); - if (err < (int) tmp.length()) + if (err < (int) relative.length()) { ostringstream os; os << "WorkerComm: currentfile write() returned " << err @@ -2070,9 +2072,11 @@ void SlaveComm::do_confirm() else { lseek(currentSaveFD, 0, SEEK_SET); - err = write(currentSaveFD, tmp.c_str(), tmp.length()); + // MCOL-1558. Make the _current file relative to DBRMRoot. + string relative = tmp.substr(tmp.find_last_of('/') + 1); + err = write(currentSaveFD, relative.c_str(), relative.length()); - if (err < (int) tmp.length()) + if (err < (int) relative.length()) { ostringstream os; os << "WorkerComm: currentfile write() returned " << err @@ -2089,7 +2093,7 @@ void SlaveComm::do_confirm() _chsize_s(currentSaveFD, tmp.length()); _commit(currentSaveFD); #else - err = ftruncate(currentSaveFD, tmp.length()); + err = ftruncate(currentSaveFD, relative.length()); fsync(currentSaveFD); #endif saveFileToggle = !saveFileToggle;