summaryrefslogtreecommitdiff
path: root/src/mongo/s/catalog_cache.cpp
diff options
context:
space:
mode:
authorMarcos José Grillo Ramírez <marcos.grillo@mongodb.com>2020-08-11 13:05:23 +0200
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-08-12 18:50:50 +0000
commit741bbb63dc64f3ed4bc65883f5fd05fabbea6409 (patch)
tree29ffa48e4812d7baf388c8fdc90287b816f486ad /src/mongo/s/catalog_cache.cpp
parent3813db066fdfc4a7ace1047aee8bc286caf0b443 (diff)
downloadmongo-741bbb63dc64f3ed4bc65883f5fd05fabbea6409.tar.gz
SERVER-48990 Added comparable chunk version as a prerequisite to implement a causally consistent collection cache
Diffstat (limited to 'src/mongo/s/catalog_cache.cpp')
-rw-r--r--src/mongo/s/catalog_cache.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mongo/s/catalog_cache.cpp b/src/mongo/s/catalog_cache.cpp
index 0d0c0bdbad4..6ed5ed4ce90 100644
--- a/src/mongo/s/catalog_cache.cpp
+++ b/src/mongo/s/catalog_cache.cpp
@@ -861,6 +861,32 @@ DatabaseVersion CachedDatabaseInfo::databaseVersion() const {
return _dbt.getVersion();
}
+AtomicWord<uint64_t> ComparableChunkVersion::_localSequenceNumSource{1ULL};
+
+ComparableChunkVersion ComparableChunkVersion::makeComparableChunkVersion(
+ const ChunkVersion& version) {
+ return ComparableChunkVersion(version, _localSequenceNumSource.fetchAndAdd(1));
+}
+
+const ChunkVersion& ComparableChunkVersion::getVersion() const {
+ return _chunkVersion;
+}
+
+uint64_t ComparableChunkVersion::getLocalSequenceNum() const {
+ return _localSequenceNum;
+}
+
+BSONObj ComparableChunkVersion::toBSON() const {
+ BSONObjBuilder builder;
+ _chunkVersion.appendToCommand(&builder);
+ builder.append("localSequenceNum", std::to_string(_localSequenceNum));
+ return builder.obj();
+}
+
+std::string ComparableChunkVersion::toString() const {
+ return toBSON().toString();
+}
+
CachedCollectionRoutingInfo::CachedCollectionRoutingInfo(NamespaceString nss,
CachedDatabaseInfo db,
std::shared_ptr<ChunkManager> cm)