diff options
author | David Hows <howsdav@gmail.com> | 2017-01-17 17:00:25 +1100 |
---|---|---|
committer | David Hows <howsdav@gmail.com> | 2017-03-13 12:26:04 +1100 |
commit | b890af7de045d1d91b01f90a453d81fc6631b29d (patch) | |
tree | bc6191b1479b37ad0335260b35805d2b0510b988 /src/mongo/db | |
parent | 39e06c9ef8c797ad626956b564ac9ebe295cbaf3 (diff) | |
download | mongo-b890af7de045d1d91b01f90a453d81fc6631b29d.tar.gz |
SERVER-27670 Improve error messages reported on EBUSY return from WiredTiger
Diffstat (limited to 'src/mongo/db')
3 files changed, 14 insertions, 3 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp index 5e70584a86d..eb91754ab9f 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp @@ -283,7 +283,11 @@ void WiredTigerIndex::fullValidate(OperationContext* opCtx, if (fullResults && !WiredTigerRecoveryUnit::get(opCtx)->getSessionCache()->isEphemeral()) { int err = WiredTigerUtil::verifyTable(opCtx, _uri, &(fullResults->errors)); if (err == EBUSY) { - const char* msg = "verify() returned EBUSY. Not treating as invalid."; + std::string msg = str::stream() + << "Could not complete validation of " << _uri << ". " + << "This is a transient issue as the collection was actively " + "in use by other operations."; + warning() << msg; fullResults->warnings.push_back(msg); } else if (err) { diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp index 060f4b58288..bd3c83f555f 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp @@ -392,7 +392,10 @@ Status WiredTigerKVEngine::_salvageIfNeeded(const char* uri) { // SERVER-16457: verify and salvage are occasionally failing with EBUSY. For now we // lie and return OK to avoid breaking tests. This block should go away when that ticket // is resolved. - error() << "Verify on " << uri << " failed with EBUSY. Assuming no salvage is needed."; + error() + << "Verify on " << uri << " failed with EBUSY. " + << "This means the collection was being accessed. No repair is necessary unless other " + "errors are reported."; return Status::OK(); } diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp index a88754cf992..b10b3cfdc92 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp @@ -1543,7 +1543,11 @@ Status WiredTigerRecordStore::validate(OperationContext* opCtx, if (!_isEphemeral) { int err = WiredTigerUtil::verifyTable(opCtx, _uri, &results->errors); if (err == EBUSY) { - const char* msg = "verify() returned EBUSY. Not treating as invalid."; + std::string msg = str::stream() + << "Could not complete validation of " << _uri << ". " + << "This is a transient issue as the collection was actively " + "in use by other operations."; + warning() << msg; results->warnings.push_back(msg); } else if (err) { |