diff options
author | Sergi Mateo Bellido <sergi.mateo-bellido@mongodb.com> | 2021-05-23 13:39:53 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-05-25 09:06:06 +0000 |
commit | 1a6e08a61c138e7da0500c11de78d3489b7024d4 (patch) | |
tree | 0a82e3b10755c1306e26af5d2c49b030d145171e /src/mongo/s | |
parent | f6b17f1a3d31b8b74796aabd38094f976ef05169 (diff) | |
download | mongo-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.cpp | 2 | ||||
-rw-r--r-- | src/mongo/s/comparable_database_version_test.cpp | 9 | ||||
-rw-r--r-- | src/mongo/s/database_version.cpp | 2 | ||||
-rw-r--r-- | src/mongo/s/database_version.h | 7 |
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 |