diff options
author | Antonio Fuschetto <antonio.fuschetto@mongodb.com> | 2021-05-26 12:16:25 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-05-26 19:18:36 +0000 |
commit | 7c2cac2cf98817d930a9912136e6e26b626d7b81 (patch) | |
tree | 43654fa4f3535603e9f3a776ffe8ab0df24e94a1 | |
parent | 0a9dbc3437a683b65ba85b1e57bd5ae65c7e6476 (diff) | |
download | mongo-7c2cac2cf98817d930a9912136e6e26b626d7b81.tar.gz |
SERVER-57009 Additional debugging information in case of crash during FCV change
-rw-r--r-- | src/mongo/db/s/shard_server_catalog_cache_loader.cpp | 19 | ||||
-rw-r--r-- | src/mongo/db/s/shard_server_catalog_cache_loader.h | 14 |
2 files changed, 30 insertions, 3 deletions
diff --git a/src/mongo/db/s/shard_server_catalog_cache_loader.cpp b/src/mongo/db/s/shard_server_catalog_cache_loader.cpp index 2456f90b31e..c1efae18af7 100644 --- a/src/mongo/db/s/shard_server_catalog_cache_loader.cpp +++ b/src/mongo/db/s/shard_server_catalog_cache_loader.cpp @@ -1157,8 +1157,16 @@ void ShardServerCatalogCacheLoader::CollAndChunkTaskList::addTask(collAndChunkTa return; } + const auto& lastTask = _tasks.back(); if (task.dropped) { - invariant(_tasks.back().maxQueryVersion == task.minQueryVersion); + invariant(lastTask.maxQueryVersion == task.minQueryVersion, + str::stream() << "The version of the added task is not contiguous with that of " + << "the previous one: LastTask {" + << lastTask.toString() + << "}, " + << "AddedTask {" + << task.toString() + << "}"); // As an optimization, on collection drop, clear any pending tasks in order to prevent any // throw-away work from executing. Because we have no way to differentiate whether the @@ -1172,8 +1180,13 @@ void ShardServerCatalogCacheLoader::CollAndChunkTaskList::addTask(collAndChunkTa } } else { // Tasks must have contiguous versions, unless a complete reload occurs. - invariant(_tasks.back().maxQueryVersion == task.minQueryVersion || - !task.minQueryVersion.isSet()); + invariant(lastTask.maxQueryVersion == task.minQueryVersion || !task.minQueryVersion.isSet(), + str::stream() << "The added task is not the first and its version is not " + << "contiguous with that of the previous one: LastTask {" + << lastTask.toString() + << "}, AddedTask {" + << task.toString() + << "}"); _tasks.emplace_back(std::move(task)); } diff --git a/src/mongo/db/s/shard_server_catalog_cache_loader.h b/src/mongo/db/s/shard_server_catalog_cache_loader.h index d42245cfddc..5f1ba9ef40c 100644 --- a/src/mongo/db/s/shard_server_catalog_cache_loader.h +++ b/src/mongo/db/s/shard_server_catalog_cache_loader.h @@ -142,6 +142,20 @@ private: // The term in which the loader scheduled this task. uint32_t termCreated; + + std::string toString() const { + std::stringstream ss; + ss << "CollAndChunkTask -" + << " taskNum: " << taskNum << ", collectionAndChangedChunksSize: " + << (collectionAndChangedChunks ? collectionAndChangedChunks->changedChunks.size() + : -1) + << ", minQueryVersion: " + << (minQueryVersion.isSet() ? minQueryVersion.toString() : "(unset)") + << ", maxQueryVersion: " + << (maxQueryVersion.isSet() ? maxQueryVersion.toString() : "(unset)") + << ", dropped: " << dropped << ", termCreated: " << termCreated; + return ss.str(); + } }; /** |