From 2b82ab88982566114d1bb7667477b71c883b0799 Mon Sep 17 00:00:00 2001 From: Henrik Edin Date: Thu, 17 Sep 2020 17:09:19 -0400 Subject: SERVER-50984 Add CollectionPtr to replace usage of const Collection* It implements a yieldable interface that is used to re-load the Collection pointer from the catalog after a yield that released locks. With lock-free reads and copy-on-write on Collection instances releasing locks without notifying an AutoGetCollection at a higher level may cause its pointers to dangle if a MODE_X writer installs a new Collection instance in the catalog. CollectionPtr should be passed by const reference so a yield can notify all the way up. --- src/mongo/db/auth/auth_op_observer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mongo/db/auth/auth_op_observer.h') diff --git a/src/mongo/db/auth/auth_op_observer.h b/src/mongo/db/auth/auth_op_observer.h index b8d0e132b7a..19831510685 100644 --- a/src/mongo/db/auth/auth_op_observer.h +++ b/src/mongo/db/auth/auth_op_observer.h @@ -106,7 +106,7 @@ public: const boost::optional slot) final{}; void onCreateCollection(OperationContext* opCtx, - const Collection* coll, + const CollectionPtr& coll, const NamespaceString& collectionName, const CollectionOptions& options, const BSONObj& idIndex, -- cgit v1.2.1