31 #include <unordered_map> 33 #include "mongo/base/disallow_copying.h" 35 #include "mongo/db/op_observer.h" 36 #include "mongo/db/service_context.h" 37 #include "mongo/stdx/functional.h" 38 #include "mongo/util/uuid.h" 47 const NamespaceString& nss,
50 bool fromMigrate)
override {}
52 const NamespaceString& nss,
54 std::vector<InsertStatement>::const_iterator begin,
55 std::vector<InsertStatement>::const_iterator end,
56 bool fromMigrate)
override {}
57 void onUpdate(OperationContext*
opCtx,
const OplogUpdateEntryArgs& args)
override {}
59 const NamespaceString& nss,
60 const BSONObj& doc)
override {}
62 const NamespaceString& nss,
66 const boost::optional<BSONObj>& deletedDoc)
override {}
68 const NamespaceString& nss,
69 const boost::optional<UUID>
uuid,
70 const BSONObj& msgObj,
71 const boost::optional<BSONObj> o2MsgObj)
override {}
74 const NamespaceString& collectionName,
76 const BSONObj& idIndex)
override;
78 const NamespaceString& nss,
80 const BSONObj& collModCmd,
82 boost::optional<TTLCollModInfo> ttlInfo)
override;
83 void onDropDatabase(OperationContext* opCtx,
const std::string& dbName)
override {}
85 const NamespaceString& collectionName,
88 const NamespaceString& nss,
90 const std::string& indexName,
91 const BSONObj& idxDescriptor)
override {}
93 const NamespaceString& fromCollection,
94 const NamespaceString& toCollection,
97 bool stayTemp)
override;
99 const NamespaceString& fromCollection,
100 const NamespaceString& toCollection,
103 bool stayTemp)
override;
105 const NamespaceString& fromCollection,
106 const NamespaceString& toCollection,
109 bool stayTemp)
override;
111 const std::string& dbName,
112 const BSONObj& applyOpCmd)
override {}
114 const NamespaceString& collectionName,
120 const RollbackObserverInfo& rbInfo)
override {}
186 void onCloseCatalog();
191 void onOpenCatalog();
198 boost::optional<CollectionUUID> prev(
const StringData& db,
CollectionUUID uuid);
205 boost::optional<CollectionUUID> next(
const StringData& db,
CollectionUUID uuid);
208 const std::vector<CollectionUUID>& _getOrdering_inlock(
const StringData& db,
209 const stdx::lock_guard<stdx::mutex>&);
217 mongo::stdx::unordered_map<CollectionUUID, NamespaceString, CollectionUUID::Hash>>
227 mongo::stdx::unordered_map<CollectionUUID, Collection*, CollectionUUID::Hash>
_catalog;
void onInserts(OperationContext *opCtx, const NamespaceString &nss, OptionalCollectionUUID uuid, std::vector< InsertStatement >::const_iterator begin, std::vector< InsertStatement >::const_iterator end, bool fromMigrate) override
Definition: uuid_catalog.h:51
void onDropIndex(OperationContext *opCtx, const NamespaceString &nss, OptionalCollectionUUID uuid, const std::string &indexName, const BSONObj &idxDescriptor) override
Definition: uuid_catalog.h:87
mongo::stdx::mutex _catalogLock
Definition: uuid_catalog.h:211
void onEmptyCapped(OperationContext *opCtx, const NamespaceString &collectionName, OptionalCollectionUUID uuid) override
Definition: uuid_catalog.h:113
Class used for updating the UUID catalog on metadata operations.
Definition: uuid_catalog.h:44
void postRenameCollection(OperationContext *opCtx, const NamespaceString &fromCollection, const NamespaceString &toCollection, OptionalCollectionUUID uuid, OptionalCollectionUUID dropTargetUUID, bool stayTemp) override
Definition: uuid_catalog.cpp:110
Definition: collection_options.h:57
repl::OpTime preRenameCollection(OperationContext *opCtx, const NamespaceString &fromCollection, const NamespaceString &toCollection, OptionalCollectionUUID uuid, OptionalCollectionUUID dropTargetUUID, bool stayTemp) override
Definition: uuid_catalog.cpp:101
void onDelete(OperationContext *opCtx, const NamespaceString &nss, OptionalCollectionUUID uuid, StmtId stmtId, bool fromMigrate, const boost::optional< BSONObj > &deletedDoc) override
Definition: uuid_catalog.h:61
void onTransactionPrepare(OperationContext *opCtx) override
Definition: uuid_catalog.h:117
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
void onTransactionCommit(OperationContext *opCtx) override
Definition: uuid_catalog.h:116
void onUpdate(OperationContext *opCtx, const OplogUpdateEntryArgs &args) override
Definition: uuid_catalog.h:57
UUID CollectionUUID
A CollectionUUID is a 128-bit unique identifier, per RFC 4122, v4.
Definition: collection_options.h:53
void onRenameCollection(OperationContext *opCtx, const NamespaceString &fromCollection, const NamespaceString &toCollection, OptionalCollectionUUID uuid, OptionalCollectionUUID dropTargetUUID, bool stayTemp) override
Definition: uuid_catalog.cpp:85
this is NOT safe through a yield right now.
Definition: collection.h:160
StringMap< std::vector< CollectionUUID > > _orderedCollections
Map from database names to ordered vectors of their UUIDs.
Definition: uuid_catalog.h:226
void onReplicationRollback(OperationContext *opCtx, const RollbackObserverInfo &rbInfo) override
Definition: uuid_catalog.h:119
boost::optional< CollectionUUID > OptionalCollectionUUID
Definition: collection_options.h:55
mongo::stdx::unordered_map< CollectionUUID, Collection *, CollectionUUID::Hash > _catalog
Definition: uuid_catalog.h:227
Collection *const OperationContext *const const StringData OptionalCollectionUUID uuid
Definition: collection_impl.cpp:80
Definition: uuid_catalog.h:130
boost::optional< mongo::stdx::unordered_map< CollectionUUID, NamespaceString, CollectionUUID::Hash > > _shadowCatalog
When present, indicates that the catalog is in closed state, and contains a map from UUID to pre-clos...
Definition: uuid_catalog.h:218
void onCollMod(OperationContext *opCtx, const NamespaceString &nss, OptionalCollectionUUID uuid, const BSONObj &collModCmd, const CollectionOptions &oldCollOptions, boost::optional< TTLCollModInfo > ttlInfo) override
Definition: uuid_catalog.cpp:58
void onApplyOps(OperationContext *opCtx, const std::string &dbName, const BSONObj &applyOpCmd) override
Definition: uuid_catalog.h:110
Represents a logical database containing Collections.
Definition: database.h:57
OperationContext Database * db
Definition: database_impl.cpp:949
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
repl::OpTime onDropCollection(OperationContext *opCtx, const NamespaceString &collectionName, OptionalCollectionUUID uuid) override
Definition: uuid_catalog.cpp:74
void onCreateCollection(OperationContext *opCtx, Collection *coll, const NamespaceString &collectionName, const CollectionOptions &options, const BSONObj &idIndex) override
Definition: uuid_catalog.cpp:47
void aboutToDelete(OperationContext *opCtx, const NamespaceString &nss, const BSONObj &doc) override
Definition: uuid_catalog.h:58
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
void onTransactionAbort(OperationContext *opCtx) override
Definition: uuid_catalog.h:118
void onInternalOpMessage(OperationContext *opCtx, const NamespaceString &nss, const boost::optional< UUID > uuid, const BSONObj &msgObj, const boost::optional< BSONObj > o2MsgObj) override
Definition: uuid_catalog.h:67
void onCreateIndex(OperationContext *opCtx, const NamespaceString &nss, OptionalCollectionUUID uuid, BSONObj indexDoc, bool fromMigrate) override
Definition: uuid_catalog.h:46
void onDropDatabase(OperationContext *opCtx, const std::string &dbName) override
Definition: uuid_catalog.h:83