-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Replication
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
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.