diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2014-06-05 14:55:52 -0400 |
---|---|---|
committer | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2014-06-06 18:19:01 -0400 |
commit | 616461d294bd9f5054ca38b302b6fc5d70fde20c (patch) | |
tree | 671cd2efc28166c2a8cb9d6273954e5a38ea5255 /src/mongo/logger/rotatable_file_writer.cpp | |
parent | dae863af3f695fe98c16473ca07d79fb106121c0 (diff) | |
download | mongo-616461d294bd9f5054ca38b302b6fc5d70fde20c.tar.gz |
SERVER-4905: add flag to disable mongo's builtin log rotation
To support the standalone utility, we need to give administrators
support for disabling Mongo's builtin log rotation.
Diffstat (limited to 'src/mongo/logger/rotatable_file_writer.cpp')
-rw-r--r-- | src/mongo/logger/rotatable_file_writer.cpp | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/src/mongo/logger/rotatable_file_writer.cpp b/src/mongo/logger/rotatable_file_writer.cpp index 8b456e3f9fc..ee7e174e55a 100644 --- a/src/mongo/logger/rotatable_file_writer.cpp +++ b/src/mongo/logger/rotatable_file_writer.cpp @@ -251,28 +251,31 @@ namespace { return _openFileStream(append); } - Status RotatableFileWriter::Use::rotate(const std::string& renameTarget) { + Status RotatableFileWriter::Use::rotate(bool renameOnRotate, const std::string& renameTarget) { if (_writer->_stream) { _writer->_stream->flush(); - try { - if (boost::filesystem::exists(renameTarget)) { - return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() << - "Renaming file " << _writer->_fileName << " to " << - renameTarget << " failed; destination already exists"); + + if(renameOnRotate) { + try { + if (boost::filesystem::exists(renameTarget)) { + return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() << + "Renaming file " << _writer->_fileName << " to " << + renameTarget << " failed; destination already exists"); + } + } catch (const std::exception& e) { + return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() << + "Renaming file " << _writer->_fileName << " to " << + renameTarget << " failed; Cannot verify whether destination " + "already exists: " << e.what()); } - } catch (const std::exception& e) { - return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() << - "Renaming file " << _writer->_fileName << " to " << - renameTarget << " failed; Cannot verify whether destination " - "already exists: " << e.what()); - } - if (0 != renameFile(_writer->_fileName, renameTarget)) { - return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() << - "Failed to rename \"" << _writer->_fileName << "\" to \"" << - renameTarget << "\": " << strerror(errno) << " (" << errno << ')'); - //TODO(schwerin): Make errnoWithDescription() available in the logger library, and - //use it here. + if (0 != renameFile(_writer->_fileName, renameTarget)) { + return Status(ErrorCodes::FileRenameFailed, mongoutils::str::stream() << + "Failed to rename \"" << _writer->_fileName << "\" to \"" << + renameTarget << "\": " << strerror(errno) << " (" << errno << ')'); + //TODO(schwerin): Make errnoWithDescription() available in the logger library, and + //use it here. + } } } return _openFileStream(false); |