summaryrefslogtreecommitdiff
path: root/src/mongo/s
diff options
context:
space:
mode:
authorSergi Mateo Bellido <sergi.mateo-bellido@mongodb.com>2021-05-23 13:39:53 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-25 09:06:06 +0000
commit1a6e08a61c138e7da0500c11de78d3489b7024d4 (patch)
tree0a82e3b10755c1306e26af5d2c49b030d145171e /src/mongo/s
parentf6b17f1a3d31b8b74796aabd38094f976ef05169 (diff)
downloadmongo-1a6e08a61c138e7da0500c11de78d3489b7024d4.tar.gz
SERVER-57022 Add a way to construct a ComparableDatabaseVersion without a valid DatabaseVersion
Diffstat (limited to 'src/mongo/s')
-rw-r--r--src/mongo/s/catalog_cache.cpp2
-rw-r--r--src/mongo/s/comparable_database_version_test.cpp9
-rw-r--r--src/mongo/s/database_version.cpp2
-rw-r--r--src/mongo/s/database_version.h7
4 files changed, 16 insertions, 4 deletions
diff --git a/src/mongo/s/catalog_cache.cpp b/src/mongo/s/catalog_cache.cpp
index 9ad463551e2..36da4064e8a 100644
--- a/src/mongo/s/catalog_cache.cpp
+++ b/src/mongo/s/catalog_cache.cpp
@@ -497,7 +497,7 @@ CatalogCache::DatabaseCache::LookupResult CatalogCache::DatabaseCache::_lookupDa
LOGV2_FOR_CATALOG_REFRESH(24102, 2, "Refreshing cached database entry", "db"_attr = dbName);
// This object will define the new time of the database info obtained by this refresh
- auto newDbVersion = ComparableDatabaseVersion::makeComparableDatabaseVersion({});
+ auto newDbVersion = ComparableDatabaseVersion::makeComparableDatabaseVersion(boost::none);
Timer t{};
try {
diff --git a/src/mongo/s/comparable_database_version_test.cpp b/src/mongo/s/comparable_database_version_test.cpp
index c53b2772880..cbf2d9b6869 100644
--- a/src/mongo/s/comparable_database_version_test.cpp
+++ b/src/mongo/s/comparable_database_version_test.cpp
@@ -77,7 +77,6 @@ TEST(ComparableDatabaseVersionTest, CompareVersionDifferentTimestamps) {
ASSERT_FALSE(version2 > version1);
}
-
TEST(ComparableDatabaseVersionTest, CompareEpochBasedVersionAgainstEpochAndTimestampBasedVersion) {
{
auto equalVersions = [](const DatabaseVersion& v1, const DatabaseVersion& v2) {
@@ -219,5 +218,13 @@ TEST(ComparableDatabaseVersionTest, CompareTwoForcedRefreshVersions) {
ASSERT_FALSE(forcedRefreshVersion1 > forcedRefreshVersion2);
}
+TEST(ComparableDatabaseVersionTest, CompareTwoComparableChunkVersionsWithBoostNone) {
+ const auto version1 = ComparableDatabaseVersion::makeComparableDatabaseVersion(boost::none);
+ const auto version2 = ComparableDatabaseVersion::makeComparableDatabaseVersion(boost::none);
+
+ ASSERT_TRUE(version1 < version2);
+ ASSERT_FALSE(version1 > version2);
+}
+
} // namespace
} // namespace mongo
diff --git a/src/mongo/s/database_version.cpp b/src/mongo/s/database_version.cpp
index 0ccb021cc91..7ca5de2f01b 100644
--- a/src/mongo/s/database_version.cpp
+++ b/src/mongo/s/database_version.cpp
@@ -49,7 +49,7 @@ DatabaseVersion DatabaseVersion::makeUpdated() const {
}
ComparableDatabaseVersion ComparableDatabaseVersion::makeComparableDatabaseVersion(
- const DatabaseVersion& version) {
+ const boost::optional<DatabaseVersion>& version) {
return ComparableDatabaseVersion(version,
_uuidDisambiguatingSequenceNumSource.fetchAndAdd(1),
_forcedRefreshSequenceNumSource.load());
diff --git a/src/mongo/s/database_version.h b/src/mongo/s/database_version.h
index 546272ba625..2bfad7d883d 100644
--- a/src/mongo/s/database_version.h
+++ b/src/mongo/s/database_version.h
@@ -115,8 +115,13 @@ public:
* Creates a ComparableDatabaseVersion that wraps the given DatabaseVersion.
* Each object created through this method will have a local sequence number greater than the
* previously created ones.
+ *
+ * If version is boost::none it creates a ComparableDatabaseVersion that doesn't have a valid
+ * DatabaseVersion. This is useful in some scenarios in which the DatabaseVersion is provided
+ * later through ComparableDatabaseVersion::setVersion.
*/
- static ComparableDatabaseVersion makeComparableDatabaseVersion(const DatabaseVersion& version);
+ static ComparableDatabaseVersion makeComparableDatabaseVersion(
+ const boost::optional<DatabaseVersion>& version);
/**
* Creates a new instance which will artificially be greater than any