summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Fuschetto <antonio.fuschetto@mongodb.com>2021-05-26 12:09:49 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-26 19:25:19 +0000
commit65517af318642862336cae740ed7f6ec9983c1dd (patch)
tree191bf4131632307ff0d6918eb13064bc9da17804
parent8a16d9e587db35a2a9e21a0ec21ef07c47c7e2e5 (diff)
downloadmongo-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.cpp13
-rw-r--r--src/mongo/db/s/shard_server_catalog_cache_loader.h14
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();
+ }
};
/**