[SERVER-81121] Reorganize repl code and build blocks to avoid unexpected dependency cycles Created: 15/Sep/23  Updated: 18/Sep/23

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

Type: Improvement Priority: Major - P3
Reporter: Jiawei Yang Assignee: Backlog - Replication Team
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Assigned Teams:
Replication
Participants:

 Description   

When working on SERVER-76774, I find out that we are not putting code in the most correct place, leading to some unexpected dependency cycles.

For my case, I see we put our oplog application code in oplog.cpp/apply_ops.cpp/transaction_oplog_application.cpp, which are actually in the "oplog" build block and we have another "oplog_application" build block depends on this "oplog" build block. There is a "oplog_applier_utils.cpp" in "oplog_application" build block that I understand should be the util function for oplog application. If I want to use these util functions in the oplog application code, there is no easy way to do it because the dependencies for "oplog" and "oplog_application" will be messed up.

I feel it's worth investigating how to make our dependency graph cleaner and reorganize our code to make it easier to manage common util functions.


Generated at Thu Feb 08 06:45:32 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.