From 51ba5d1540ea957a7fb03a08bbb1ef4f9d6e80d2 Mon Sep 17 00:00:00 2001 From: Bynn Lee Date: Thu, 25 Feb 2021 21:49:58 +0000 Subject: SERVER-43762 tighten the overload set for BSONObjBuilder::appendNumber --- src/mongo/bson/bsonobjbuilder.h | 32 +------ src/mongo/bson/bsonobjbuilder_test.cpp | 105 ++------------------- src/mongo/db/commands/drop_indexes.cpp | 2 +- src/mongo/db/commands/fail_point_cmd.cpp | 2 +- src/mongo/db/commands/generic_servers.cpp | 3 +- src/mongo/db/curop.cpp | 6 +- src/mongo/db/exec/sbe/stages/branch.cpp | 12 ++- src/mongo/db/exec/sbe/stages/bson_scan.cpp | 2 +- src/mongo/db/exec/sbe/stages/check_bounds.cpp | 8 +- src/mongo/db/exec/sbe/stages/filter.h | 2 +- src/mongo/db/exec/sbe/stages/ix_scan.cpp | 12 +-- src/mongo/db/exec/sbe/stages/loop_join.cpp | 4 +- src/mongo/db/exec/sbe/stages/makeobj.cpp | 4 +- src/mongo/db/exec/sbe/stages/scan.cpp | 8 +- src/mongo/db/exec/sbe/stages/sort.cpp | 5 +- src/mongo/db/exec/sbe/stages/spool.cpp | 4 +- src/mongo/db/exec/sbe/stages/spool.h | 2 +- src/mongo/db/exec/sbe/stages/text_match.cpp | 4 +- src/mongo/db/exec/sbe/stages/traverse.cpp | 12 +-- src/mongo/db/exec/sbe/stages/unique.cpp | 4 +- src/mongo/db/exec/sbe/stages/unwind.cpp | 8 +- src/mongo/db/matcher/doc_validation_error.cpp | 3 +- src/mongo/db/pipeline/accumulator_js_test.cpp | 2 +- src/mongo/db/pipeline/resume_token.cpp | 2 +- src/mongo/db/query/explain.cpp | 6 +- src/mongo/db/query/plan_explainer_impl.cpp | 77 +++++++-------- src/mongo/db/query/plan_explainer_sbe.cpp | 24 ++--- src/mongo/db/repl/all_database_cloner.cpp | 4 +- src/mongo/db/repl/apply_ops_test.cpp | 2 +- src/mongo/db/repl/collection_cloner.cpp | 10 +- src/mongo/db/repl/database_cloner.cpp | 4 +- src/mongo/db/repl/hello_response.cpp | 8 +- src/mongo/db/repl/initial_syncer.cpp | 2 +- src/mongo/db/repl/primary_only_service.cpp | 3 +- src/mongo/db/repl/repl_set_config_validators.h | 2 +- src/mongo/db/repl/repl_set_heartbeat_args_v1.cpp | 10 +- src/mongo/db/repl/repl_set_heartbeat_response.cpp | 2 +- src/mongo/db/repl/repl_set_request_votes_args.cpp | 6 +- src/mongo/db/repl/replication_info.cpp | 5 +- src/mongo/db/repl/tenant_all_database_cloner.cpp | 2 +- src/mongo/db/repl/tenant_collection_cloner.cpp | 10 +- src/mongo/db/repl/tenant_database_cloner.cpp | 4 +- src/mongo/db/repl/topology_coordinator.cpp | 8 +- .../devnull/ephemeral_catalog_record_store.cpp | 4 +- .../ephemeral_for_test_record_store.cpp | 4 +- .../storage/wiredtiger/wiredtiger_record_store.cpp | 8 +- .../db/storage/wiredtiger/wiredtiger_util.cpp | 2 +- src/mongo/db/timeseries/bucket_catalog.cpp | 8 +- src/mongo/dbtests/jsobjtests.cpp | 46 +-------- src/mongo/dbtests/mock/mock_replica_set.cpp | 4 +- src/mongo/embedded/embedded_ismaster.cpp | 5 +- src/mongo/executor/connection_pool_stats.cpp | 37 ++++---- src/mongo/executor/thread_pool_task_executor.cpp | 10 +- src/mongo/idl/basic_types.h | 2 +- src/mongo/platform/mutex.cpp | 4 +- src/mongo/rpc/op_msg_integration_test.cpp | 2 +- src/mongo/rpc/reply_builder_test.cpp | 2 +- src/mongo/s/commands/cluster_hello_cmd.cpp | 5 +- src/mongo/s/query/cluster_cursor_manager.cpp | 10 +- src/mongo/shell/data_consistency_checker.js | 23 +++++ src/mongo/unittest/unittest.cpp | 2 +- src/mongo/util/heap_profiler.cpp | 14 +-- src/mongo/util/tcmalloc_server_status_section.cpp | 31 +++--- src/mongo/util/tcmalloc_set_parameter.cpp | 2 +- 64 files changed, 274 insertions(+), 388 deletions(-) diff --git a/src/mongo/bson/bsonobjbuilder.h b/src/mongo/bson/bsonobjbuilder.h index e7b6b4a89f3..a7860a45588 100644 --- a/src/mongo/bson/bsonobjbuilder.h +++ b/src/mongo/bson/bsonobjbuilder.h @@ -249,19 +249,6 @@ public: typename = void> Derived& append(StringData fieldName, const T& n) = delete; - /** appends a number. if n < max(int)/2 then uses int, otherwise long long */ - Derived& appendIntOrLL(StringData fieldName, long long n) { - // extra () to avoid max macro on windows - static const long long maxInt = (std::numeric_limits::max)() / 2; - static const long long minInt = -maxInt; - if (minInt < n && n < maxInt) { - append(fieldName, static_cast(n)); - } else { - append(fieldName, n); - } - return static_cast(*this); - } - /** * appendNumber is a series of method for appending the smallest sensible type * mostly for JS @@ -274,29 +261,16 @@ public: return append(fieldName, d); } - Derived& appendNumber(StringData fieldName, size_t n) { - static const size_t maxInt = (1 << 30); - if (n < maxInt) - append(fieldName, static_cast(n)); - else - append(fieldName, static_cast(n)); - return static_cast(*this); - } - Derived& appendNumber(StringData fieldName, Decimal128 decNumber) { return append(fieldName, decNumber); } Derived& appendNumber(StringData fieldName, long long llNumber) { - static const long long maxInt = (1LL << 30); - static const long long minInt = -maxInt; - static const long long maxDouble = (1LL << 40); - static const long long minDouble = -maxDouble; + static const long long maxInt = std::numeric_limits::max(); + static const long long minInt = std::numeric_limits::min(); - if (minInt < llNumber && llNumber < maxInt) { + if (minInt <= llNumber && llNumber <= maxInt) { append(fieldName, static_cast(llNumber)); - } else if (minDouble < llNumber && llNumber < maxDouble) { - append(fieldName, static_cast(llNumber)); } else { append(fieldName, llNumber); } diff --git a/src/mongo/bson/bsonobjbuilder_test.cpp b/src/mongo/bson/bsonobjbuilder_test.cpp index c47bd71a199..08f0fb43fbd 100644 --- a/src/mongo/bson/bsonobjbuilder_test.cpp +++ b/src/mongo/bson/bsonobjbuilder_test.cpp @@ -40,9 +40,6 @@ namespace { using std::string; -const long long maxEncodableInt = (1 << 30) - 1; -const long long minEncodableInt = -maxEncodableInt; - const long long maxInt = (std::numeric_limits::max)(); const long long minInt = (std::numeric_limits::min)(); @@ -87,93 +84,15 @@ TEST(BSONObjBuilderTest, AppendUnsignedIsForbidden) { MONGO_STATIC_ASSERT(!isUnsignedAppendable::value); MONGO_STATIC_ASSERT(!isUnsignedAppendable::value); MONGO_STATIC_ASSERT(!isUnsignedAppendable::value); -} - -/** - * current conversion ranges in appendIntOrLL(long long n) - * dbl/int max/min in comments refer to max/min encodable constants - * n < dbl_min -----> long long - * dbl_min <= n < int_min -----> double - * int_min <= n <= int_max -----> int - * int_max < n <= dbl_max -----> double - * dbl_max < n -----> long long - */ - -TEST(BSONObjBuilderTest, AppendIntOrLL) { - struct { - long long v; - BSONType t; - } data[] = {{0, mongo::NumberInt}, - {-100, mongo::NumberInt}, - {100, mongo::NumberInt}, - {-(maxInt / 2 - 1), mongo::NumberInt}, - {maxInt / 2 - 1, mongo::NumberInt}, - {-(maxInt / 2), mongo::NumberLong}, - {maxInt / 2, mongo::NumberLong}, - {minEncodableInt, mongo::NumberLong}, - {maxEncodableInt, mongo::NumberLong}, - {minEncodableInt - 1, mongo::NumberLong}, - {maxEncodableInt + 1, mongo::NumberLong}, - {minInt, mongo::NumberLong}, - {maxInt, mongo::NumberLong}, - {minInt - 1, mongo::NumberLong}, - {maxInt + 1, mongo::NumberLong}, - {minLongLong, mongo::NumberLong}, - {maxLongLong, mongo::NumberLong}, - {0, mongo::Undefined}}; - for (int i = 0; data[i].t != mongo::Undefined; i++) { - long long v = data[i].v; - BSONObjBuilder b; - b.appendIntOrLL("a", v); - BSONObj o = b.obj(); - ASSERT_EQUALS(o.nFields(), 1); - BSONElement e = o.getField("a"); - long long n = e.numberLong(); - ASSERT_EQUALS(n, v); - assertBSONTypeEquals(e.type(), data[i].t, v, i); - } -} - -/** - * current conversion ranges in appendNumber(size_t n) - * dbl/int max/min in comments refer to max/min encodable constants - * 0 <= n <= int_max -----> int - * int_max < n -----> long long - */ - -TEST(BSONObjBuilderTest, AppendNumberSizeT) { - struct { - size_t v; - BSONType t; - } data[] = {{0, mongo::NumberInt}, - {100, mongo::NumberInt}, - {maxEncodableInt, mongo::NumberInt}, - {maxEncodableInt + 1, mongo::NumberLong}, - {size_t(maxInt), mongo::NumberLong}, - {size_t(maxInt) + 1U, mongo::NumberLong}, - {(std::numeric_limits::max)(), mongo::NumberLong}, - {0, mongo::Undefined}}; - for (int i = 0; data[i].t != mongo::Undefined; i++) { - size_t v = data[i].v; - BSONObjBuilder b; - b.appendNumber("a", v); - BSONObj o = b.obj(); - ASSERT_EQUALS(o.nFields(), 1); - BSONElement e = o.getField("a"); - size_t n = e.numberLong(); - ASSERT_EQUALS(n, v); - assertBSONTypeEquals(e.type(), data[i].t, v, i); - } + MONGO_STATIC_ASSERT(!isUnsignedAppendable::value); } /** * current conversion ranges in appendNumber(long long n) - * dbl/int max/min in comments refer to max/min encodable constants - * n < dbl_min -----> long long - * dbl_min <= n < int_min -----> double + * int max/min in comments refer to max/min encodable constants + * n < int_min -----> long long * int_min <= n <= int_max -----> int - * int_max < n <= dbl_max -----> double - * dbl_max < n -----> long long + * int_max < n -----> long long */ TEST(BSONObjBuilderTest, AppendNumberLongLong) { @@ -183,16 +102,12 @@ TEST(BSONObjBuilderTest, AppendNumberLongLong) { } data[] = {{0, mongo::NumberInt}, {-100, mongo::NumberInt}, {100, mongo::NumberInt}, - {minEncodableInt, mongo::NumberInt}, - {maxEncodableInt, mongo::NumberInt}, - {minEncodableInt - 1, mongo::NumberDouble}, - {maxEncodableInt + 1, mongo::NumberDouble}, - {minInt, mongo::NumberDouble}, - {maxInt, mongo::NumberDouble}, - {minInt - 1, mongo::NumberDouble}, - {maxInt + 1, mongo::NumberDouble}, - {minEncodableDouble, mongo::NumberDouble}, - {maxEncodableDouble, mongo::NumberDouble}, + {minInt, mongo::NumberInt}, + {maxInt, mongo::NumberInt}, + {minInt - 1, mongo::NumberLong}, + {maxInt + 1, mongo::NumberLong}, + {minEncodableDouble, mongo::NumberLong}, + {maxEncodableDouble, mongo::NumberLong}, {minEncodableDouble - 1, mongo::NumberLong}, {maxEncodableDouble + 1, mongo::NumberLong}, {minDouble, mongo::NumberLong}, diff --git a/src/mongo/db/commands/drop_indexes.cpp b/src/mongo/db/commands/drop_indexes.cpp index 8d1ba85b343..85d1c56b929 100644 --- a/src/mongo/db/commands/drop_indexes.cpp +++ b/src/mongo/db/commands/drop_indexes.cpp @@ -252,7 +252,7 @@ public: } } - result.appendNumber("nIndexesWas", all.size()); + result.appendNumber("nIndexesWas", static_cast(all.size())); std::unique_ptr indexer = std::make_unique(); indexer->setIndexBuildMethod(IndexBuildMethod::kForeground); diff --git a/src/mongo/db/commands/fail_point_cmd.cpp b/src/mongo/db/commands/fail_point_cmd.cpp index 47ce52bf3f1..0940c811d5a 100644 --- a/src/mongo/db/commands/fail_point_cmd.cpp +++ b/src/mongo/db/commands/fail_point_cmd.cpp @@ -101,7 +101,7 @@ public: BSONObjBuilder& result) override { const std::string failPointName(cmdObj.firstElement().str()); const auto timesEntered = setGlobalFailPoint(failPointName, cmdObj); - result.appendIntOrLL("count", timesEntered); + result.appendNumber("count", timesEntered); return true; } }; diff --git a/src/mongo/db/commands/generic_servers.cpp b/src/mongo/db/commands/generic_servers.cpp index 342acc56b63..e25588af7a4 100644 --- a/src/mongo/db/commands/generic_servers.cpp +++ b/src/mongo/db/commands/generic_servers.cpp @@ -279,7 +279,8 @@ public: } typename RamLogType::LineIterator rl(ramlog); - result.appendNumber("totalLinesWritten", rl.getTotalLinesWritten()); + result.appendNumber("totalLinesWritten", + static_cast(rl.getTotalLinesWritten())); BSONArrayBuilder arr(result.subarrayStart("log")); while (rl.more()) diff --git a/src/mongo/db/curop.cpp b/src/mongo/db/curop.cpp index 3898a2f98ab..6a2e0aead94 100644 --- a/src/mongo/db/curop.cpp +++ b/src/mongo/db/curop.cpp @@ -1269,7 +1269,7 @@ void OpDebug::append(OperationContext* opCtx, b.append("remoteOpWaitMillis", durationCount(*remoteOpWaitTime)); } - b.appendIntOrLL("millis", durationCount(executionTime)); + b.appendNumber("millis", durationCount(executionTime)); if (!curop.getPlanSummary().empty()) { b.append("planSummary", curop.getPlanSummary()); @@ -1546,10 +1546,10 @@ std::function OpDebug::appendStaged(StringSet requ // the profiler (OpDebug::append) and the log file (OpDebug::report), so for the profile filter // we support both names. addIfNeeded("millis", [](auto field, auto args, auto& b) { - b.appendIntOrLL(field, durationCount(args.op.executionTime)); + b.appendNumber(field, durationCount(args.op.executionTime)); }); addIfNeeded("durationMillis", [](auto field, auto args, auto& b) { - b.appendIntOrLL(field, durationCount(args.op.executionTime)); + b.appendNumber(field, durationCount(args.op.executionTime)); }); addIfNeeded("planSummary", [](auto field, auto args, auto& b) { diff --git a/src/mongo/db/exec/sbe/stages/branch.cpp b/src/mongo/db/exec/sbe/stages/branch.cpp index 36715084bd9..90d07536f80 100644 --- a/src/mongo/db/exec/sbe/stages/branch.cpp +++ b/src/mongo/db/exec/sbe/stages/branch.cpp @@ -184,11 +184,13 @@ std::unique_ptr BranchStage::getStats(bool includeDebugInfo) con if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendNumber("numTested", _specificStats.numTested); - bob.appendNumber("thenBranchOpens", _specificStats.thenBranchOpens); - bob.appendNumber("thenBranchCloses", _specificStats.thenBranchCloses); - bob.appendNumber("elseBranchOpens", _specificStats.elseBranchOpens); - bob.appendNumber("elseBranchCloses", _specificStats.elseBranchCloses); + bob.appendNumber("numTested", static_cast(_specificStats.numTested)); + bob.appendNumber("thenBranchOpens", static_cast(_specificStats.thenBranchOpens)); + bob.appendNumber("thenBranchCloses", + static_cast(_specificStats.thenBranchCloses)); + bob.appendNumber("elseBranchOpens", static_cast(_specificStats.elseBranchOpens)); + bob.appendNumber("elseBranchCloses", + static_cast(_specificStats.elseBranchCloses)); bob.append("filter", DebugPrinter{}.print(_filter->debugPrint())); bob.append("thenSlots", _inputThenVals); bob.append("elseSlots", _inputElseVals); diff --git a/src/mongo/db/exec/sbe/stages/bson_scan.cpp b/src/mongo/db/exec/sbe/stages/bson_scan.cpp index f3222d6c04a..154d7d4552c 100644 --- a/src/mongo/db/exec/sbe/stages/bson_scan.cpp +++ b/src/mongo/db/exec/sbe/stages/bson_scan.cpp @@ -145,7 +145,7 @@ std::unique_ptr BSONScanStage::getStats(bool includeDebugInfo) c if (includeDebugInfo) { BSONObjBuilder bob; if (_recordSlot) { - bob.appendIntOrLL("recordSlot", *_recordSlot); + bob.appendNumber("recordSlot", static_cast(*_recordSlot)); } bob.append("field", _fields); bob.append("outputSlots", _vars); diff --git a/src/mongo/db/exec/sbe/stages/check_bounds.cpp b/src/mongo/db/exec/sbe/stages/check_bounds.cpp index 0b8738a95b5..c1d4707e10a 100644 --- a/src/mongo/db/exec/sbe/stages/check_bounds.cpp +++ b/src/mongo/db/exec/sbe/stages/check_bounds.cpp @@ -140,10 +140,10 @@ std::unique_ptr CheckBoundsStage::getStats(bool includeDebugInfo if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendNumber("seeks", _specificStats.seeks); - bob.appendIntOrLL("inKeySlot", _inKeySlot); - bob.appendIntOrLL("inRecordIdSlot", _inRecordIdSlot); - bob.appendIntOrLL("outSlot", _outSlot); + bob.appendNumber("seeks", static_cast(_specificStats.seeks)); + bob.appendNumber("inKeySlot", static_cast(_inKeySlot)); + bob.appendNumber("inRecordIdSlot", static_cast(_inRecordIdSlot)); + bob.appendNumber("outSlot", static_cast(_outSlot)); ret->debugInfo = bob.obj(); } diff --git a/src/mongo/db/exec/sbe/stages/filter.h b/src/mongo/db/exec/sbe/stages/filter.h index 66760acf2f5..a3ee0355146 100644 --- a/src/mongo/db/exec/sbe/stages/filter.h +++ b/src/mongo/db/exec/sbe/stages/filter.h @@ -138,7 +138,7 @@ public: if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendNumber("numTested", _specificStats.numTested); + bob.appendNumber("numTested", static_cast(_specificStats.numTested)); bob.append("filter", DebugPrinter{}.print(_filter->debugPrint())); ret->debugInfo = bob.obj(); } diff --git a/src/mongo/db/exec/sbe/stages/ix_scan.cpp b/src/mongo/db/exec/sbe/stages/ix_scan.cpp index 233028ab6db..a34fceeac0a 100644 --- a/src/mongo/db/exec/sbe/stages/ix_scan.cpp +++ b/src/mongo/db/exec/sbe/stages/ix_scan.cpp @@ -329,19 +329,19 @@ std::unique_ptr IndexScanStage::getStats(bool includeDebugInfo) if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendNumber("numReads", _specificStats.numReads); - bob.appendNumber("seeks", _specificStats.seeks); + bob.appendNumber("numReads", static_cast(_specificStats.numReads)); + bob.appendNumber("seeks", static_cast(_specificStats.seeks)); if (_recordSlot) { - bob.appendIntOrLL("recordSlot", *_recordSlot); + bob.appendNumber("recordSlot", static_cast(*_recordSlot)); } if (_recordIdSlot) { - bob.appendIntOrLL("recordIdSlot", *_recordIdSlot); + bob.appendNumber("recordIdSlot", static_cast(*_recordIdSlot)); } if (_seekKeySlotLow) { - bob.appendIntOrLL("seekKeySlotLow", *_seekKeySlotLow); + bob.appendNumber("seekKeySlotLow", static_cast(*_seekKeySlotLow)); } if (_seekKeySlotHigh) { - bob.appendIntOrLL("seekKeySlotHigh", *_seekKeySlotHigh); + bob.appendNumber("seekKeySlotHigh", static_cast(*_seekKeySlotHigh)); } bob.append("outputSlots", _vars); bob.append("indexKeysToInclude", _indexKeysToInclude.to_string()); diff --git a/src/mongo/db/exec/sbe/stages/loop_join.cpp b/src/mongo/db/exec/sbe/stages/loop_join.cpp index 0205cd9e2f0..98f0f3e0085 100644 --- a/src/mongo/db/exec/sbe/stages/loop_join.cpp +++ b/src/mongo/db/exec/sbe/stages/loop_join.cpp @@ -166,8 +166,8 @@ std::unique_ptr LoopJoinStage::getStats(bool includeDebugInfo) c if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendNumber("innerOpens", _specificStats.innerOpens); - bob.appendNumber("innerCloses", _specificStats.innerCloses); + bob.appendNumber("innerOpens", static_cast(_specificStats.innerOpens)); + bob.appendNumber("innerCloses", static_cast(_specificStats.innerCloses)); bob.append("outerProjects", _outerProjects); bob.append("outerCorrelated", _outerCorrelated); if (_predicate) { diff --git a/src/mongo/db/exec/sbe/stages/makeobj.cpp b/src/mongo/db/exec/sbe/stages/makeobj.cpp index 7d8c73743bb..2c46aa48f80 100644 --- a/src/mongo/db/exec/sbe/stages/makeobj.cpp +++ b/src/mongo/db/exec/sbe/stages/makeobj.cpp @@ -381,9 +381,9 @@ std::unique_ptr MakeObjStageBase::getStats(bool includeDebugI if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendIntOrLL("objSlot", _objSlot); + bob.appendNumber("objSlot", static_cast(_objSlot)); if (_rootSlot) { - bob.appendIntOrLL("rootSlot", *_rootSlot); + bob.appendNumber("rootSlot", static_cast(*_rootSlot)); } if (_fieldBehavior) { bob.append("fieldBehavior", *_fieldBehavior == FieldBehavior::drop ? "drop" : "keep"); diff --git a/src/mongo/db/exec/sbe/stages/scan.cpp b/src/mongo/db/exec/sbe/stages/scan.cpp index fdc594954a9..8c2a52fbb97 100644 --- a/src/mongo/db/exec/sbe/stages/scan.cpp +++ b/src/mongo/db/exec/sbe/stages/scan.cpp @@ -289,15 +289,15 @@ std::unique_ptr ScanStage::getStats(bool includeDebugInfo) const if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendNumber("numReads", _specificStats.numReads); + bob.appendNumber("numReads", static_cast(_specificStats.numReads)); if (_recordSlot) { - bob.appendIntOrLL("recordSlot", *_recordSlot); + bob.appendNumber("recordSlot", static_cast(*_recordSlot)); } if (_recordIdSlot) { - bob.appendIntOrLL("recordIdSlot", *_recordIdSlot); + bob.appendNumber("recordIdSlot", static_cast(*_recordIdSlot)); } if (_seekKeySlot) { - bob.appendIntOrLL("seekKeySlot", *_seekKeySlot); + bob.appendNumber("seekKeySlot", static_cast(*_seekKeySlot)); } bob.append("fields", _fields); bob.append("outputSlots", _vars); diff --git a/src/mongo/db/exec/sbe/stages/sort.cpp b/src/mongo/db/exec/sbe/stages/sort.cpp index 7126dbea9fc..13bae045aae 100644 --- a/src/mongo/db/exec/sbe/stages/sort.cpp +++ b/src/mongo/db/exec/sbe/stages/sort.cpp @@ -236,8 +236,9 @@ std::unique_ptr SortStage::getStats(bool includeDebugInfo) const if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendIntOrLL("memLimit", _specificStats.maxMemoryUsageBytes); - bob.appendIntOrLL("totalDataSizeSorted", _specificStats.totalDataSizeBytes); + bob.appendNumber("memLimit", static_cast(_specificStats.maxMemoryUsageBytes)); + bob.appendNumber("totalDataSizeSorted", + static_cast(_specificStats.totalDataSizeBytes)); bob.appendBool("usedDisk", _specificStats.spills > 0); BSONObjBuilder childrenBob(bob.subobjStart("orderBySlots")); diff --git a/src/mongo/db/exec/sbe/stages/spool.cpp b/src/mongo/db/exec/sbe/stages/spool.cpp index e0a51b28748..caffc5c77d7 100644 --- a/src/mongo/db/exec/sbe/stages/spool.cpp +++ b/src/mongo/db/exec/sbe/stages/spool.cpp @@ -126,7 +126,7 @@ std::unique_ptr SpoolEagerProducerStage::getStats(bool includeDe if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendIntOrLL("spoolId", _spoolId); + bob.appendNumber("spoolId", static_cast(_spoolId)); bob.append("outputSlots", _vals); ret->debugInfo = bob.obj(); } @@ -273,7 +273,7 @@ std::unique_ptr SpoolLazyProducerStage::getStats(bool includeDeb if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendIntOrLL("spoolId", _spoolId); + bob.appendNumber("spoolId", static_cast(_spoolId)); bob.append("outputSlots", _vals); if (_predicate) { bob.append("filter", DebugPrinter{}.print(_predicate->debugPrint())); diff --git a/src/mongo/db/exec/sbe/stages/spool.h b/src/mongo/db/exec/sbe/stages/spool.h index 995b10076a0..d6eabed2026 100644 --- a/src/mongo/db/exec/sbe/stages/spool.h +++ b/src/mongo/db/exec/sbe/stages/spool.h @@ -225,7 +225,7 @@ public: if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendIntOrLL("spoolId", _spoolId); + bob.appendNumber("spoolId", static_cast(_spoolId)); bob.append("outputSlots", _vals); ret->debugInfo = bob.obj(); } diff --git a/src/mongo/db/exec/sbe/stages/text_match.cpp b/src/mongo/db/exec/sbe/stages/text_match.cpp index 25c2e21c53d..23afc8b5aa0 100644 --- a/src/mongo/db/exec/sbe/stages/text_match.cpp +++ b/src/mongo/db/exec/sbe/stages/text_match.cpp @@ -116,8 +116,8 @@ std::unique_ptr TextMatchStage::getStats(bool includeDebugInfo) if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendIntOrLL("inputSlot", _inputSlot); - bob.appendIntOrLL("outputSlot", _outputSlot); + bob.appendNumber("inputSlot", static_cast(_inputSlot)); + bob.appendNumber("outputSlot", static_cast(_outputSlot)); ret->debugInfo = bob.obj(); } diff --git a/src/mongo/db/exec/sbe/stages/traverse.cpp b/src/mongo/db/exec/sbe/stages/traverse.cpp index 0d87e043aa3..f222e8addc2 100644 --- a/src/mongo/db/exec/sbe/stages/traverse.cpp +++ b/src/mongo/db/exec/sbe/stages/traverse.cpp @@ -274,14 +274,14 @@ std::unique_ptr TraverseStage::getStats(bool includeDebugInfo) c if (includeDebugInfo) { DebugPrinter printer; BSONObjBuilder bob; - bob.appendNumber("innerOpens", _specificStats.innerOpens); - bob.appendNumber("innerCloses", _specificStats.innerCloses); - bob.appendIntOrLL("inputSlot", _inField); - bob.appendIntOrLL("outputSlot", _outField); - bob.appendIntOrLL("outputSlotInner", _outFieldInner); + bob.appendNumber("innerOpens", static_cast(_specificStats.innerOpens)); + bob.appendNumber("innerCloses", static_cast(_specificStats.innerCloses)); + bob.appendNumber("inputSlot", static_cast(_inField)); + bob.appendNumber("outputSlot", static_cast(_outField)); + bob.appendNumber("outputSlotInner", static_cast(_outFieldInner)); bob.append("correlatedSlots", _correlatedSlots); if (_nestedArraysDepth) { - bob.appendNumber("nestedArraysDepth", *_nestedArraysDepth); + bob.appendNumber("nestedArraysDepth", static_cast(*_nestedArraysDepth)); } if (_fold) { bob.append("fold", printer.print(_fold->debugPrint())); diff --git a/src/mongo/db/exec/sbe/stages/unique.cpp b/src/mongo/db/exec/sbe/stages/unique.cpp index a03162ebc35..4437df5908d 100644 --- a/src/mongo/db/exec/sbe/stages/unique.cpp +++ b/src/mongo/db/exec/sbe/stages/unique.cpp @@ -99,8 +99,8 @@ std::unique_ptr UniqueStage::getStats(bool includeDebugInfo) con if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendNumber("dupsTested", _specificStats.dupsTested); - bob.appendNumber("dupsDropped", _specificStats.dupsDropped); + bob.appendNumber("dupsTested", static_cast(_specificStats.dupsTested)); + bob.appendNumber("dupsDropped", static_cast(_specificStats.dupsDropped)); bob.append("keySlots", _keySlots); ret->debugInfo = bob.obj(); } diff --git a/src/mongo/db/exec/sbe/stages/unwind.cpp b/src/mongo/db/exec/sbe/stages/unwind.cpp index 3616517942a..63f3af745d1 100644 --- a/src/mongo/db/exec/sbe/stages/unwind.cpp +++ b/src/mongo/db/exec/sbe/stages/unwind.cpp @@ -166,10 +166,10 @@ std::unique_ptr UnwindStage::getStats(bool includeDebugInfo) con if (includeDebugInfo) { BSONObjBuilder bob; - bob.appendIntOrLL("inputSlot", _inField); - bob.appendIntOrLL("outSlot", _outField); - bob.appendIntOrLL("outIndexSlot", _outIndex); - bob.appendIntOrLL("preserveNullAndEmptyArrays", _preserveNullAndEmptyArrays); + bob.appendNumber("inputSlot", static_cast(_inField)); + bob.appendNumber("outSlot", static_cast(_outField)); + bob.appendNumber("outIndexSlot", static_cast(_outIndex)); + bob.appendNumber("preserveNullAndEmptyArrays", _preserveNullAndEmptyArrays); ret->debugInfo = bob.obj(); } diff --git a/src/mongo/db/matcher/doc_validation_error.cpp b/src/mongo/db/matcher/doc_validation_error.cpp index 164bb3d16c2..95d54a5f0f1 100644 --- a/src/mongo/db/matcher/doc_validation_error.cpp +++ b/src/mongo/db/matcher/doc_validation_error.cpp @@ -465,7 +465,8 @@ void finishLogicalOperatorChildError(const ListOfMatchExpression* expr, if (ctx->haveLatestCompleteError()) { if (operatorsWithOrderedClauses.find(tag) != operatorsWithOrderedClauses.end()) { BSONObjBuilder subBuilder = ctx->getCurrentArrayBuilder().subobjStart(); - subBuilder.appendNumber("index", ctx->getCurrentChildIndex()); + subBuilder.appendNumber("index", + static_cast(ctx->getCurrentChildIndex())); ctx->appendLatestCompleteError(&subBuilder); subBuilder.done(); } else { diff --git a/src/mongo/db/pipeline/accumulator_js_test.cpp b/src/mongo/db/pipeline/accumulator_js_test.cpp index 92e11e592a8..953b4ce475a 100644 --- a/src/mongo/db/pipeline/accumulator_js_test.cpp +++ b/src/mongo/db/pipeline/accumulator_js_test.cpp @@ -230,7 +230,7 @@ TEST_F(MapReduceFixture, InternalJsReduceFailsIfExtraArgumentsAreSpecified) { TEST_F(MapReduceFixture, InternalJsReduceFailsIfEvalArgumentNotOfTypeStringOrCode) { BSONObjBuilder codeTypeInt; - codeTypeInt.appendIntOrLL("eval", 1); + codeTypeInt.appendNumber("eval", 1); codeTypeInt.append("data", BSON("k" << std::string("foo") << "v" << Value(2))); BSONObjBuilder wrapInt; wrapInt.append("$_internalJsReduce", codeTypeInt.obj()); diff --git a/src/mongo/db/pipeline/resume_token.cpp b/src/mongo/db/pipeline/resume_token.cpp index 2272bf1d434..5d3a5e78d4c 100644 --- a/src/mongo/db/pipeline/resume_token.cpp +++ b/src/mongo/db/pipeline/resume_token.cpp @@ -105,7 +105,7 @@ ResumeToken::ResumeToken(const ResumeTokenData& data) { if (data.version >= 1) { builder.appendNumber("", data.tokenType); } - builder.appendNumber("", data.txnOpIndex); + builder.appendNumber("", static_cast(data.txnOpIndex)); if (data.version >= 1) { builder.appendBool("", data.fromInvalidate); } diff --git a/src/mongo/db/query/explain.cpp b/src/mongo/db/query/explain.cpp index 27f52bc020c..b800af89597 100644 --- a/src/mongo/db/query/explain.cpp +++ b/src/mongo/db/query/explain.cpp @@ -168,7 +168,7 @@ void generateSinglePlanExecutionInfo(const PlanExplainer::PlanStatsDetails& deta auto&& [stats, summary] = details; invariant(summary); - out->appendNumber("nReturned", summary->nReturned); + out->appendNumber("nReturned", static_cast(summary->nReturned)); // Time elapsed could might be either precise or approximate. if (totalTimeMillis) { @@ -177,8 +177,8 @@ void generateSinglePlanExecutionInfo(const PlanExplainer::PlanStatsDetails& deta out->appendNumber("executionTimeMillisEstimate", summary->executionTimeMillisEstimate); } - out->appendNumber("totalKeysExamined", summary->totalKeysExamined); - out->appendNumber("totalDocsExamined", summary->totalDocsExamined); + out->appendNumber("totalKeysExamined", static_cast(summary->totalKeysExamined)); + out->appendNumber("totalDocsExamined", static_cast(summary->totalDocsExamined)); if (summary->planFailed) { out->appendBool("failed", true); diff --git a/src/mongo/db/query/plan_explainer_impl.cpp b/src/mongo/db/query/plan_explainer_impl.cpp index 2178af2b530..0319a256e2f 100644 --- a/src/mongo/db/query/plan_explainer_impl.cpp +++ b/src/mongo/db/query/plan_explainer_impl.cpp @@ -213,18 +213,18 @@ void statsToBSON(const PlanStageStats& stats, // Some top-level exec stats get pulled out of the root stage. if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("nReturned", stats.common.advanced); + bob->appendNumber("nReturned", static_cast(stats.common.advanced)); // Include executionTimeMillis if it was recorded. if (stats.common.executionTimeMillis) { bob->appendNumber("executionTimeMillisEstimate", *stats.common.executionTimeMillis); } - bob->appendNumber("works", stats.common.works); - bob->appendNumber("advanced", stats.common.advanced); - bob->appendNumber("needTime", stats.common.needTime); - bob->appendNumber("needYield", stats.common.needYield); - bob->appendNumber("saveState", stats.common.yields); - bob->appendNumber("restoreState", stats.common.unyields); + bob->appendNumber("works", static_cast(stats.common.works)); + bob->appendNumber("advanced", static_cast(stats.common.advanced)); + bob->appendNumber("needTime", static_cast(stats.common.needTime)); + bob->appendNumber("needYield", static_cast(stats.common.needYield)); + bob->appendNumber("saveState", static_cast(stats.common.yields)); + bob->appendNumber("restoreState", static_cast(stats.common.unyields)); if (stats.common.failed) bob->appendBool("failed", stats.common.failed); bob->appendNumber("isEOF", stats.common.isEOF); @@ -235,12 +235,12 @@ void statsToBSON(const PlanStageStats& stats, AndHashStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("memUsage", spec->memUsage); - bob->appendNumber("memLimit", spec->memLimit); + bob->appendNumber("memUsage", static_cast(spec->memUsage)); + bob->appendNumber("memLimit", static_cast(spec->memLimit)); for (size_t i = 0; i < spec->mapAfterChild.size(); ++i) { bob->appendNumber(std::string(str::stream() << "mapAfterChild_" << i), - spec->mapAfterChild[i]); + static_cast(spec->mapAfterChild[i])); } } } else if (STAGE_AND_SORTED == stats.stageType) { @@ -249,7 +249,7 @@ void statsToBSON(const PlanStageStats& stats, if (verbosity >= ExplainOptions::Verbosity::kExecStats) { for (size_t i = 0; i < spec->failedAnd.size(); ++i) { bob->appendNumber(std::string(str::stream() << "failedAnd_" << i), - spec->failedAnd[i]); + static_cast(spec->failedAnd[i])); } } } else if (STAGE_COLLSCAN == stats.stageType) { @@ -268,7 +268,7 @@ void statsToBSON(const PlanStageStats& stats, [&](const char* str, int size) { bob->append("maxRecord", OID::from(str)); }); } if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("docsExamined", spec->docsTested); + bob->appendNumber("docsExamined", static_cast(spec->docsTested)); } } else if (STAGE_COUNT == stats.stageType) { CountStats* spec = static_cast(stats.specific.get()); @@ -281,7 +281,7 @@ void statsToBSON(const PlanStageStats& stats, CountScanStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("keysExamined", spec->keysExamined); + bob->appendNumber("keysExamined", static_cast(spec->keysExamined)); } bob->append("keyPattern", spec->keyPattern); @@ -308,7 +308,7 @@ void statsToBSON(const PlanStageStats& stats, DeleteStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("nWouldDelete", spec->docsDeleted); + bob->appendNumber("nWouldDelete", static_cast(spec->docsDeleted)); } } else if (STAGE_DISTINCT_SCAN == stats.stageType) { DistinctScanStats* spec = static_cast(stats.specific.get()); @@ -335,7 +335,7 @@ void statsToBSON(const PlanStageStats& stats, } if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("keysExamined", spec->keysExamined); + bob->appendNumber("keysExamined", static_cast(spec->keysExamined)); } } else if (STAGE_ENSURE_SORTED == stats.stageType) { EnsureSortedStats* spec = static_cast(stats.specific.get()); @@ -346,8 +346,8 @@ void statsToBSON(const PlanStageStats& stats, } else if (STAGE_FETCH == stats.stageType) { FetchStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("docsExamined", spec->docsExamined); - bob->appendNumber("alreadyHasObj", spec->alreadyHasObj); + bob->appendNumber("docsExamined", static_cast(spec->docsExamined)); + bob->appendNumber("alreadyHasObj", static_cast(spec->alreadyHasObj)); } } else if (STAGE_GEO_NEAR_2D == stats.stageType || STAGE_GEO_NEAR_2DSPHERE == stats.stageType) { NearStats* spec = static_cast(stats.specific.get()); @@ -373,8 +373,8 @@ void statsToBSON(const PlanStageStats& stats, } else if (STAGE_IDHACK == stats.stageType) { IDHackStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("keysExamined", spec->keysExamined); - bob->appendNumber("docsExamined", spec->docsExamined); + bob->appendNumber("keysExamined", static_cast(spec->keysExamined)); + bob->appendNumber("docsExamined", static_cast(spec->docsExamined)); } } else if (STAGE_IXSCAN == stats.stageType) { IndexScanStats* spec = static_cast(stats.specific.get()); @@ -401,21 +401,21 @@ void statsToBSON(const PlanStageStats& stats, } if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("keysExamined", spec->keysExamined); - bob->appendNumber("seeks", spec->seeks); - bob->appendNumber("dupsTested", spec->dupsTested); - bob->appendNumber("dupsDropped", spec->dupsDropped); + bob->appendNumber("keysExamined", static_cast(spec->keysExamined)); + bob->appendNumber("seeks", static_cast(spec->seeks)); + bob->appendNumber("dupsTested", static_cast(spec->dupsTested)); + bob->appendNumber("dupsDropped", static_cast(spec->dupsDropped)); } } else if (STAGE_OR == stats.stageType) { OrStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("dupsTested", spec->dupsTested); - bob->appendNumber("dupsDropped", spec->dupsDropped); + bob->appendNumber("dupsTested", static_cast(spec->dupsTested)); + bob->appendNumber("dupsDropped", static_cast(spec->dupsDropped)); } } else if (STAGE_LIMIT == stats.stageType) { LimitStats* spec = static_cast(stats.specific.get()); - bob->appendNumber("limitAmount", spec->limit); + bob->appendNumber("limitAmount", static_cast(spec->limit)); } else if (isProjectionStageType(stats.stageType)) { ProjectionStats* spec = static_cast(stats.specific.get()); bob->append("transformBy", spec->projObj); @@ -430,24 +430,25 @@ void statsToBSON(const PlanStageStats& stats, ShardingFilterStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("chunkSkips", spec->chunkSkips); + bob->appendNumber("chunkSkips", static_cast(spec->chunkSkips)); } } else if (STAGE_SKIP == stats.stageType) { SkipStats* spec = static_cast(stats.specific.get()); - bob->appendNumber("skipAmount", spec->skip); + bob->appendNumber("skipAmount", static_cast(spec->skip)); } else if (isSortStageType(stats.stageType)) { SortStats* spec = static_cast(stats.specific.get()); bob->append("sortPattern", spec->sortPattern); - bob->appendIntOrLL("memLimit", spec->maxMemoryUsageBytes); + bob->appendNumber("memLimit", static_cast(spec->maxMemoryUsageBytes)); if (spec->limit > 0) { - bob->appendIntOrLL("limitAmount", spec->limit); + bob->appendNumber("limitAmount", static_cast(spec->limit)); } bob->append("type", stats.stageType == STAGE_SORT_SIMPLE ? "simple" : "default"); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendIntOrLL("totalDataSizeSorted", spec->totalDataSizeBytes); + bob->appendNumber("totalDataSizeSorted", + static_cast(spec->totalDataSizeBytes)); bob->appendBool("usedDisk", (spec->spills > 0)); } } else if (STAGE_SORT_MERGE == stats.stageType) { @@ -455,8 +456,8 @@ void statsToBSON(const PlanStageStats& stats, bob->append("sortPattern", spec->sortPattern); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("dupsTested", spec->dupsTested); - bob->appendNumber("dupsDropped", spec->dupsDropped); + bob->appendNumber("dupsTested", static_cast(spec->dupsTested)); + bob->appendNumber("dupsDropped", static_cast(spec->dupsDropped)); } } else if (STAGE_TEXT == stats.stageType) { TextStats* spec = static_cast(stats.specific.get()); @@ -469,21 +470,21 @@ void statsToBSON(const PlanStageStats& stats, TextMatchStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("docsRejected", spec->docsRejected); + bob->appendNumber("docsRejected", static_cast(spec->docsRejected)); } } else if (STAGE_TEXT_OR == stats.stageType) { TextOrStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("docsExamined", spec->fetches); + bob->appendNumber("docsExamined", static_cast(spec->fetches)); } } else if (STAGE_UPDATE == stats.stageType) { UpdateStats* spec = static_cast(stats.specific.get()); if (verbosity >= ExplainOptions::Verbosity::kExecStats) { - bob->appendNumber("nMatched", spec->nMatched); - bob->appendNumber("nWouldModify", spec->nModified); - bob->appendNumber("nWouldUpsert", spec->nUpserted); + bob->appendNumber("nMatched", static_cast(spec->nMatched)); + bob->appendNumber("nWouldModify", static_cast(spec->nModified)); + bob->appendNumber("nWouldUpsert", static_cast(spec->nUpserted)); } } diff --git a/src/mongo/db/query/plan_explainer_sbe.cpp b/src/mongo/db/query/plan_explainer_sbe.cpp index 57184b31a74..850db058638 100644 --- a/src/mongo/db/query/plan_explainer_sbe.cpp +++ b/src/mongo/db/query/plan_explainer_sbe.cpp @@ -53,7 +53,7 @@ void statsToBSON(const QuerySolutionNode* node, } bob->append("stage", stageTypeToString(node->getType())); - bob->appendNumber("planNodeId", static_cast(node->nodeId())); + bob->appendNumber("planNodeId", static_cast(node->nodeId())); // Display the BSON representation of the filter, if there is one. if (node->filter) { @@ -123,7 +123,7 @@ void statsToBSON(const QuerySolutionNode* node, } case STAGE_LIMIT: { auto ln = static_cast(node); - bob->appendIntOrLL("limitAmount", ln->limit); + bob->appendNumber("limitAmount", ln->limit); break; } case STAGE_PROJECTION_DEFAULT: @@ -135,17 +135,17 @@ void statsToBSON(const QuerySolutionNode* node, } case STAGE_SKIP: { auto sn = static_cast(node); - bob->appendIntOrLL("skipAmount", sn->skip); + bob->appendNumber("skipAmount", sn->skip); break; } case STAGE_SORT_SIMPLE: case STAGE_SORT_DEFAULT: { auto sn = static_cast(node); bob->append("sortPattern", sn->pattern); - bob->appendIntOrLL("memLimit", sn->maxMemoryUsageBytes); + bob->appendNumber("memLimit", static_cast(sn->maxMemoryUsageBytes)); if (sn->limit > 0) { - bob->appendIntOrLL("limitAmount", sn->limit); + bob->appendNumber("limitAmount", static_cast(sn->limit)); } bob->append("type", node->getType() == STAGE_SORT_SIMPLE ? "simple" : "default"); @@ -211,19 +211,19 @@ void statsToBSON(const sbe::PlanStageStats* stats, auto stageType = stats->common.stageType; bob->append("stage", stageType); - bob->appendNumber("planNodeId", static_cast(stats->common.nodeId)); + bob->appendNumber("planNodeId", static_cast(stats->common.nodeId)); // Some top-level exec stats get pulled out of the root stage. - bob->appendNumber("nReturned", stats->common.advances); + bob->appendNumber("nReturned", static_cast(stats->common.advances)); // Include executionTimeMillis if it was recorded. if (stats->common.executionTimeMillis) { bob->appendNumber("executionTimeMillisEstimate", *stats->common.executionTimeMillis); } - bob->appendNumber("advances", stats->common.advances); - bob->appendNumber("opens", stats->common.opens); - bob->appendNumber("closes", stats->common.closes); - bob->appendNumber("saveState", stats->common.yields); - bob->appendNumber("restoreState", stats->common.unyields); + bob->appendNumber("advances", static_cast(stats->common.advances)); + bob->appendNumber("opens", static_cast(stats->common.opens)); + bob->appendNumber("closes", static_cast(stats->common.closes)); + bob->appendNumber("saveState", static_cast(stats->common.yields)); + bob->appendNumber("restoreState", static_cast(stats->common.unyields)); bob->appendNumber("isEOF", stats->common.isEOF); // Include any extra debug info if present. diff --git a/src/mongo/db/repl/all_database_cloner.cpp b/src/mongo/db/repl/all_database_cloner.cpp index fe79124d0e3..4987ef3e937 100644 --- a/src/mongo/db/repl/all_database_cloner.cpp +++ b/src/mongo/db/repl/all_database_cloner.cpp @@ -298,8 +298,8 @@ BSONObj AllDatabaseCloner::Stats::toBSON() const { } void AllDatabaseCloner::Stats::append(BSONObjBuilder* builder) const { - builder->appendNumber("databasesToClone", databasesToClone); - builder->appendNumber("databasesCloned", databasesCloned); + builder->appendNumber("databasesToClone", static_cast(databasesToClone)); + builder->appendNumber("databasesCloned", static_cast(databasesCloned)); for (auto&& db : databaseStats) { BSONObjBuilder dbBuilder(builder->subobjStart(db.dbname)); db.append(&dbBuilder); diff --git a/src/mongo/db/repl/apply_ops_test.cpp b/src/mongo/db/repl/apply_ops_test.cpp index a61db70a0b6..faf8be5e827 100644 --- a/src/mongo/db/repl/apply_ops_test.cpp +++ b/src/mongo/db/repl/apply_ops_test.cpp @@ -130,7 +130,7 @@ Status getStatusFromApplyOpsResult(const BSONObj& result) { BSONObjBuilder builder; builder.appendElements(result); auto code = result.getIntField("code"); - builder.appendIntOrLL("ok", code == 0); + builder.appendNumber("ok", code == 0); auto newResult = builder.obj(); return getStatusFromCommandResult(newResult); } diff --git a/src/mongo/db/repl/collection_cloner.cpp b/src/mongo/db/repl/collection_cloner.cpp index 9d85f779fae..35b1ddf6d7b 100644 --- a/src/mongo/db/repl/collection_cloner.cpp +++ b/src/mongo/db/repl/collection_cloner.cpp @@ -524,10 +524,10 @@ BSONObj CollectionCloner::Stats::toBSON() const { } void CollectionCloner::Stats::append(BSONObjBuilder* builder) const { - builder->appendNumber(kDocumentsToCopyFieldName, documentToCopy); - builder->appendNumber(kDocumentsCopiedFieldName, documentsCopied); - builder->appendNumber("indexes", indexes); - builder->appendNumber("fetchedBatches", fetchedBatches); + builder->appendNumber(kDocumentsToCopyFieldName, static_cast(documentToCopy)); + builder->appendNumber(kDocumentsCopiedFieldName, static_cast(documentsCopied)); + builder->appendNumber("indexes", static_cast(indexes)); + builder->appendNumber("fetchedBatches", static_cast(fetchedBatches)); builder->appendNumber("bytesToCopy", bytesToCopy); if (bytesToCopy) { builder->appendNumber("approxBytesCopied", approxBytesCopied); @@ -541,7 +541,7 @@ void CollectionCloner::Stats::append(BSONObjBuilder* builder) const { builder->appendNumber("elapsedMillis", elapsedMillis); } } - builder->appendNumber("receivedBatches", receivedBatches); + builder->appendNumber("receivedBatches", static_cast(receivedBatches)); } } // namespace repl diff --git a/src/mongo/db/repl/database_cloner.cpp b/src/mongo/db/repl/database_cloner.cpp index 3686d5a2cb1..e4c2772e0be 100644 --- a/src/mongo/db/repl/database_cloner.cpp +++ b/src/mongo/db/repl/database_cloner.cpp @@ -194,8 +194,8 @@ BSONObj DatabaseCloner::Stats::toBSON() const { } void DatabaseCloner::Stats::append(BSONObjBuilder* builder) const { - builder->appendNumber("collections", collections); - builder->appendNumber("clonedCollections", clonedCollections); + builder->appendNumber("collections", static_cast(collections)); + builder->appendNumber("clonedCollections", static_cast(clonedCollections)); if (start != Date_t()) { builder->appendDate("start", start); if (end != Date_t()) { diff --git a/src/mongo/db/repl/hello_response.cpp b/src/mongo/db/repl/hello_response.cpp index 89ae3426073..a62463cca33 100644 --- a/src/mongo/db/repl/hello_response.cpp +++ b/src/mongo/db/repl/hello_response.cpp @@ -177,11 +177,11 @@ void HelloResponse::addToBSON(BSONObjBuilder* builder, bool useLegacyResponseFie builder->append(kBuildIndexesFieldName, _buildIndexes); if (_secondaryDelaySecsSet) { if (useLegacyResponseFields) { - builder->appendIntOrLL(kSlaveDelayFieldName, - durationCount(_secondaryDelaySecs)); + builder->appendNumber(kSlaveDelayFieldName, + durationCount(_secondaryDelaySecs)); } else { - builder->appendIntOrLL(kSecondaryDelaySecsFieldName, - durationCount(_secondaryDelaySecs)); + builder->appendNumber(kSecondaryDelaySecsFieldName, + durationCount(_secondaryDelaySecs)); } } if (_tagsSet) { diff --git a/src/mongo/db/repl/initial_syncer.cpp b/src/mongo/db/repl/initial_syncer.cpp index 8de8e05938b..c9bfb2c06dd 100644 --- a/src/mongo/db/repl/initial_syncer.cpp +++ b/src/mongo/db/repl/initial_syncer.cpp @@ -440,7 +440,7 @@ void InitialSyncer::_appendInitialSyncProgressMinimal_inlock(BSONObjBuilder* bob (long long)remainingInitialSyncEstimatedMillis); } } - bob->appendNumber("appliedOps", _initialSyncState->appliedOps); + bob->appendNumber("appliedOps", static_cast(_initialSyncState->appliedOps)); if (!_initialSyncState->beginApplyingTimestamp.isNull()) { bob->append("initialSyncOplogStart", _initialSyncState->beginApplyingTimestamp); } diff --git a/src/mongo/db/repl/primary_only_service.cpp b/src/mongo/db/repl/primary_only_service.cpp index 6973cbb119d..ddfab769e8c 100644 --- a/src/mongo/db/repl/primary_only_service.cpp +++ b/src/mongo/db/repl/primary_only_service.cpp @@ -218,7 +218,8 @@ void PrimaryOnlyServiceRegistry::onStepDown() { void PrimaryOnlyServiceRegistry::reportServiceInfoForServerStatus(BSONObjBuilder* result) noexcept { BSONObjBuilder subBuilder(result->subobjStart("primaryOnlyServices")); for (auto& service : _servicesByName) { - subBuilder.appendNumber(service.first, service.second->getNumberOfInstances()); + subBuilder.appendNumber(service.first, + static_cast(service.second->getNumberOfInstances())); } } diff --git a/src/mongo/db/repl/repl_set_config_validators.h b/src/mongo/db/repl/repl_set_config_validators.h index 70c01988412..c02cfb1ee15 100644 --- a/src/mongo/db/repl/repl_set_config_validators.h +++ b/src/mongo/db/repl/repl_set_config_validators.h @@ -71,7 +71,7 @@ Status validateReplicaSetIdNotNull(OID replicaSetId); * For serialization and deserialization of certain values in the IDL. */ inline void smallExactInt64Append(std::int64_t value, StringData fieldName, BSONObjBuilder* bob) { - bob->appendIntOrLL(fieldName, value); + bob->appendNumber(fieldName, static_cast(value)); } inline std::int64_t parseSmallExactInt64(const BSONElement& element) { diff --git a/src/mongo/db/repl/repl_set_heartbeat_args_v1.cpp b/src/mongo/db/repl/repl_set_heartbeat_args_v1.cpp index 8169f1e3760..a8dfb7ec6ae 100644 --- a/src/mongo/db/repl/repl_set_heartbeat_args_v1.cpp +++ b/src/mongo/db/repl/repl_set_heartbeat_args_v1.cpp @@ -169,14 +169,14 @@ void ReplSetHeartbeatArgsV1::addToBSON(BSONObjBuilder* builder) const { if (_checkEmpty) { builder->append(kCheckEmptyFieldName, _checkEmpty); } - builder->appendIntOrLL(kConfigVersionFieldName, _configVersion); - builder->appendIntOrLL(kConfigTermFieldName, _configTerm); + builder->appendNumber(kConfigVersionFieldName, _configVersion); + builder->appendNumber(kConfigTermFieldName, _configTerm); if (_hasHeartbeatVersion) { - builder->appendIntOrLL(kHeartbeatVersionFieldName, _hasHeartbeatVersion); + builder->appendNumber(kHeartbeatVersionFieldName, _hasHeartbeatVersion); } builder->append(kSenderHostFieldName, _hasSender ? _senderHost.toString() : ""); - builder->appendIntOrLL(kSenderIdFieldName, _senderId); - builder->appendIntOrLL(kTermFieldName, _term); + builder->appendNumber(kSenderIdFieldName, _senderId); + builder->appendNumber(kTermFieldName, _term); // TODO SERVER-49382: Remove this FCV check when 5.0 becomes last-lts. if (serverGlobalParams.featureCompatibility.isVersionInitialized() && diff --git a/src/mongo/db/repl/repl_set_heartbeat_response.cpp b/src/mongo/db/repl/repl_set_heartbeat_response.cpp index c77d454f00c..ea169eae737 100644 --- a/src/mongo/db/repl/repl_set_heartbeat_response.cpp +++ b/src/mongo/db/repl/repl_set_heartbeat_response.cpp @@ -77,7 +77,7 @@ void ReplSetHeartbeatResponse::addToBSON(BSONObjBuilder* builder) const { *builder << kConfigFieldName << _config.toBSON(); } if (_stateSet) { - builder->appendIntOrLL(kMemberStateFieldName, _state.s); + builder->appendNumber(kMemberStateFieldName, _state.s); } if (_configVersion != -1) { *builder << kConfigVersionFieldName << _configVersion; diff --git a/src/mongo/db/repl/repl_set_request_votes_args.cpp b/src/mongo/db/repl/repl_set_request_votes_args.cpp index 7978b26987f..10f815d6edc 100644 --- a/src/mongo/db/repl/repl_set_request_votes_args.cpp +++ b/src/mongo/db/repl/repl_set_request_votes_args.cpp @@ -125,9 +125,9 @@ void ReplSetRequestVotesArgs::addToBSON(BSONObjBuilder* builder) const { builder->append(kSetNameFieldName, _setName); builder->append(kDryRunFieldName, _dryRun); builder->append(kTermFieldName, _term); - builder->appendIntOrLL(kCandidateIndexFieldName, _candidateIndex); - builder->appendIntOrLL(kConfigVersionFieldName, _cfgVer); - builder->appendIntOrLL(kConfigTermFieldName, _cfgTerm); + builder->appendNumber(kCandidateIndexFieldName, _candidateIndex); + builder->appendNumber(kConfigVersionFieldName, _cfgVer); + builder->appendNumber(kConfigTermFieldName, _cfgTerm); _lastAppliedOpTime.append(builder, kLastAppliedOpTimeFieldName); } diff --git a/src/mongo/db/repl/replication_info.cpp b/src/mongo/db/repl/replication_info.cpp index 269be023d79..79d74e4329d 100644 --- a/src/mongo/db/repl/replication_info.cpp +++ b/src/mongo/db/repl/replication_info.cpp @@ -397,9 +397,10 @@ public: } result.appendNumber(HelloCommandReply::kMaxBsonObjectSizeFieldName, BSONObjMaxUserSize); - result.appendNumber(HelloCommandReply::kMaxMessageSizeBytesFieldName, MaxMessageSizeBytes); + result.appendNumber(HelloCommandReply::kMaxMessageSizeBytesFieldName, + static_cast(MaxMessageSizeBytes)); result.appendNumber(HelloCommandReply::kMaxWriteBatchSizeFieldName, - write_ops::kMaxWriteBatchSize); + static_cast(write_ops::kMaxWriteBatchSize)); result.appendDate(HelloCommandReply::kLocalTimeFieldName, jsTime()); result.append(HelloCommandReply::kLogicalSessionTimeoutMinutesFieldName, localLogicalSessionTimeoutMinutes); diff --git a/src/mongo/db/repl/tenant_all_database_cloner.cpp b/src/mongo/db/repl/tenant_all_database_cloner.cpp index c60df54b868..85c580ef3b7 100644 --- a/src/mongo/db/repl/tenant_all_database_cloner.cpp +++ b/src/mongo/db/repl/tenant_all_database_cloner.cpp @@ -256,7 +256,7 @@ BSONObj TenantAllDatabaseCloner::Stats::toBSON() const { } void TenantAllDatabaseCloner::Stats::append(BSONObjBuilder* builder) const { - builder->appendNumber("databasesCloned", databasesCloned); + builder->appendNumber("databasesCloned", static_cast(databasesCloned)); for (auto&& db : databaseStats) { BSONObjBuilder dbBuilder(builder->subobjStart(db.dbname)); db.append(&dbBuilder); diff --git a/src/mongo/db/repl/tenant_collection_cloner.cpp b/src/mongo/db/repl/tenant_collection_cloner.cpp index 3725f3bbbba..9a724df617a 100644 --- a/src/mongo/db/repl/tenant_collection_cloner.cpp +++ b/src/mongo/db/repl/tenant_collection_cloner.cpp @@ -549,10 +549,10 @@ BSONObj TenantCollectionCloner::Stats::toBSON() const { } void TenantCollectionCloner::Stats::append(BSONObjBuilder* builder) const { - builder->appendNumber(kDocumentsToCopyFieldName, documentToCopy); - builder->appendNumber(kDocumentsCopiedFieldName, documentsCopied); - builder->appendNumber("indexes", indexes); - builder->appendNumber("insertedBatches", insertedBatches); + builder->appendNumber(kDocumentsToCopyFieldName, static_cast(documentToCopy)); + builder->appendNumber(kDocumentsCopiedFieldName, static_cast(documentsCopied)); + builder->appendNumber("indexes", static_cast(indexes)); + builder->appendNumber("insertedBatches", static_cast(insertedBatches)); if (start != Date_t()) { builder->appendDate("start", start); if (end != Date_t()) { @@ -562,7 +562,7 @@ void TenantCollectionCloner::Stats::append(BSONObjBuilder* builder) const { builder->appendNumber("elapsedMillis", elapsedMillis); } } - builder->appendNumber("receivedBatches", receivedBatches); + builder->appendNumber("receivedBatches", static_cast(receivedBatches)); } Timestamp TenantCollectionCloner::getOperationTime_forTest() { diff --git a/src/mongo/db/repl/tenant_database_cloner.cpp b/src/mongo/db/repl/tenant_database_cloner.cpp index 1cc44329cb3..81b1a7c0eec 100644 --- a/src/mongo/db/repl/tenant_database_cloner.cpp +++ b/src/mongo/db/repl/tenant_database_cloner.cpp @@ -322,8 +322,8 @@ BSONObj TenantDatabaseCloner::Stats::toBSON() const { } void TenantDatabaseCloner::Stats::append(BSONObjBuilder* builder) const { - builder->appendNumber("collections", collections); - builder->appendNumber("clonedCollections", clonedCollections); + builder->appendNumber("collections", static_cast(collections)); + builder->appendNumber("clonedCollections", static_cast(clonedCollections)); if (start != Date_t()) { builder->appendDate("start", start); if (end != Date_t()) { diff --git a/src/mongo/db/repl/topology_coordinator.cpp b/src/mongo/db/repl/topology_coordinator.cpp index e7bf9e67d2e..ede2650481d 100644 --- a/src/mongo/db/repl/topology_coordinator.cpp +++ b/src/mongo/db/repl/topology_coordinator.cpp @@ -1872,8 +1872,8 @@ void TopologyCoordinator::prepareStatusResponse(const ReplSetStatusArgs& rsStatu bb.appendDate("electionDate", Date_t::fromDurationSinceEpoch(Seconds(_electionTime.getSecs()))); } - bb.appendIntOrLL("configVersion", _rsConfig.getConfigVersion()); - bb.appendIntOrLL("configTerm", _rsConfig.getConfigTerm()); + bb.appendNumber("configVersion", static_cast(_rsConfig.getConfigVersion())); + bb.appendNumber("configTerm", static_cast(_rsConfig.getConfigTerm())); bb.append("self", true); bb.append("lastHeartbeatMessage", ""); membersOut.push_back(bb.obj()); @@ -1935,8 +1935,8 @@ void TopologyCoordinator::prepareStatusResponse(const ReplSetStatusArgs& rsStatu "electionDate", Date_t::fromDurationSinceEpoch(Seconds(it->getElectionTime().getSecs()))); } - bb.appendIntOrLL("configVersion", it->getConfigVersion()); - bb.appendIntOrLL("configTerm", it->getConfigTerm()); + bb.appendNumber("configVersion", it->getConfigVersion()); + bb.appendNumber("configTerm", it->getConfigTerm()); membersOut.push_back(bb.obj()); } } diff --git a/src/mongo/db/storage/devnull/ephemeral_catalog_record_store.cpp b/src/mongo/db/storage/devnull/ephemeral_catalog_record_store.cpp index 704394515d6..f39c325863d 100644 --- a/src/mongo/db/storage/devnull/ephemeral_catalog_record_store.cpp +++ b/src/mongo/db/storage/devnull/ephemeral_catalog_record_store.cpp @@ -558,8 +558,8 @@ void EphemeralForTestRecordStore::appendCustomStats(OperationContext* opCtx, double scale) const { result->appendBool("capped", _isCapped); if (_isCapped) { - result->appendIntOrLL("max", _cappedMaxDocs); - result->appendIntOrLL("maxSize", _cappedMaxSize / scale); + result->appendNumber("max", static_cast(_cappedMaxDocs)); + result->appendNumber("maxSize", _cappedMaxSize / scale); } } diff --git a/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp b/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp index c8360651df7..4787d972833 100644 --- a/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp +++ b/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.cpp @@ -290,8 +290,8 @@ void RecordStore::appendCustomStats(OperationContext* opCtx, double scale) const { result->appendBool("capped", _isCapped); if (_isCapped) { - result->appendIntOrLL("max", _cappedMaxDocs); - result->appendIntOrLL("maxSize", _cappedMaxSize / scale); + result->appendNumber("max", static_cast(_cappedMaxDocs)); + result->appendNumber("maxSize", static_cast(_cappedMaxSize / scale)); } } diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp index a07dfe8335b..7577075fc40 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp @@ -1953,10 +1953,10 @@ void WiredTigerRecordStore::appendCustomStats(OperationContext* opCtx, double scale) const { result->appendBool("capped", _isCapped); if (_isCapped) { - result->appendIntOrLL("max", _cappedMaxDocs); - result->appendIntOrLL("maxSize", static_cast(_cappedMaxSize / scale)); - result->appendIntOrLL("sleepCount", _cappedSleep.load()); - result->appendIntOrLL("sleepMS", _cappedSleepMS.load()); + result->appendNumber("max", static_cast(_cappedMaxDocs)); + result->appendNumber("maxSize", static_cast(_cappedMaxSize / scale)); + result->appendNumber("sleepCount", _cappedSleep.load()); + result->appendNumber("sleepMS", _cappedSleepMS.load()); } WiredTigerSession* session = WiredTigerRecoveryUnit::get(opCtx)->getSessionNoTxn(); WT_SESSION* s = session->getSession(); diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp index c5c1ced6c79..2d0b7998e5d 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp @@ -303,7 +303,7 @@ Status WiredTigerUtil::getApplicationMetadata(OperationContext* opCtx, bob->appendBool(key, valueItem.val); break; case WT_CONFIG_ITEM::WT_CONFIG_ITEM_NUM: - bob->appendIntOrLL(key, valueItem.val); + bob->appendNumber(key, static_cast(valueItem.val)); break; default: bob->append(key, StringData(valueItem.str, valueItem.len)); diff --git a/src/mongo/db/timeseries/bucket_catalog.cpp b/src/mongo/db/timeseries/bucket_catalog.cpp index b5b01b68631..489a073b6e1 100644 --- a/src/mongo/db/timeseries/bucket_catalog.cpp +++ b/src/mongo/db/timeseries/bucket_catalog.cpp @@ -1019,9 +1019,11 @@ public: auto lk = bucketCatalog._lockShared(); BSONObjBuilder builder; - builder.appendNumber("numBuckets", bucketCatalog._buckets.size()); - builder.appendNumber("numOpenBuckets", bucketCatalog._bucketIds.size()); - builder.appendNumber("numIdleBuckets", bucketCatalog._numberOfIdleBuckets()); + builder.appendNumber("numBuckets", static_cast(bucketCatalog._buckets.size())); + builder.appendNumber("numOpenBuckets", + static_cast(bucketCatalog._bucketIds.size())); + builder.appendNumber("numIdleBuckets", + static_cast(bucketCatalog._numberOfIdleBuckets())); builder.appendNumber("memoryUsage", static_cast(bucketCatalog._memoryUsage.load())); return builder.obj(); diff --git a/src/mongo/dbtests/jsobjtests.cpp b/src/mongo/dbtests/jsobjtests.cpp index c3e754b8771..99f984e0c87 100644 --- a/src/mongo/dbtests/jsobjtests.cpp +++ b/src/mongo/dbtests/jsobjtests.cpp @@ -561,49 +561,6 @@ public: } }; -struct AppendIntOrLL { - void run() { - const long long billion = 1000 * 1000 * 1000; - - BSONObjBuilder b; - b.appendIntOrLL("i1", 1); - b.appendIntOrLL("i2", -1); - b.appendIntOrLL("i3", 1 * billion); - b.appendIntOrLL("i4", -1 * billion); - - b.appendIntOrLL("L1", 2 * billion); - b.appendIntOrLL("L2", -2 * billion); - b.appendIntOrLL("L3", 4 * billion); - b.appendIntOrLL("L4", -4 * billion); - b.appendIntOrLL("L5", 16 * billion); - b.appendIntOrLL("L6", -16 * billion); - - BSONObj o = b.obj(); - - ASSERT(o["i1"].type() == NumberInt); - ASSERT(o["i1"].number() == 1); - ASSERT(o["i2"].type() == NumberInt); - ASSERT(o["i2"].number() == -1); - ASSERT(o["i3"].type() == NumberInt); - ASSERT(o["i3"].number() == 1 * billion); - ASSERT(o["i4"].type() == NumberInt); - ASSERT(o["i4"].number() == -1 * billion); - - ASSERT(o["L1"].isNumber()); - ASSERT(o["L1"].number() == 2 * billion); - ASSERT(o["L2"].isNumber()); - ASSERT(o["L2"].number() == -2 * billion); - ASSERT(o["L3"].type() == NumberLong); - ASSERT(o["L3"].number() == 4 * billion); - ASSERT(o["L4"].type() == NumberLong); - ASSERT(o["L4"].number() == -4 * billion); - ASSERT(o["L5"].type() == NumberLong); - ASSERT(o["L5"].number() == 16 * billion); - ASSERT(o["L6"].type() == NumberLong); - ASSERT(o["L6"].number() == -16 * billion); - } -}; - struct AppendNumber { void run() { BSONObjBuilder b; @@ -619,7 +576,7 @@ struct AppendNumber { ASSERT(o["a"].type() == NumberInt); ASSERT(o["b"].type() == NumberDouble); ASSERT(o["c"].type() == NumberInt); - ASSERT(o["d"].type() == NumberDouble); + ASSERT(o["d"].type() == NumberLong); ASSERT(o["e"].type() == NumberLong); ASSERT(o["f"].type() == NumberDecimal); } @@ -2008,7 +1965,6 @@ public: add(); add(); add(); - add(); add(); add(); add(); diff --git a/src/mongo/dbtests/mock/mock_replica_set.cpp b/src/mongo/dbtests/mock/mock_replica_set.cpp index 53fd2d0a8cd..358c880de45 100644 --- a/src/mongo/dbtests/mock/mock_replica_set.cpp +++ b/src/mongo/dbtests/mock/mock_replica_set.cpp @@ -249,8 +249,8 @@ void MockReplicaSet::mockIsMasterCmd() { } if (member->getSecondaryDelay().count()) { - builder.appendIntOrLL("secondaryDelaySecs", - durationCount(member->getSecondaryDelay())); + builder.appendNumber("secondaryDelaySecs", + durationCount(member->getSecondaryDelay())); } if (member->isHidden()) { diff --git a/src/mongo/embedded/embedded_ismaster.cpp b/src/mongo/embedded/embedded_ismaster.cpp index 94f1a557ee1..35568085720 100644 --- a/src/mongo/embedded/embedded_ismaster.cpp +++ b/src/mongo/embedded/embedded_ismaster.cpp @@ -76,8 +76,9 @@ public: result.appendBool("ismaster", true); result.appendNumber("maxBsonObjectSize", BSONObjMaxUserSize); - result.appendNumber("maxMessageSizeBytes", MaxMessageSizeBytes); - result.appendNumber("maxWriteBatchSize", write_ops::kMaxWriteBatchSize); + result.appendNumber("maxMessageSizeBytes", static_cast(MaxMessageSizeBytes)); + result.appendNumber("maxWriteBatchSize", + static_cast(write_ops::kMaxWriteBatchSize)); result.appendDate("localTime", jsTime()); result.append("logicalSessionTimeoutMinutes", localLogicalSessionTimeoutMinutes); result.appendNumber("connectionId", opCtx->getClient()->getConnectionId()); diff --git a/src/mongo/executor/connection_pool_stats.cpp b/src/mongo/executor/connection_pool_stats.cpp index 06694697113..843a19a1a27 100644 --- a/src/mongo/executor/connection_pool_stats.cpp +++ b/src/mongo/executor/connection_pool_stats.cpp @@ -77,20 +77,21 @@ void ConnectionPoolStats::updateStatsForHost(std::string pool, } void ConnectionPoolStats::appendToBSON(mongo::BSONObjBuilder& result, bool forFTDC) { - result.appendNumber("totalInUse", totalInUse); - result.appendNumber("totalAvailable", totalAvailable); - result.appendNumber("totalCreated", totalCreated); - result.appendNumber("totalRefreshing", totalRefreshing); + result.appendNumber("totalInUse", static_cast(totalInUse)); + result.appendNumber("totalAvailable", static_cast(totalAvailable)); + result.appendNumber("totalCreated", static_cast(totalCreated)); + result.appendNumber("totalRefreshing", static_cast(totalRefreshing)); if (forFTDC) { BSONObjBuilder poolBuilder(result.subobjStart("connectionsInUsePerPool")); for (const auto& pool : statsByPool) { BSONObjBuilder poolInfo(poolBuilder.subobjStart(pool.first)); auto& poolStats = pool.second; - poolInfo.appendNumber("poolInUse", poolStats.inUse); + poolInfo.appendNumber("poolInUse", static_cast(poolStats.inUse)); for (const auto& host : poolStats.statsByHost) { auto hostStats = host.second; - poolInfo.appendNumber(host.first.toString(), hostStats.inUse); + poolInfo.appendNumber(host.first.toString(), + static_cast(hostStats.inUse)); } } @@ -106,18 +107,18 @@ void ConnectionPoolStats::appendToBSON(mongo::BSONObjBuilder& result, bool forFT for (const auto& pool : statsByPool) { BSONObjBuilder poolInfo(poolBuilder.subobjStart(pool.first)); auto& poolStats = pool.second; - poolInfo.appendNumber("poolInUse", poolStats.inUse); - poolInfo.appendNumber("poolAvailable", poolStats.available); - poolInfo.appendNumber("poolCreated", poolStats.created); - poolInfo.appendNumber("poolRefreshing", poolStats.refreshing); + poolInfo.appendNumber("poolInUse", static_cast(poolStats.inUse)); + poolInfo.appendNumber("poolAvailable", static_cast(poolStats.available)); + poolInfo.appendNumber("poolCreated", static_cast(poolStats.created)); + poolInfo.appendNumber("poolRefreshing", static_cast(poolStats.refreshing)); for (const auto& host : poolStats.statsByHost) { BSONObjBuilder hostInfo(poolInfo.subobjStart(host.first.toString())); auto& hostStats = host.second; - hostInfo.appendNumber("inUse", hostStats.inUse); - hostInfo.appendNumber("available", hostStats.available); - hostInfo.appendNumber("created", hostStats.created); - hostInfo.appendNumber("refreshing", hostStats.refreshing); + hostInfo.appendNumber("inUse", static_cast(hostStats.inUse)); + hostInfo.appendNumber("available", static_cast(hostStats.available)); + hostInfo.appendNumber("created", static_cast(hostStats.created)); + hostInfo.appendNumber("refreshing", static_cast(hostStats.refreshing)); } } } @@ -126,10 +127,10 @@ void ConnectionPoolStats::appendToBSON(mongo::BSONObjBuilder& result, bool forFT for (auto&& host : statsByHost) { BSONObjBuilder hostInfo(hostBuilder.subobjStart(host.first.toString())); auto hostStats = host.second; - hostInfo.appendNumber("inUse", hostStats.inUse); - hostInfo.appendNumber("available", hostStats.available); - hostInfo.appendNumber("created", hostStats.created); - hostInfo.appendNumber("refreshing", hostStats.refreshing); + hostInfo.appendNumber("inUse", static_cast(hostStats.inUse)); + hostInfo.appendNumber("available", static_cast(hostStats.available)); + hostInfo.appendNumber("created", static_cast(hostStats.created)); + hostInfo.appendNumber("refreshing", static_cast(hostStats.refreshing)); } } } diff --git a/src/mongo/executor/thread_pool_task_executor.cpp b/src/mongo/executor/thread_pool_task_executor.cpp index f81ebd7c9ad..d1787313d76 100644 --- a/src/mongo/executor/thread_pool_task_executor.cpp +++ b/src/mongo/executor/thread_pool_task_executor.cpp @@ -252,16 +252,18 @@ void ThreadPoolTaskExecutor::appendDiagnosticBSON(BSONObjBuilder* b) const { // ThreadPool details // TODO: fill in BSONObjBuilder poolCounters(b->subobjStart("pool")); - poolCounters.appendIntOrLL("inProgressCount", _poolInProgressQueue.size()); + poolCounters.appendNumber("inProgressCount", + static_cast(_poolInProgressQueue.size())); poolCounters.done(); // Queues BSONObjBuilder queues(b->subobjStart("queues")); - queues.appendIntOrLL("networkInProgress", _networkInProgressQueue.size()); - queues.appendIntOrLL("sleepers", _sleepersQueue.size()); + queues.appendNumber("networkInProgress", + static_cast(_networkInProgressQueue.size())); + queues.appendNumber("sleepers", static_cast(_sleepersQueue.size())); queues.done(); - b->appendIntOrLL("unsignaledEvents", _unsignaledEvents.size()); + b->appendNumber("unsignaledEvents", static_cast(_unsignaledEvents.size())); b->append("shuttingDown", _inShutdown_inlock()); b->append("networkInterface", _net->getDiagnosticString()); } diff --git a/src/mongo/idl/basic_types.h b/src/mongo/idl/basic_types.h index 1df3606aecd..35516add195 100644 --- a/src/mongo/idl/basic_types.h +++ b/src/mongo/idl/basic_types.h @@ -179,7 +179,7 @@ public: } auto intVal = stdx::get_if(&_w); invariant(intVal); - builder->appendIntOrLL("w", *intVal); + builder->appendNumber("w", static_cast(*intVal)); } WriteConcernW() : _w{1}, _usedDefault{true} {}; diff --git a/src/mongo/platform/mutex.cpp b/src/mongo/platform/mutex.cpp index eb2501000c2..8766b3dc20b 100644 --- a/src/mongo/platform/mutex.cpp +++ b/src/mongo/platform/mutex.cpp @@ -38,7 +38,7 @@ void Identity::serialize(BSONObjBuilder* bob) const { bob->append("name"_sd, name()); size_t id = index(); - bob->appendNumber("latchId"_sd, id); + bob->appendNumber("latchId"_sd, static_cast(id)); auto& hal = level(); invariant(hal); @@ -48,7 +48,7 @@ void Identity::serialize(BSONObjBuilder* bob) const { invariant(loc); size_t line = loc->line(); bob->append("file"_sd, loc->file_name()); - bob->appendNumber("line"_sd, line); + bob->appendNumber("line"_sd, static_cast(line)); } Mutex::Mutex(std::shared_ptr data) : _data{std::move(data)} { diff --git a/src/mongo/rpc/op_msg_integration_test.cpp b/src/mongo/rpc/op_msg_integration_test.cpp index 9228220d88b..75bd7fa4e65 100644 --- a/src/mongo/rpc/op_msg_integration_test.cpp +++ b/src/mongo/rpc/op_msg_integration_test.cpp @@ -133,7 +133,7 @@ TEST(OpMsg, DocumentSequenceLargeDocumentMultiInsertWorks) { OpMsgBuilder::DocSequenceBuilder sequenceBuilder = msgBuilder.beginDocSequence("documents"); for (size_t docID = 0; docID < 3; docID++) { BSONObjBuilder docBuilder = sequenceBuilder.appendBuilder(); - docBuilder.appendNumber("_id", docID); + docBuilder.appendNumber("_id", static_cast(docID)); std::string data(15000000, 'a'); docBuilder.append("data", std::move(data)); } diff --git a/src/mongo/rpc/reply_builder_test.cpp b/src/mongo/rpc/reply_builder_test.cpp index 3b472bab4f0..63bfbf47386 100644 --- a/src/mongo/rpc/reply_builder_test.cpp +++ b/src/mongo/rpc/reply_builder_test.cpp @@ -101,7 +101,7 @@ BSONObj buildCommand() { << "Bar")); a.done(); - cursorBuilder.appendIntOrLL("id", 1); + cursorBuilder.appendNumber("id", 1); cursorBuilder.append("ns", "test.$cmd.blah"); commandReplyBob.append("cursor", cursorBuilder.done()); return commandReplyBob.obj(); diff --git a/src/mongo/s/commands/cluster_hello_cmd.cpp b/src/mongo/s/commands/cluster_hello_cmd.cpp index 6b8db0c0353..bc28fd4ed60 100644 --- a/src/mongo/s/commands/cluster_hello_cmd.cpp +++ b/src/mongo/s/commands/cluster_hello_cmd.cpp @@ -164,9 +164,10 @@ public: } result.appendNumber(HelloCommandReply::kMaxBsonObjectSizeFieldName, BSONObjMaxUserSize); - result.appendNumber(HelloCommandReply::kMaxMessageSizeBytesFieldName, MaxMessageSizeBytes); + result.appendNumber(HelloCommandReply::kMaxMessageSizeBytesFieldName, + static_cast(MaxMessageSizeBytes)); result.appendNumber(HelloCommandReply::kMaxWriteBatchSizeFieldName, - write_ops::kMaxWriteBatchSize); + static_cast(write_ops::kMaxWriteBatchSize)); result.appendDate(HelloCommandReply::kLocalTimeFieldName, jsTime()); result.append(HelloCommandReply::kLogicalSessionTimeoutMinutesFieldName, localLogicalSessionTimeoutMinutes); diff --git a/src/mongo/s/query/cluster_cursor_manager.cpp b/src/mongo/s/query/cluster_cursor_manager.cpp index 9ebc8c45e38..d5744416e46 100644 --- a/src/mongo/s/query/cluster_cursor_manager.cpp +++ b/src/mongo/s/query/cluster_cursor_manager.cpp @@ -818,12 +818,12 @@ BSONObj ClusterCursorManager::dumpNssToContainerMap() const { BSONObjBuilder nssToContainer(bob.subobjStart("nssToContainer")); for (auto&& [nss, cursorContainer] : _namespaceToContainerMap) { BSONObjBuilder nssBob(nssToContainer.subobjStart(nss.toString())); - nssBob.appendIntOrLL("containerPrefix", - static_cast(cursorContainer.containerPrefix)); + nssBob.appendNumber("containerPrefix", + static_cast(cursorContainer.containerPrefix)); BSONArrayBuilder cursors(nssBob.subarrayStart("cursors")); for (auto&& [cursorId, cursorEntry] : cursorContainer.entryMap) { BSONObjBuilder cursorBob(cursors.subobjStart()); - cursorBob.appendIntOrLL("id", cursorId); + cursorBob.appendNumber("id", cursorId); cursorBob.append("lastActive", cursorEntry.getLastActive()); } } @@ -839,7 +839,7 @@ BSONObj ClusterCursorManager::dumpCursorIdToNssMap() const { BSONArrayBuilder cursorIdPrefixToNss(bob.subarrayStart("cursorIdPrefixToNss")); for (auto&& [cursorIdPrefix, nss] : _cursorIdPrefixToNamespaceMap) { BSONObjBuilder bob(cursorIdPrefixToNss.subobjStart()); - bob.appendIntOrLL("cursorIdPrefix", static_cast(cursorIdPrefix)); + bob.appendNumber("cursorIdPrefix", static_cast(cursorIdPrefix)); bob.append("nss", nss.toString()); } } @@ -857,7 +857,7 @@ BSONObj ClusterCursorManager::dumpInternalLog() const { BSONObjBuilder bob(logBuilder.subobjStart()); const auto& logEntry = _log.events[i]; if (logEntry.cursorId) { - bob.appendIntOrLL("cursorId", *logEntry.cursorId); + bob.appendNumber("cursorId", *logEntry.cursorId); } bob.append("type", LogEvent::typeToString(logEntry.type)); diff --git a/src/mongo/shell/data_consistency_checker.js b/src/mongo/shell/data_consistency_checker.js index 742596795b3..b140076780d 100644 --- a/src/mongo/shell/data_consistency_checker.js +++ b/src/mongo/shell/data_consistency_checker.js @@ -326,6 +326,22 @@ var {DataConsistencyChecker} = (function() { delete syncingInfo.idIndex.ns; } + // TODO: SERVER-54967 Remove workaround for comparing size + let sizeDeleted = false; + let sourceSize = sourceInfo.options.size; + let syncingSize = syncingInfo.options.size; + + // Compare 'size' field in 'options' field outside of bsonBinaryEqual as it + // could be saved as a NumberDecimal or NumberLong in versions 4.4 and + // before. + if (jsTest.options().useRandomBinVersionsWithinReplicaSet && + sourceInfo.options.size == syncingInfo.options.size && + sourceInfo.options.size !== syncingInfo.options.size) { + delete sourceInfo.options.size; + delete syncingInfo.options.size; + sizeDeleted = true; + } + if (!bsonBinaryEqual(syncingInfo, sourceInfo)) { prettyPrint( `the two nodes have different attributes for the collection or view ${ @@ -336,6 +352,13 @@ var {DataConsistencyChecker} = (function() { syncingInfo.name); success = false; } + + // Deleted sizes must be added back to prevent comparison between nodes that + // have not had their size removed. + if (sizeDeleted) { + sourceInfo.options.size = sourceSize; + syncingInfo.options.size = syncingSize; + } } }); }); diff --git a/src/mongo/unittest/unittest.cpp b/src/mongo/unittest/unittest.cpp index df6cca3383a..b7b8b5201b0 100644 --- a/src/mongo/unittest/unittest.cpp +++ b/src/mongo/unittest/unittest.cpp @@ -119,7 +119,7 @@ public: BSONObjBuilder bob; bob.append("name", _name); bob.append("tests", _tests); - bob.appendNumber("fails", _fails.size()); + bob.appendNumber("fails", static_cast(_fails.size())); bob.append("asserts", _asserts); bob.append("time", Milliseconds(_millis).toBSON()); { diff --git a/src/mongo/util/heap_profiler.cpp b/src/mongo/util/heap_profiler.cpp index 7c39be5e84d..74b3902fc42 100644 --- a/src/mongo/util/heap_profiler.cpp +++ b/src/mongo/util/heap_profiler.cpp @@ -586,11 +586,12 @@ private: // Stats subsection. BSONObjBuilder statsBuilder(builder.subobjStart("stats")); - statsBuilder.appendNumber("totalActiveBytes", totalActiveBytes); - statsBuilder.appendNumber("bytesAllocated", bytesAllocated); - statsBuilder.appendNumber("numStacks", stackHashTable.size()); - statsBuilder.appendNumber("currentObjEntries", objHashTable.size()); - statsBuilder.appendNumber("maxObjEntriesUsed", objHashTable.maxSizeSeen()); + statsBuilder.appendNumber("totalActiveBytes", static_cast(totalActiveBytes)); + statsBuilder.appendNumber("bytesAllocated", static_cast(bytesAllocated)); + statsBuilder.appendNumber("numStacks", static_cast(stackHashTable.size())); + statsBuilder.appendNumber("currentObjEntries", static_cast(objHashTable.size())); + statsBuilder.appendNumber("maxObjEntriesUsed", + static_cast(objHashTable.maxSizeSeen())); statsBuilder.doneFast(); // Guard against races updating the StackInfo bson representation. @@ -635,7 +636,8 @@ private: std::ostringstream shortName; shortName << "stack" << stackInfo->stackNum; BSONObjBuilder stackBuilder(stacksBuilder.subobjStart(shortName.str())); - stackBuilder.appendNumber("activeBytes", stackInfo->activeBytes); + stackBuilder.appendNumber("activeBytes", + static_cast(stackInfo->activeBytes)); } stacksBuilder.doneFast(); diff --git a/src/mongo/util/tcmalloc_server_status_section.cpp b/src/mongo/util/tcmalloc_server_status_section.cpp index 63fa8228ec2..5e789289c35 100644 --- a/src/mongo/util/tcmalloc_server_status_section.cpp +++ b/src/mongo/util/tcmalloc_server_status_section.cpp @@ -114,7 +114,8 @@ public: "tcmalloc.transfer_cache_free_bytes", &transfer) && MallocExtension::instance()->GetNumericProperty("tcmalloc.thread_cache_free_bytes", &thread)) { - sub.appendNumber("total_free_bytes", central + transfer + thread); + sub.appendNumber("total_free_bytes", + static_cast(central + transfer + thread)); } appendNumericPropertyIfAvailable( sub, "central_cache_free_bytes", "tcmalloc.central_cache_free_bytes"); @@ -177,7 +178,7 @@ private: const char* property) { size_t value; if (MallocExtension::instance()->GetNumericProperty(property, &value)) - builder.appendNumber(bsonName, value); + builder.appendNumber(bsonName, static_cast(value)); } #if MONGO_HAVE_GPERFTOOLS_SIZE_CLASS_STATS @@ -187,14 +188,14 @@ private: ->first; BSONObjBuilder doc; - doc.appendNumber("bytes_per_object", stats->bytes_per_obj); - doc.appendNumber("pages_per_span", stats->pages_per_span); - doc.appendNumber("num_spans", stats->num_spans); - doc.appendNumber("num_thread_objs", stats->num_thread_objs); - doc.appendNumber("num_central_objs", stats->num_central_objs); - doc.appendNumber("num_transfer_objs", stats->num_transfer_objs); - doc.appendNumber("free_bytes", stats->free_bytes); - doc.appendNumber("allocated_bytes", stats->alloc_bytes); + doc.appendNumber("bytes_per_object", static_cast(stats->bytes_per_obj)); + doc.appendNumber("pages_per_span", static_cast(stats->pages_per_span)); + doc.appendNumber("num_spans", static_cast(stats->num_spans)); + doc.appendNumber("num_thread_objs", static_cast(stats->num_thread_objs)); + doc.appendNumber("num_central_objs", static_cast(stats->num_central_objs)); + doc.appendNumber("num_transfer_objs", static_cast(stats->num_transfer_objs)); + doc.appendNumber("free_bytes", static_cast(stats->free_bytes)); + doc.appendNumber("allocated_bytes", static_cast(stats->alloc_bytes)); builder.append(doc.obj()); } @@ -205,11 +206,11 @@ private: ->second; BSONObjBuilder doc; - doc.appendNumber("pages", stats->pages); - doc.appendNumber("normal_spans", stats->normal_spans); - doc.appendNumber("unmapped_spans", stats->unmapped_spans); - doc.appendNumber("normal_bytes", stats->normal_bytes); - doc.appendNumber("unmapped_bytes", stats->unmapped_bytes); + doc.appendNumber("pages", static_cast(stats->pages)); + doc.appendNumber("normal_spans", static_cast(stats->normal_spans)); + doc.appendNumber("unmapped_spans", static_cast(stats->unmapped_spans)); + doc.appendNumber("normal_bytes", static_cast(stats->normal_bytes)); + doc.appendNumber("unmapped_bytes", static_cast(stats->unmapped_bytes)); builder.append(doc.obj()); } diff --git a/src/mongo/util/tcmalloc_set_parameter.cpp b/src/mongo/util/tcmalloc_set_parameter.cpp index d8ab1f3939f..3bf03f9e19f 100644 --- a/src/mongo/util/tcmalloc_set_parameter.cpp +++ b/src/mongo/util/tcmalloc_set_parameter.cpp @@ -98,7 +98,7 @@ StatusWith validateTCMallocValue(StringData name, const BSONElement& new OperationContext*, BSONObjBuilder& b, const std::string& name) { \ auto swValue = getProperty(k##cls##PropertyName); \ if (swValue.isOK()) { \ - b.appendNumber(name, swValue.getValue()); \ + b.appendNumber(name, static_cast(swValue.getValue())); \ } \ } \ Status TCMalloc##cls##ServerParameter::set(const BSONElement& newValueElement) { \ -- cgit v1.2.1