summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp')
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
index 7783cea4cbf..23a8c8f90f5 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
@@ -55,18 +55,27 @@ namespace {
int MAGIC = 123123;
}
-WiredTigerSizeStorer::WiredTigerSizeStorer(WT_CONNECTION* conn, const std::string& storageUri)
+WiredTigerSizeStorer::WiredTigerSizeStorer(WT_CONNECTION* conn,
+ const std::string& storageUri,
+ bool logSizeStorerTable,
+ bool readOnly)
: _session(conn) {
WT_SESSION* session = _session.getSession();
- int ret = session->open_cursor(session, storageUri.c_str(), NULL, "overwrite=true", &_cursor);
- if (ret == ENOENT) {
- // Need to create table.
- std::string config = WiredTigerCustomizationHooks::get(getGlobalServiceContext())
- ->getTableCreateConfig(storageUri);
+
+ std::string config = WiredTigerCustomizationHooks::get(getGlobalServiceContext())
+ ->getTableCreateConfig(storageUri);
+ if (!readOnly) {
invariantWTOK(session->create(session, storageUri.c_str(), config.c_str()));
- ret = session->open_cursor(session, storageUri.c_str(), NULL, "overwrite=true", &_cursor);
+ const bool keepOldLoggingSettings = true;
+ if (keepOldLoggingSettings) {
+ logSizeStorerTable = true;
+ }
+ uassertStatusOK(
+ WiredTigerUtil::setTableLogging(session, storageUri.c_str(), logSizeStorerTable));
}
- invariantWTOK(ret);
+
+ invariantWTOK(
+ session->open_cursor(session, storageUri.c_str(), NULL, "overwrite=true", &_cursor));
_magic = MAGIC;
}