-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Unknown
-
None
-
Component/s: Evergreen Tools, Mongo Orchestration
-
None
-
Not Needed
Summary
What is the problem or use case, what are we trying to achieve?
Mongo Orchestration is under-maintained, and it not well architected. It is brittle and adds layers of indirection that are not needed.
The DevTools team has been maintaining mongodb-runner, a tool that offers most of what mongo-orchestration provides.
We propose adding the missing features to mongodb-runner, removing the usage of mongo-orchestration in drivers-evergreen-tools, and deprecating mongo-orchestration.
Implementation plan:
- Verify that we can run all of the orchestration files in drivers-evergreen-tools with minimal changes to mongodb-runner.
- Create a node package in the orchestration folder that replaces the functionality of drivers_orchestration.py and mongo-orchestration.
- Test the node package with the python driver
- Merge required changes into mongodb-runner.
- Ensure that no essential functionality is lost for drivers.
- Make a PR that replaces the python package in orchestration.
- Deprecate the mongo-orchestration package.
Considerations:
- We need to ensure that no current functionality is lost, including the ability to define another source of mongodb artifact information and the ability to use an existing binary directory.
- The mongo-c-driver and mongo-cxx-driver repos would need to be updated to use the higher level run-orchestration.sh and stop-orchestration.sh
- mongomirror and mongosync have already pinned to an older version of drivers-evergreen tools. They could keep doing that or vendor the old start-orchestration.sh file. Eventually they'd need a to migrate to another solution using mongodb-runner or another tool.
- The following repos are currently using mongo-orchestration directly and would need to migrate off eventually: mongosql-auth-c, sql-engines-common-test-infra, bson-ruby, mongotune