From bfd22982681e0af44f52b586b432091174d17945 Mon Sep 17 00:00:00 2001 From: Sergi Mateo Bellido Date: Wed, 30 Sep 2020 12:15:32 +0000 Subject: SERVER-50815 Improve database and collection version formatting on logs --- src/mongo/s/catalog_cache.cpp | 27 ++++++++++++++++++--------- src/mongo/s/catalog_cache.h | 3 ++- src/mongo/s/chunk_manager.cpp | 16 ++++++++++++---- src/mongo/s/chunk_manager.h | 3 ++- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/mongo/s/catalog_cache.cpp b/src/mongo/s/catalog_cache.cpp index 789dafdce39..ea2363fb9b2 100644 --- a/src/mongo/s/catalog_cache.cpp +++ b/src/mongo/s/catalog_cache.cpp @@ -245,7 +245,7 @@ void CatalogCache::onStaleDatabaseVersion(const StringData dbName, 2, "Registering new database version", "db"_attr = dbName, - "version"_attr = version); + "version"_attr = version.toBSONForLogging()); _databaseCache.advanceTimeInStore(dbName.toString(), version); } } @@ -464,8 +464,8 @@ CatalogCache::DatabaseCache::LookupResult CatalogCache::DatabaseCache::_lookupDa 1, "Refreshed cached database entry", "db"_attr = dbName, - "newDbVersion"_attr = newDbVersion, - "oldDbVersion"_attr = previousDbVersion, + "newDbVersion"_attr = newDbVersion.toBSONForLogging(), + "oldDbVersion"_attr = previousDbVersion.toBSONForLogging(), "duration"_attr = Milliseconds(t.millis())); return CatalogCache::DatabaseCache::LookupResult(std::move(newDb), std::move(newDbVersion)); } catch (const DBException& ex) { @@ -548,7 +548,7 @@ CatalogCache::CollectionCache::LookupResult CatalogCache::CollectionCache::_look 1, "Refreshing cached collection", "namespace"_attr = nss, - "currentVersion"_attr = previousVersion); + "currentVersion"_attr = previousVersion.toBSONForLogging()); auto collectionAndChunks = _catalogCacheLoader.getChunksSince(nss, lookupVersion).get(); @@ -599,8 +599,8 @@ CatalogCache::CollectionCache::LookupResult CatalogCache::CollectionCache::_look isIncremental || newVersion != previousVersion ? 0 : 1, "Refreshed cached collection", "namespace"_attr = nss, - "newVersion"_attr = newVersion, - "oldVersion"_attr = previousVersion, + "newVersion"_attr = newVersion.toBSONForLogging(), + "oldVersion"_attr = previousVersion.toBSONForLogging(), "duration"_attr = Milliseconds(t.millis())); _updateRefreshesStats(isIncremental, false); @@ -639,11 +639,20 @@ ComparableDatabaseVersion ComparableDatabaseVersion::makeComparableDatabaseVersi return ComparableDatabaseVersion(version, _uuidDisambiguatingSequenceNumSource.fetchAndAdd(1)); } -std::string ComparableDatabaseVersion::toString() const { - return str::stream() << (_dbVersion ? _dbVersion->toBSON().toString() : "NONE") << "|" - << _uuidDisambiguatingSequenceNum; +BSONObj ComparableDatabaseVersion::toBSONForLogging() const { + BSONObjBuilder builder; + if (_dbVersion) + builder.append("dbVersion"_sd, _dbVersion->toBSON()); + else + builder.append("dbVersion"_sd, "None"); + + builder.append("uuidDisambiguatingSequenceNum"_sd, + static_cast(_uuidDisambiguatingSequenceNum)); + + return builder.obj(); } + bool ComparableDatabaseVersion::operator==(const ComparableDatabaseVersion& other) const { if (!_dbVersion && !other._dbVersion) return true; // Default constructed value diff --git a/src/mongo/s/catalog_cache.h b/src/mongo/s/catalog_cache.h index 55877a37c49..656d163f26c 100644 --- a/src/mongo/s/catalog_cache.h +++ b/src/mongo/s/catalog_cache.h @@ -30,6 +30,7 @@ #pragma once #include "mongo/base/string_data.h" +#include "mongo/db/jsobj.h" #include "mongo/platform/atomic_word.h" #include "mongo/s/catalog/type_database.h" #include "mongo/s/catalog_cache_loader.h" @@ -77,7 +78,7 @@ public: return *_dbVersion; } - std::string toString() const; + BSONObj toBSONForLogging() const; bool sameUuid(const ComparableDatabaseVersion& other) const { return _dbVersion->getUuid() == other._dbVersion->getUuid(); diff --git a/src/mongo/s/chunk_manager.cpp b/src/mongo/s/chunk_manager.cpp index a70d92d00b2..63921525d8c 100644 --- a/src/mongo/s/chunk_manager.cpp +++ b/src/mongo/s/chunk_manager.cpp @@ -763,10 +763,18 @@ ComparableChunkVersion ComparableChunkVersion::makeComparableChunkVersionForForc _epochDisambiguatingSequenceNumSource.fetchAndAdd(1)); } -std::string ComparableChunkVersion::toString() const { - return str::stream() << _forcedRefreshSequenceNum << "|" - << (_chunkVersion ? _chunkVersion->toString() : "NONE") << "|" - << _epochDisambiguatingSequenceNum; +BSONObj ComparableChunkVersion::toBSONForLogging() const { + BSONObjBuilder builder; + if (_chunkVersion) + builder.append("chunkVersion"_sd, _chunkVersion->toBSON()); + else + builder.append("chunkVersion"_sd, "None"); + + builder.append("forcedRefreshSequenceNum"_sd, static_cast(_forcedRefreshSequenceNum)); + builder.append("epochDisambiguatingSequenceNum"_sd, + static_cast(_epochDisambiguatingSequenceNum)); + + return builder.obj(); } bool ComparableChunkVersion::operator==(const ComparableChunkVersion& other) const { diff --git a/src/mongo/s/chunk_manager.h b/src/mongo/s/chunk_manager.h index e694a94c201..68a439e0064 100644 --- a/src/mongo/s/chunk_manager.h +++ b/src/mongo/s/chunk_manager.h @@ -33,6 +33,7 @@ #include #include +#include "mongo/db/jsobj.h" #include "mongo/db/namespace_string.h" #include "mongo/db/query/collation/collator_interface.h" #include "mongo/s/chunk.h" @@ -366,7 +367,7 @@ public: return *_chunkVersion; } - std::string toString() const; + BSONObj toBSONForLogging() const; bool sameEpoch(const ComparableChunkVersion& other) const { return _chunkVersion->epoch() == other._chunkVersion->epoch(); -- cgit v1.2.1