Throw exception if PerfdataWriter::RotateFile fails to rename from host_temp_path to host_perfdata_path (and same for service)

This can happen if the two paths are not on the same mount-point.

fixes #9236

Signed-off-by: Gunnar Beutner <gunnar.beutner@netways.de>
This commit is contained in:
Jason Young 2015-09-13 21:05:32 -04:00 committed by Gunnar Beutner
parent ed27130402
commit 7dbd66535a
1 changed files with 6 additions and 1 deletions

View File

@ -124,7 +124,12 @@ void PerfdataWriter::RotateFile(std::ofstream& output, const String& temp_path,
output.close();
String finalFile = perfdata_path + "." + Convert::ToString((long)Utility::GetTime());
(void) rename(temp_path.CStr(), finalFile.CStr());
if (rename(temp_path.CStr(), finalFile.CStr()) < 0) {
BOOST_THROW_EXCEPTION(posix_error()
<< boost::errinfo_api_function("rename")
<< boost::errinfo_errno(errno)
<< boost::errinfo_file_name(temp_path));
}
}
output.open(temp_path.CStr());