Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-81121

Reorganize repl code and build blocks to avoid unexpected dependency cycles

    XMLWordPrintableJSON

Details

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Major - P3 Major - P3
    • None
    • None
    • None
    • None
    • Replication

    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.

      Attachments

        Activity

          People

            backlog-server-repl Backlog - Replication Team
            jiawei.yang@mongodb.com Jiawei Yang
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated: