diff options
author | Antonio Fuschetto <antonio.fuschetto@mongodb.com> | 2021-05-26 12:09:49 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-05-26 19:25:19 +0000 |
commit | 65517af318642862336cae740ed7f6ec9983c1dd (patch) | |
tree | 191bf4131632307ff0d6918eb13064bc9da17804 | |
parent | 8a16d9e587db35a2a9e21a0ec21ef07c47c7e2e5 (diff) | |
download | mongo-65517af318642862336cae740ed7f6ec9983c1dd.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 | 13 | ||||
-rw-r--r-- | src/mongo/db/s/shard_server_catalog_cache_loader.h | 14 |
2 files changed, 24 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 18a3edd0750..81ef9dfde9d 100644 --- a/src/mongo/db/s/shard_server_catalog_cache_loader.cpp +++ b/src/mongo/db/s/shard_server_catalog_cache_loader.cpp @@ -1161,8 +1161,12 @@ 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 @@ -1176,8 +1180,11 @@ 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 a7fa28e919d..7e19a851aed 100644 --- a/src/mongo/db/s/shard_server_catalog_cache_loader.h +++ b/src/mongo/db/s/shard_server_catalog_cache_loader.h @@ -145,6 +145,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(); + } }; /** |