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;
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 {}
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;
NamespaceString lookupNSSByUUID(CollectionUUID uuid) const
This function gets the NamespaceString from the Collection* pointer that corresponds to CollectionUUI...
Definition: uuid_catalog.cpp:181
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
MONGO_DISALLOW_COPYING(UUIDCatalog)
Collection * removeUUIDCatalogEntry(CollectionUUID uuid)
Definition: uuid_catalog.cpp:232
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 onCreateCollection(OperationContext *opCtx, Collection *coll, CollectionUUID uuid)
This function inserts the entry for uuid, coll into the UUID Collection.
Definition: uuid_catalog.cpp:128
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
const std::vector< CollectionUUID > & _getOrdering_inlock(const StringData &db, const stdx::lock_guard< stdx::mutex > &)
Definition: uuid_catalog.cpp:273
void onRenameCollection(OperationContext *opCtx, const NamespaceString &fromCollection, const NamespaceString &toCollection, OptionalCollectionUUID uuid, OptionalCollectionUUID dropTargetUUID, bool stayTemp) override
Definition: uuid_catalog.cpp:85
void onRenameCollection(OperationContext *opCtx, Collection *coll, CollectionUUID uuid)
This function atomically removes any existing entry for uuid from the UUID catalog and adds a new ent...
Definition: uuid_catalog.cpp:142
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
Collection * lookupCollectionByUUID(CollectionUUID uuid) const
This function gets the Collection* pointer that corresponds to CollectionUUID uuid.
Definition: uuid_catalog.cpp:175
Collection * replaceUUIDCatalogEntry(CollectionUUID uuid, Collection *coll)
Definition: uuid_catalog.cpp:198
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
void onCloseCatalog()
Puts the catalog in closed state.
Definition: uuid_catalog.cpp:161
boost::optional< CollectionUUID > next(const StringData &db, CollectionUUID uuid)
Return the UUID lexicographically following uuid in the database named by db.
Definition: uuid_catalog.cpp:261
void onOpenCatalog()
Puts the catatlog back in open state, removing the pre-close state.
Definition: uuid_catalog.cpp:169
static UUIDCatalog & get(ServiceContext *svcCtx)
Definition: uuid_catalog.cpp:121
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
boost::optional< CollectionUUID > prev(const StringData &db, CollectionUUID uuid)
Return the UUID lexicographically preceding uuid in the database named by db.
Definition: uuid_catalog.cpp:248
void onDropCollection(OperationContext *opCtx, CollectionUUID uuid)
This function removes the entry for uuid from the UUID catalog.
Definition: uuid_catalog.cpp:136
repl::OpTime onDropCollection(OperationContext *opCtx, const NamespaceString &collectionName, OptionalCollectionUUID uuid) override
Definition: uuid_catalog.cpp:74
void registerUUIDCatalogEntry(CollectionUUID uuid, Collection *coll)
Definition: uuid_catalog.cpp:219
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
void onCloseDatabase(Database *db)
Implies onDropCollection for all collections in db, but is not transactional.
Definition: uuid_catalog.cpp:151
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