diff options
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp')
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp | 25 |
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; } |