diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2018-09-14 13:24:39 -0400 |
---|---|---|
committer | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2018-09-14 13:24:39 -0400 |
commit | 5603a0812eb64c8009a514a3c59182f7f7134b9e (patch) | |
tree | c8feed84f4e45486739941763525139a942abee4 /src/mongo | |
parent | 0b5a31fe040168e9cbe3243b80ed2f40e1099e58 (diff) | |
download | mongo-5603a0812eb64c8009a514a3c59182f7f7134b9e.tar.gz |
SERVER-34882 Support creating instances with all required fields in IDL
Diffstat (limited to 'src/mongo')
-rw-r--r-- | src/mongo/db/catalog/health_log.idl | 4 | ||||
-rw-r--r-- | src/mongo/db/pipeline/document_source_change_stream_test.cpp | 36 | ||||
-rw-r--r-- | src/mongo/db/pipeline/document_source_change_stream_transform.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/repl/applier_helpers.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/repl/apply_ops_test.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/repl/dbcheck.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_entry.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_entry.idl | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_test.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/rollback_impl.cpp | 4 | ||||
-rw-r--r-- | src/mongo/db/repl/rs_rollback.cpp | 4 | ||||
-rw-r--r-- | src/mongo/db/repl/session_update_tracker.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/sync_tail.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/repl/sync_tail_test.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/s/session_catalog_migration_destination.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/s/session_catalog_migration_source.cpp | 2 | ||||
-rw-r--r-- | src/mongo/dbtests/storage_timestamp_tests.cpp | 2 | ||||
-rw-r--r-- | src/mongo/idl/unittest.idl | 4 |
18 files changed, 54 insertions, 50 deletions
diff --git a/src/mongo/db/catalog/health_log.idl b/src/mongo/db/catalog/health_log.idl index f38bc85a72a..945b7960523 100644 --- a/src/mongo/db/catalog/health_log.idl +++ b/src/mongo/db/catalog/health_log.idl @@ -50,7 +50,9 @@ structs: HealthLogEntry: description: "An entry in system.local.healthlog." fields: - namespace: namespacestring + namespace: + cpp_name: nss + type: namespacestring timestamp: date severity: Severity msg: string diff --git a/src/mongo/db/pipeline/document_source_change_stream_test.cpp b/src/mongo/db/pipeline/document_source_change_stream_test.cpp index c8a703726cb..761fdfbd1c3 100644 --- a/src/mongo/db/pipeline/document_source_change_stream_test.cpp +++ b/src/mongo/db/pipeline/document_source_change_stream_test.cpp @@ -453,12 +453,12 @@ TEST_F(ChangeStreamStageTest, TransformInsertDocKeyXAndId) { }; checkTransformation(insert, expectedInsert, {{"x"}, {"_id"}}); bool fromMigrate = false; // also check actual "fromMigrate: false" not filtered - auto insert2 = makeOplogEntry(insert.getOpType(), // op type - insert.getNamespace(), // namespace - insert.getObject(), // o - insert.getUuid(), // uuid - fromMigrate, // fromMigrate - insert.getObject2()); // o2 + auto insert2 = makeOplogEntry(insert.getOpType(), // op type + insert.getNss(), // namespace + insert.getObject(), // o + insert.getUuid(), // uuid + fromMigrate, // fromMigrate + insert.getObject2()); // o2 checkTransformation(insert2, expectedInsert, {{"x"}, {"_id"}}); } @@ -628,12 +628,12 @@ TEST_F(ChangeStreamStageTest, TransformDelete) { checkTransformation(deleteEntry, expectedDelete); bool fromMigrate = false; // also check actual "fromMigrate: false" not filtered - auto deleteEntry2 = makeOplogEntry(deleteEntry.getOpType(), // op type - deleteEntry.getNamespace(), // namespace - deleteEntry.getObject(), // o - deleteEntry.getUuid(), // uuid - fromMigrate, // fromMigrate - deleteEntry.getObject2()); // o2 + auto deleteEntry2 = makeOplogEntry(deleteEntry.getOpType(), // op type + deleteEntry.getNss(), // namespace + deleteEntry.getObject(), // o + deleteEntry.getUuid(), // uuid + fromMigrate, // fromMigrate + deleteEntry.getObject2()); // o2 checkTransformation(deleteEntry2, expectedDelete); } @@ -1400,12 +1400,12 @@ TEST_F(ChangeStreamStageDBTest, TransformDelete) { checkTransformation(deleteEntry, expectedDelete); bool fromMigrate = false; // also check actual "fromMigrate: false" not filtered - auto deleteEntry2 = makeOplogEntry(deleteEntry.getOpType(), // op type - deleteEntry.getNamespace(), // namespace - deleteEntry.getObject(), // o - deleteEntry.getUuid(), // uuid - fromMigrate, // fromMigrate - deleteEntry.getObject2()); // o2 + auto deleteEntry2 = makeOplogEntry(deleteEntry.getOpType(), // op type + deleteEntry.getNss(), // namespace + deleteEntry.getObject(), // o + deleteEntry.getUuid(), // uuid + fromMigrate, // fromMigrate + deleteEntry.getObject2()); // o2 checkTransformation(deleteEntry2, expectedDelete); } diff --git a/src/mongo/db/pipeline/document_source_change_stream_transform.cpp b/src/mongo/db/pipeline/document_source_change_stream_transform.cpp index a7f6e01d235..9e49dedcd1f 100644 --- a/src/mongo/db/pipeline/document_source_change_stream_transform.cpp +++ b/src/mongo/db/pipeline/document_source_change_stream_transform.cpp @@ -211,8 +211,8 @@ Document DocumentSourceChangeStreamTransform::applyTransformation(const Document BSONType::String); string op = input[repl::OplogEntry::kOpTypeFieldName].getString(); Value ts = input[repl::OplogEntry::kTimestampFieldName]; - Value ns = input[repl::OplogEntry::kNamespaceFieldName]; - checkValueType(ns, repl::OplogEntry::kNamespaceFieldName, BSONType::String); + Value ns = input[repl::OplogEntry::kNssFieldName]; + checkValueType(ns, repl::OplogEntry::kNssFieldName, BSONType::String); Value uuid = input[repl::OplogEntry::kUuidFieldName]; std::vector<FieldPath> documentKeyFields; @@ -417,7 +417,7 @@ Value DocumentSourceChangeStreamTransform::serialize( DepsTracker::State DocumentSourceChangeStreamTransform::getDependencies(DepsTracker* deps) const { deps->fields.insert(repl::OplogEntry::kOpTypeFieldName.toString()); deps->fields.insert(repl::OplogEntry::kTimestampFieldName.toString()); - deps->fields.insert(repl::OplogEntry::kNamespaceFieldName.toString()); + deps->fields.insert(repl::OplogEntry::kNssFieldName.toString()); deps->fields.insert(repl::OplogEntry::kUuidFieldName.toString()); deps->fields.insert(repl::OplogEntry::kObjectFieldName.toString()); deps->fields.insert(repl::OplogEntry::kObject2FieldName.toString()); diff --git a/src/mongo/db/repl/applier_helpers.cpp b/src/mongo/db/repl/applier_helpers.cpp index 2f71095c2c0..658de205c8d 100644 --- a/src/mongo/db/repl/applier_helpers.cpp +++ b/src/mongo/db/repl/applier_helpers.cpp @@ -61,7 +61,7 @@ void ApplierHelpers::stableSortByNamespace(MultiApplier::OperationPtrs* oplogEnt return; } auto nssComparator = [](const OplogEntry* l, const OplogEntry* r) { - return l->getNamespace() < r->getNamespace(); + return l->getNss() < r->getNss(); }; std::stable_sort(oplogEntryPointers->begin(), oplogEntryPointers->end(), nssComparator); } @@ -99,7 +99,7 @@ StatusWith<InsertGroup::ConstIterator> InsertGroup::groupAndApplyInserts(ConstIt // Make sure to include the first op in the batch size. auto batchSize = entry.getObject().objsize(); auto batchCount = OperationPtrs::size_type(1); - auto batchNamespace = entry.getNamespace(); + auto batchNamespace = entry.getNss(); /** * Search for the op that delimits this insert batch, and save its position @@ -117,7 +117,7 @@ StatusWith<InsertGroup::ConstIterator> InsertGroup::groupAndApplyInserts(ConstIt */ auto endOfGroupableOpsIterator = std::find_if(it + 1, _end, [&](const OplogEntry* nextEntry) -> bool { - auto opNamespace = nextEntry->getNamespace(); + auto opNamespace = nextEntry->getNss(); batchSize += nextEntry->getObject().objsize(); batchCount += 1; diff --git a/src/mongo/db/repl/apply_ops_test.cpp b/src/mongo/db/repl/apply_ops_test.cpp index 8b5179609bc..84573838b5c 100644 --- a/src/mongo/db/repl/apply_ops_test.cpp +++ b/src/mongo/db/repl/apply_ops_test.cpp @@ -444,7 +444,7 @@ TEST_F(ApplyOpsTest, ExtractOperationsReturnsOperationsWithSameOpTimeAsApplyOps) ASSERT(OpTypeEnum::kInsert == operation1.getOpType()) << "Unexpected op type: " << operation1.toBSON(); ASSERT_EQUALS(ui1, *operation1.getUuid()); - ASSERT_EQUALS(ns1, operation1.getNamespace()); + ASSERT_EQUALS(ns1, operation1.getNss()); ASSERT_BSONOBJ_EQ(BSON("_id" << 1), operation1.getOperationToApply()); // OpTime of CRUD operation should match applyOps. @@ -457,7 +457,7 @@ TEST_F(ApplyOpsTest, ExtractOperationsReturnsOperationsWithSameOpTimeAsApplyOps) ASSERT(OpTypeEnum::kInsert == operation2.getOpType()) << "Unexpected op type: " << operation2.toBSON(); ASSERT_EQUALS(ui2, *operation2.getUuid()); - ASSERT_EQUALS(ns2, operation2.getNamespace()); + ASSERT_EQUALS(ns2, operation2.getNss()); ASSERT_BSONOBJ_EQ(BSON("_id" << 2), operation2.getOperationToApply()); // OpTime of CRUD operation should match applyOps. @@ -470,7 +470,7 @@ TEST_F(ApplyOpsTest, ExtractOperationsReturnsOperationsWithSameOpTimeAsApplyOps) ASSERT(OpTypeEnum::kUpdate == operation3.getOpType()) << "Unexpected op type: " << operation3.toBSON(); ASSERT_EQUALS(ui3, *operation3.getUuid()); - ASSERT_EQUALS(ns3, operation3.getNamespace()); + ASSERT_EQUALS(ns3, operation3.getNss()); ASSERT_BSONOBJ_EQ(BSON("_id" << 3), operation3.getOperationToApply()); auto optionalUpsertBool = operation3.getUpsert(); diff --git a/src/mongo/db/repl/dbcheck.cpp b/src/mongo/db/repl/dbcheck.cpp index 62e3f5da9f8..5edd664a28d 100644 --- a/src/mongo/db/repl/dbcheck.cpp +++ b/src/mongo/db/repl/dbcheck.cpp @@ -122,7 +122,7 @@ std::unique_ptr<HealthLogEntry> dbCheckHealthLogEntry(const NamespaceString& nss OplogEntriesEnum operation, const BSONObj& data) { auto entry = stdx::make_unique<HealthLogEntry>(); - entry->setNamespace(nss); + entry->setNss(nss); entry->setTimestamp(Date_t::now()); entry->setSeverity(severity); entry->setScope(ScopeEnum::Cluster); diff --git a/src/mongo/db/repl/oplog_entry.cpp b/src/mongo/db/repl/oplog_entry.cpp index cf7838a7f19..4a3b22ce4f2 100644 --- a/src/mongo/db/repl/oplog_entry.cpp +++ b/src/mongo/db/repl/oplog_entry.cpp @@ -104,7 +104,7 @@ BSONObj makeOplogEntryDoc(OpTime opTime, builder.append(OplogEntryBase::kHashFieldName, hash); builder.append(OplogEntryBase::kVersionFieldName, version); builder.append(OplogEntryBase::kOpTypeFieldName, OpType_serializer(opType)); - builder.append(OplogEntryBase::kNamespaceFieldName, nss.toString()); + builder.append(OplogEntryBase::kNssFieldName, nss.toString()); if (uuid) { uuid->appendToBuilder(&builder, OplogEntryBase::kUuidFieldName); } @@ -150,7 +150,7 @@ ReplOperation OplogEntry::makeInsertOperation(const NamespaceString& nss, const BSONObj& docToInsert) { ReplOperation op; op.setOpType(OpTypeEnum::kInsert); - op.setNamespace(nss); + op.setNss(nss); op.setUuid(uuid); op.setObject(docToInsert.getOwned()); return op; @@ -162,7 +162,7 @@ ReplOperation OplogEntry::makeUpdateOperation(const NamespaceString nss, const BSONObj& criteria) { ReplOperation op; op.setOpType(OpTypeEnum::kUpdate); - op.setNamespace(nss); + op.setNss(nss); op.setUuid(uuid); op.setObject(update.getOwned()); op.setObject2(criteria.getOwned()); @@ -174,14 +174,14 @@ ReplOperation OplogEntry::makeDeleteOperation(const NamespaceString& nss, const BSONObj& docToDelete) { ReplOperation op; op.setOpType(OpTypeEnum::kDelete); - op.setNamespace(nss); + op.setNss(nss); op.setUuid(uuid); op.setObject(docToDelete.getOwned()); return op; } size_t OplogEntry::getReplOperationSize(const ReplOperation& op) { - return sizeof(op) + op.getNamespace().size() + op.getObject().objsize() + + return sizeof(op) + op.getNss().size() + op.getObject().objsize() + (op.getObject2() ? op.getObject2()->objsize() : 0); } diff --git a/src/mongo/db/repl/oplog_entry.idl b/src/mongo/db/repl/oplog_entry.idl index 9d0af006a97..6b85cab2562 100644 --- a/src/mongo/db/repl/oplog_entry.idl +++ b/src/mongo/db/repl/oplog_entry.idl @@ -54,7 +54,7 @@ structs: type: OpType description: "The operation type" ns: - cpp_name: namespace + cpp_name: nss type: namespacestring description: "The namespace on which to apply the operation" ui: diff --git a/src/mongo/db/repl/oplog_test.cpp b/src/mongo/db/repl/oplog_test.cpp index 4f0de89c5f8..e21c5e47a82 100644 --- a/src/mongo/db/repl/oplog_test.cpp +++ b/src/mongo/db/repl/oplog_test.cpp @@ -140,7 +140,7 @@ void _checkOplogEntry(const OplogEntry& oplogEntry, const OpTime& expectedOpTime, const NamespaceString& expectedNss) { ASSERT_EQUALS(expectedOpTime, oplogEntry.getOpTime()) << oplogEntry.toBSON(); - ASSERT_EQUALS(expectedNss, oplogEntry.getNamespace()) << oplogEntry.toBSON(); + ASSERT_EQUALS(expectedNss, oplogEntry.getNss()) << oplogEntry.toBSON(); } void _checkOplogEntry(const OplogEntry& oplogEntry, const std::pair<OpTime, NamespaceString>& expectedOpTimeAndNss) { diff --git a/src/mongo/db/repl/rollback_impl.cpp b/src/mongo/db/repl/rollback_impl.cpp index c1557c9d522..fcbd98e26c6 100644 --- a/src/mongo/db/repl/rollback_impl.cpp +++ b/src/mongo/db/repl/rollback_impl.cpp @@ -346,7 +346,7 @@ Status RollbackImpl::_awaitBgIndexCompletion(OperationContext* opCtx) { } StatusWith<std::set<NamespaceString>> RollbackImpl::_namespacesForOp(const OplogEntry& oplogEntry) { - NamespaceString opNss = oplogEntry.getNamespace(); + NamespaceString opNss = oplogEntry.getNss(); OpTypeEnum opType = oplogEntry.getOpType(); std::set<NamespaceString> namespaces; @@ -520,7 +520,7 @@ Status RollbackImpl::_findRecordStoreCounts(OperationContext* opCtx) { Status RollbackImpl::_processRollbackOp(const OplogEntry& oplogEntry) { ++_observerInfo.numberOfEntriesObserved; - NamespaceString opNss = oplogEntry.getNamespace(); + NamespaceString opNss = oplogEntry.getNss(); OpTypeEnum opType = oplogEntry.getOpType(); // For applyOps entries, we process each sub-operation individually. diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp index 0ce3a34d3ea..19eeda570b0 100644 --- a/src/mongo/db/repl/rs_rollback.cpp +++ b/src/mongo/db/repl/rs_rollback.cpp @@ -245,13 +245,13 @@ Status rollback_internal::updateFixUpInfoFromLocalOplogEntry(FixUpInfo& fixUpInf } // Extract the op's collection namespace and UUID. - NamespaceString nss = oplogEntry.getNamespace(); + NamespaceString nss = oplogEntry.getNss(); auto uuid = oplogEntry.getUuid(); if (oplogEntry.getOpType() == OpTypeEnum::kNoop) return Status::OK(); - if (oplogEntry.getNamespace().isEmpty()) { + if (oplogEntry.getNss().isEmpty()) { throw RSFatalException(str::stream() << "Local op on rollback has no ns: " << redact(oplogEntry.toBSON())); } diff --git a/src/mongo/db/repl/session_update_tracker.cpp b/src/mongo/db/repl/session_update_tracker.cpp index 73b6d90e8b5..4028d6980c0 100644 --- a/src/mongo/db/repl/session_update_tracker.cpp +++ b/src/mongo/db/repl/session_update_tracker.cpp @@ -39,7 +39,7 @@ namespace repl { boost::optional<std::vector<OplogEntry>> SessionUpdateTracker::updateOrFlush( const OplogEntry& entry) { - auto ns = entry.getNamespace(); + auto ns = entry.getNss(); if (ns == NamespaceString::kSessionTransactionsTableNamespace || (ns.isConfigDB() && ns.isCommand())) { return flush(entry); diff --git a/src/mongo/db/repl/sync_tail.cpp b/src/mongo/db/repl/sync_tail.cpp index 5c57adde2c5..ee5cea520f8 100644 --- a/src/mongo/db/repl/sync_tail.cpp +++ b/src/mongo/db/repl/sync_tail.cpp @@ -208,7 +208,7 @@ void ApplyBatchFinalizerForJournal::_run() { NamespaceString parseUUIDOrNs(OperationContext* opCtx, const OplogEntry& oplogEntry) { auto optionalUuid = oplogEntry.getUuid(); if (!optionalUuid) { - return oplogEntry.getNamespace(); + return oplogEntry.getNss(); } const auto& uuid = optionalUuid.get(); @@ -498,7 +498,7 @@ void fillWriterVectors(OperationContext* opCtx, CachedCollectionProperties collPropertiesCache; for (auto&& op : *ops) { - StringMapTraits::HashedKey hashedNs(op.getNamespace().ns()); + StringMapTraits::HashedKey hashedNs(op.getNss().ns()); uint32_t hash = hashedNs.hash(); // We need to track all types of ops, including type 'n' (these are generated from chunk @@ -930,7 +930,7 @@ bool SyncTail::tryPopAndWaitForMore(OperationContext* opCtx, // multiple oplog entries on 'system.views' are being applied out of the original order. if ((entry.isCommand() && (entry.getCommandType() != OplogEntry::CommandType::kApplyOps || entry.shouldPrepare())) || - entry.getNamespace().isSystemDotViews()) { + entry.getNss().isSystemDotViews()) { if (ops->getCount() == 1) { // apply commands one-at-a-time _consume(opCtx, oplogBuffer); @@ -1017,7 +1017,7 @@ BSONObj SyncTail::getMissingDoc(OperationContext* opCtx, const OplogEntry& oplog BSONObj query = BSONObjBuilder().append(idElem).obj(); BSONObj missingObj; - auto nss = oplogEntry.getNamespace(); + auto nss = oplogEntry.getNss(); try { auto uuid = oplogEntry.getUuid(); if (!uuid) { diff --git a/src/mongo/db/repl/sync_tail_test.cpp b/src/mongo/db/repl/sync_tail_test.cpp index e516eb57124..6c2d6d42258 100644 --- a/src/mongo/db/repl/sync_tail_test.cpp +++ b/src/mongo/db/repl/sync_tail_test.cpp @@ -917,7 +917,7 @@ TEST_F(SyncTailTest, MultiSyncApplyAppliesInsertOpsIndividuallyWhenUnableToCreat makeOp(NamespaceString(testNs + "_3"))}; for (const auto& oplogEntry : operationsToApply) { - createCollectionWithUuid(_opCtx.get(), oplogEntry.getNamespace()); + createCollectionWithUuid(_opCtx.get(), oplogEntry.getNss()); } // Each element in 'docsInserted' is a grouped insert operation. diff --git a/src/mongo/db/s/session_catalog_migration_destination.cpp b/src/mongo/db/s/session_catalog_migration_destination.cpp index 2b12fee36e1..ede0ae0f8b5 100644 --- a/src/mongo/db/s/session_catalog_migration_destination.cpp +++ b/src/mongo/db/s/session_catalog_migration_destination.cpp @@ -278,7 +278,7 @@ ProcessOplogResult processSessionOplog(OperationContext* opCtx, result.oplogTime = repl::logOp(opCtx, "n", - oplogEntry.getNamespace(), + oplogEntry.getNss(), oplogEntry.getUuid(), object, &object2, diff --git a/src/mongo/db/s/session_catalog_migration_source.cpp b/src/mongo/db/s/session_catalog_migration_source.cpp index a3a7edd1654..6e1ffc21134 100644 --- a/src/mongo/db/s/session_catalog_migration_source.cpp +++ b/src/mongo/db/s/session_catalog_migration_source.cpp @@ -196,7 +196,7 @@ bool SessionCatalogMigrationSource::_handleWriteHistory(WithLock, OperationConte // Note: This is an optimization based on the assumption that it is not possible to be // touching different namespaces in the same transaction. if (!nextStmtId || (nextStmtId && *nextStmtId != kIncompleteHistoryStmtId && - nextOplog.getNamespace() != _ns)) { + nextOplog.getNss() != _ns)) { _currentOplogIterator.reset(); return false; } diff --git a/src/mongo/dbtests/storage_timestamp_tests.cpp b/src/mongo/dbtests/storage_timestamp_tests.cpp index 62bd216202f..115eaa10d51 100644 --- a/src/mongo/dbtests/storage_timestamp_tests.cpp +++ b/src/mongo/dbtests/storage_timestamp_tests.cpp @@ -1255,7 +1255,7 @@ public: // The next logOp() call will get 'futureTs', which will be the timestamp at which we do // the write. Thus we expect the write to appear at 'futureTs' and not before. ASSERT_EQ(op.getTimestamp(), futureTs) << op.toBSON(); - ASSERT_EQ(op.getNamespace().ns(), nss.getCommandNS().ns()) << op.toBSON(); + ASSERT_EQ(op.getNss().ns(), nss.getCommandNS().ns()) << op.toBSON(); ASSERT_BSONOBJ_EQ(op.getObject(), BSON("create" << nss.coll())); assertNamespaceInIdents(nss, pastTs, false); diff --git a/src/mongo/idl/unittest.idl b/src/mongo/idl/unittest.idl index 958150b5cfc..ddbe386fd91 100644 --- a/src/mongo/idl/unittest.idl +++ b/src/mongo/idl/unittest.idl @@ -185,7 +185,7 @@ structs: strict: false fields: field1: RequiredStrictField3 - field2: + field2: type: RequiredNonStrictField3 optional: true field3: RequiredStrictField3 @@ -617,3 +617,5 @@ commands: type: array<int> fields: field1: int + + |