diff options
author | Tess Avitabile <tess.avitabile@mongodb.com> | 2019-02-26 10:51:40 -0500 |
---|---|---|
committer | Tess Avitabile <tess.avitabile@mongodb.com> | 2019-03-11 10:59:18 -0400 |
commit | 2d58509b392be9a2c98fb4326ae052d7a5b9f4ea (patch) | |
tree | 921f6da646650b2a195304b93087a45c26e5ef1a | |
parent | fcd6b96dd47cfbb295e280d9bd4a7ef71f7305be (diff) | |
download | mongo-2d58509b392be9a2c98fb4326ae052d7a5b9f4ea.tar.gz |
SERVER-39490 opWriteConcernCounters can cause undefined behavior due to overflow
(cherry picked from commit 884ac2862eda54e15d99e4db253b822cb4a90f1d)
-rw-r--r-- | src/mongo/db/stats/server_write_concern_metrics.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/stats/server_write_concern_metrics.h | 8 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/mongo/db/stats/server_write_concern_metrics.cpp b/src/mongo/db/stats/server_write_concern_metrics.cpp index da8e74c9011..1477dac2f61 100644 --- a/src/mongo/db/stats/server_write_concern_metrics.cpp +++ b/src/mongo/db/stats/server_write_concern_metrics.cpp @@ -133,21 +133,21 @@ void ServerWriteConcernMetrics::WriteConcernMetricsForOperationType::recordWrite void ServerWriteConcernMetrics::WriteConcernMetricsForOperationType::toBSON( BSONObjBuilder* builder) const { - builder->append("wmajority", wMajorityCount); + builder->append("wmajority", static_cast<long long>(wMajorityCount)); BSONObjBuilder wNumBuilder(builder->subobjStart("wnum")); for (auto const& pair : wNumCounts) { - wNumBuilder.append(std::to_string(pair.first), pair.second); + wNumBuilder.append(std::to_string(pair.first), static_cast<long long>(pair.second)); } wNumBuilder.done(); BSONObjBuilder wTagBuilder(builder->subobjStart("wtag")); for (auto const& pair : wTagCounts) { - wTagBuilder.append(pair.first, pair.second); + wTagBuilder.append(pair.first, static_cast<long long>(pair.second)); } wTagBuilder.done(); - builder->append("none", noWCount); + builder->append("none", static_cast<long long>(noWCount)); } namespace { diff --git a/src/mongo/db/stats/server_write_concern_metrics.h b/src/mongo/db/stats/server_write_concern_metrics.h index 9a9525d1b30..e2744de9abe 100644 --- a/src/mongo/db/stats/server_write_concern_metrics.h +++ b/src/mongo/db/stats/server_write_concern_metrics.h @@ -84,16 +84,16 @@ private: void toBSON(BSONObjBuilder* builder) const; // Count of operations with writeConcern w:"majority". - long long wMajorityCount = 0; + std::uint64_t wMajorityCount = 0; // Count of operations without a writeConcern "w" value. - long long noWCount = 0; + std::uint64_t noWCount = 0; // Counts of operations with writeConcern w:<num>. - std::map<int, long long> wNumCounts; + std::map<int, std::uint64_t> wNumCounts; // Counts of operations with writeConcern w:"tag". - StringMap<long long> wTagCounts; + StringMap<std::uint64_t> wTagCounts; }; mutable stdx::mutex _mutex; |