summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/storage_engine_metadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/storage_engine_metadata.cpp')
-rw-r--r--src/mongo/db/storage/storage_engine_metadata.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/mongo/db/storage/storage_engine_metadata.cpp b/src/mongo/db/storage/storage_engine_metadata.cpp
index 7d1e3af9e41..51632f6ec22 100644
--- a/src/mongo/db/storage/storage_engine_metadata.cpp
+++ b/src/mongo/db/storage/storage_engine_metadata.cpp
@@ -50,6 +50,7 @@
#include "mongo/base/data_type_validated.h"
#include "mongo/db/bson/dotted_path_support.h"
#include "mongo/db/jsobj.h"
+#include "mongo/db/storage/storage_options.h"
#include "mongo/rpc/object_check.h"
#include "mongo/util/assert_util.h"
#include "mongo/util/file.h"
@@ -313,6 +314,34 @@ Status StorageEngineMetadata::write() const {
return Status::OK();
}
+Status StorageEngineMetadata::validateJournalPath(const StorageGlobalParams& params) const {
+ BSONElement journalPathMetadataElement = _storageEngineOptions.getField("journalPath");
+ if (journalPathMetadataElement.eoo())
+ return Status::OK();
+
+ if (journalPathMetadataElement.type() != mongo::String) {
+ return Status(ErrorCodes::FailedToParse,
+ str::stream() << "Expected string field journalPath but got "
+ << typeName(journalPathMetadataElement.type())
+ << " instead: "
+ << journalPathMetadataElement);
+ }
+
+ if (params.dur) {
+ if (journalPathMetadataElement.String() != params.journalPath) {
+ return Status(ErrorCodes::InvalidOptions,
+ str::stream() << "Requested option conflicts with current storage engine "
+ "option for journalPath; you requested "
+ << params.journalPath
+ << " but the current server storage is already set to "
+ << journalPathMetadataElement.String()
+ << " and cannot be changed");
+ }
+ }
+
+ return Status::OK();
+}
+
template <>
Status StorageEngineMetadata::validateStorageEngineOption<bool>(
StringData fieldName, bool expectedValue, boost::optional<bool> defaultValue) const {