[SERVER-28600] Slice `catalog/collection` class into a vtable to break cycles. Created: 04/Apr/17  Updated: 06/Dec/17  Resolved: 07/Apr/17

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: 3.5.6

Type: Improvement Priority: Major - P3
Reporter: ADAM Martin (Inactive) Assignee: ADAM Martin (Inactive)
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
is depended on by SERVER-23103 Make library dependency graph acyclic Closed
is depended on by SERVER-27912 Stand up an interface to `src/mongo/d... Closed
Backwards Compatibility: Fully Compatible
Sprint: Platforms 2017-04-17
Participants:
Linked BF Score: 0

 Comments   
Comment by Githook User [ 07/Apr/17 ]

Author:

{u'username': u'adamlsd', u'name': u'ADAM David Alan Martin', u'email': u'adam.martin@10gen.com'}

Message: SERVER-28600 Fix lint & `repl` unit test
Branch: master
https://github.com/mongodb/mongo/commit/15102b2ff08880d9ce18585d03b5839afecdd2c4

Comment by Githook User [ 07/Apr/17 ]

Author:

{u'username': u'adamlsd', u'name': u'ADAM David Alan Martin', u'email': u'adam.martin@10gen.com'}

Message: SERVER-28600 Slice `catalog/collection` cycles.

The `Collection` class is a big part of the circular
dependencies into `catalog`. A simple vtable slice
is insufficient – it was also necessary to alter the
constructors of some of the other types, to allow them
to properly self-initialize.

The `Collection` class's header also exposed a few static
and free functions that needed slicing as well. These slices
were done using local `stdx::function` objects in the
`collection.cpp` TU and creating registration functions to
facilitate dependency injection.
Branch: master
https://github.com/mongodb/mongo/commit/0609c4c9b296e0b036ee7eecf1eea39ebbf1b6a7

Generated at Thu Feb 08 04:18:34 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.