Uploaded image for project: 'MongoDB Database Tools'
  1. MongoDB Database Tools
  2. TOOLS-3454

Mongodump/mongorestore passthrough tests

    • Type: Icon: Epic Epic
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Mongodump/mongorestore passthrough tests
    • Not Needed
    • In Progress
    • No Alignment
    • 0
    • 3.4
    • 5.5
    • 0
    • 100
    • Hide

      2025-03-05:

      Refactored to have separate executables mongodump-suite-gen and mongodump-task-gen, with the correct (srcVersion, dstVersion) combinations.

      Cross-version tests are running as per scope excepting V42 tests, which need some kludge to find a pin version that works.

      Most tests pass! But these ones fail:

      ctc_rs_dump_concurrency_fsm_v44_to_v44
      ctc_rs_dump_concurrency_fsm_v44_to_v50
      ctc_rs_dump_concurrency_fsm_v44_to_v60
      ctc_rs_dump_concurrency_fsm_v44_to_v70
      ctc_rs_dump_concurrency_fsm_v44_to_v80
      ctc_rs_dump_concurrency_fsm_v50_to_v50
      ctc_rs_dump_concurrency_fsm_v50_to_v60
      ctc_rs_dump_concurrency_fsm_v50_to_v70
      ctc_rs_dump_concurrency_fsm_v50_to_v80

      ctc_rs_dump_jscore_passthrough_v60_to_v80
      ctc_rs_dump_jscore_passthrough_v70_to_v70
      ctc_rs_dump_jscore_passthrough_v70_to_v80
      ctc_rs_dump_jscore_passthrough_v80_to_v80

      2025-02-24:

      MongodumpReplicatorFixture is in code review.

      suite-generator has been modified to produce suite files for
      jscore, fsm, fuzz including addons that make sense for mongodump, and the same cross-version tests as for mongosync (which needs to be changed later to match up to the tech design).

      Currently debugging changes to support suite options for "archive" and "oplog/oplogReplay". These get passed from a Go struct to YAML to a Python dict and then flattened to child process command-line args so there are several places to go wrong.

      task-generator has been modified to keep the same default behavior, but with new options to generate mongodump test tasks
      (not generated by the default no-command-argument code, so you don't get mongodump tasks unless you explicitly generate them).

      The known bug with Timestamp(0,0) test affects all jscore testing, but there is a separate missing-one-document mismatch in the
      Sleep tests. I'm pushing ahead with getting more of the test functionality so I haven't tried to debug that yet.

      2025-02-12:

      Have successfully run a jscore_passthrough test with mongodump+mongorestore. It detected a mismatch, but this was the misreplication of Timestamp(0,0) which is a known bug (fixed in mongosync, but not yet in mongorestore).

      This success shows that the MongodumpReplicatorFixture and the barrier synchronization with mongodump are working (to some extent), and the transition between mongodump and mongorestore can work (at least once).

      The hacks done to the suite-generator would break mongosync testing, so I'm currently revising that code so that mongodump suite.yml files are generated without affecting the mongosync suite.yml files. This will naturally also enable suite generation for more of the tests.

      2025-01-30:

      It was hard to maintain a hand-crafted suite.yml, so I made initial hacks to the suite-generator code to generate suite.yml files for jscore_passthrough tests using the MongodumpReplicator. Have to learn the idioms of evergreen tasks/funcs as I go, so moving slowly, but that's useful knowledge for the future.

      I got to look at logfiles, and found I was trying to launch a copy of a MacOS mongodump executable on a RHEL-8 evergreen worker, so obviously that wouldn't work.

      Currently working on changing the mongo-tools/common.yml and shell scripts to be able to build both mongo-tools and mongosync on the evergreen worker. I hoped to reach milestone 1 without tackling that, but I spent a while trying some simpler kludges and couldn't get them to work.

      2025-01-17:

      REP-5481 MongodumpReplicatorFixture is about 95% coded, I'm doing some ugly temporary hacks to drive it from a slightly-modified mongosync passthrough task .yml,
      and I think it's being set up but so far it fails too early to get a logfile.

      2025-01-08:

      Technical design approved
      5 Jira tickets created for the milestone 1 work (get one test to run)
      mongodump --internalOnlySourceWritesDoneBarrier code complete, not yet tested
      mongodump_replicator.py coding in progress

      2024-12-06:

      The engineers working on the project had been focused on correctness and longer term initiatives for some of the last month. The technical design is close to being approved.

      2024-10-24:

      The technical design is in progress.

      Show
      2025-03-05: Refactored to have separate executables mongodump-suite-gen and mongodump-task-gen, with the correct (srcVersion, dstVersion) combinations. Cross-version tests are running as per scope excepting V42 tests, which need some kludge to find a pin version that works. Most tests pass! But these ones fail: ctc_rs_dump_concurrency_fsm_v44_to_v44 ctc_rs_dump_concurrency_fsm_v44_to_v50 ctc_rs_dump_concurrency_fsm_v44_to_v60 ctc_rs_dump_concurrency_fsm_v44_to_v70 ctc_rs_dump_concurrency_fsm_v44_to_v80 ctc_rs_dump_concurrency_fsm_v50_to_v50 ctc_rs_dump_concurrency_fsm_v50_to_v60 ctc_rs_dump_concurrency_fsm_v50_to_v70 ctc_rs_dump_concurrency_fsm_v50_to_v80 ctc_rs_dump_jscore_passthrough_v60_to_v80 ctc_rs_dump_jscore_passthrough_v70_to_v70 ctc_rs_dump_jscore_passthrough_v70_to_v80 ctc_rs_dump_jscore_passthrough_v80_to_v80 2025-02-24: MongodumpReplicatorFixture is in code review. suite-generator has been modified to produce suite files for jscore, fsm, fuzz including addons that make sense for mongodump, and the same cross-version tests as for mongosync (which needs to be changed later to match up to the tech design). Currently debugging changes to support suite options for "archive" and "oplog/oplogReplay". These get passed from a Go struct to YAML to a Python dict and then flattened to child process command-line args so there are several places to go wrong. task-generator has been modified to keep the same default behavior, but with new options to generate mongodump test tasks (not generated by the default no-command-argument code, so you don't get mongodump tasks unless you explicitly generate them). The known bug with Timestamp(0,0) test affects all jscore testing, but there is a separate missing-one-document mismatch in the Sleep tests. I'm pushing ahead with getting more of the test functionality so I haven't tried to debug that yet. 2025-02-12: Have successfully run a jscore_passthrough test with mongodump+mongorestore. It detected a mismatch, but this was the misreplication of Timestamp(0,0) which is a known bug (fixed in mongosync, but not yet in mongorestore). This success shows that the MongodumpReplicatorFixture and the barrier synchronization with mongodump are working (to some extent), and the transition between mongodump and mongorestore can work (at least once). The hacks done to the suite-generator would break mongosync testing, so I'm currently revising that code so that mongodump suite.yml files are generated without affecting the mongosync suite.yml files. This will naturally also enable suite generation for more of the tests. 2025-01-30: It was hard to maintain a hand-crafted suite.yml, so I made initial hacks to the suite-generator code to generate suite.yml files for jscore_passthrough tests using the MongodumpReplicator. Have to learn the idioms of evergreen tasks/funcs as I go, so moving slowly, but that's useful knowledge for the future. I got to look at logfiles, and found I was trying to launch a copy of a MacOS mongodump executable on a RHEL-8 evergreen worker, so obviously that wouldn't work. Currently working on changing the mongo-tools/common.yml and shell scripts to be able to build both mongo-tools and mongosync on the evergreen worker. I hoped to reach milestone 1 without tackling that, but I spent a while trying some simpler kludges and couldn't get them to work. 2025-01-17: REP-5481 MongodumpReplicatorFixture is about 95% coded, I'm doing some ugly temporary hacks to drive it from a slightly-modified mongosync passthrough task .yml, and I think it's being set up but so far it fails too early to get a logfile. 2025-01-08: Technical design approved 5 Jira tickets created for the milestone 1 work (get one test to run) mongodump --internalOnlySourceWritesDoneBarrier code complete, not yet tested mongodump_replicator.py coding in progress 2024-12-06: The engineers working on the project had been focused on correctness and longer term initiatives for some of the last month. The technical design is close to being approved. 2024-10-24: The technical design is in progress.
    • None
    • None
    • None
    • None
    • None
    • None

      Summary:
      Mongodump/mongorestore passthrough tests

            Assignee:
            jason.flax@mongodb.com Jason Flax
            Reporter:
            martin.bajana@mongodb.com Martin Bajana
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              22 weeks, 4 days
              None
              None
              None
              None
              None