ExportXMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Infrastructure, Tests
    • None
    • None
    • Python Drivers
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • None
    • None
    • None
    • None
    • None
    • None

      Context

      The mod_wsgi tests run on Evergreen and depend on mod_wsgi.so builds from the Python toolchain, one per CPython version in the test matrix. The toolchain must build mod_wsgi against a shared-library CPython for every version tested, and we currently do not have a way to ensure that the built mod_wsgi versions actually run against pymongo, and are included in the toolchain. Rather than build up more validation on that side, we can switch to using GitHub Actions for the mod_wsgi tests, since we can install the apache-dev package there.

      Definition of done

      The mod_wsgi tests run on pull requests in two GitHub Actions jobs on ubuntu-22.04 runners, Mod WSGI Min Deps and Mod WSGI Latest. Each job runs the standalone and embedded modes; the min deps job tests the minimum dependencies with the oldest supported CPython against MongoDB 6.0, and the latest job tests the newest dependencies with the newest supported CPython against the latest MongoDB. The Python and MongoDB versions come from CPYTHONS and ALL_VERSIONS in generate_config_utils.py. mod_wsgi comes from a mod_wsgi dependency group instead of the toolchain, and the mod_wsgi Evergreen tasks and build variant are removed. A just smoke-mod-wsgi recipe runs the same steps locally in an ubuntu container. The work is on the mod-wsgi-github-actions branch, verified green through workflow_dispatch.

      Pitfalls

      * mod_wsgi 6 deletes the thread states of still-running threads when it destroys interpreters as child processes exit, which crashes live pymongo monitor threads with a segmentation fault. The test Apache config sets WSGIDestroyInterpreter Off to keep the mod_wsgi 4 lifecycle; we need to file an upstream mod_wsgi issue for the crash.
      * The min deps round rewrites uv.lock through --resolution=lowest-direct, which is why it runs in its own job.
      * MongoDB 6.0 is the oldest version published for ubuntu2204, so the min deps job runs on an ubuntu-22.04 runner and cannot test MongoDB 4.4 or 5.0.

            Assignee:
            Steve Silvester
            Reporter:
            Steve Silvester
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: