[SERVER-46201] Implement a generic ReplicaSetStateAwareService Created: 15/Feb/20 Updated: 29/Oct/23 Resolved: 26/Mar/20 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Sharding |
| Affects Version/s: | None |
| Fix Version/s: | 4.7.0 |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Kaloian Manassiev | Assignee: | Kevin Pulo |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | PM-1645-Milestone-3 | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||
| Sprint: | Sharding 2020-03-23, Sharding 2020-04-06 | ||||||||||||||||||||
| Participants: | |||||||||||||||||||||
| Description |
|
Currently there is a lot of duplication of code to initialise and change the state of internal services as the state of replication changes. Just a few examples of this are the ShardServerCatalogCacheLoader, ClusterIdentityLoader and the Balancer. Instead of having everything in the ReplicationCoordinatorExternalState, this ticket proposes to have a global registry of replication-aware services (where global means for a single MongoD process), on which developers can register their service implementations. The service implementations will override a strict set of virtual functions corresponding to the state transitions of the replica set. These state transitions will have pre-defined rules of what locks are held, what can be done under them (for example no blocking I/O during step-down), etc. The interface of the registry should be similar to ServiceContext::ConstructorActionRegisterer so that services are automatically registered as the node starts-up. As part of this ticket, at least one service (perhaps the Sharding Balancer) should be converted to use this framework. |
| Comments |
| Comment by Githook User [ 26/Mar/20 ] |
|
Author: {'name': 'Kevin Pulo', 'username': 'devkev', 'email': 'kevin.pulo@mongodb.com'}Message: |
| Comment by Githook User [ 24/Mar/20 ] |
|
Author: {'name': 'Kevin Pulo', 'username': 'devkev', 'email': 'kevin.pulo@mongodb.com'}Message: |