Uploaded image for project: 'Red Hat OpenStack Services on OpenShift'
  1. Red Hat OpenStack Services on OpenShift
  2. OSPRH-15296

Eventlet breaks on Python 3.13 due to GIL changes affecting thread identity.

XMLWordPrintable

    • Icon: Story Story
    • Resolution: Done
    • Icon: Major Major
    • rhos-18.0.10 FR 3
    • None
    • Eventlet
    • None
    • 5
    • False
    • Hide

      None

      Show
      None
    • False
    • rhos-ops-platform-services-pidone
    • Hide

      This task have two approaches:

      1. really fixing it would require almost a full rewrite of eventlet accounting the nature of the problem (internal design change of CPython to make the GIL optionable), which is an irrealistic scenario due to the removal of Eventlet, it would be polishing a crappy thing.
      2. we have a straightforward workaround, but it potentially it will introduce unforseen side effects, but in parallel of that it would ensure a sufficent compatibility with Python 3.13 and we will be able to continue our removal in parallel. Many deliverables made awesome progress (Neutron, Nova), the more weeks pass the less they depends on Eventlet, so this solution is, in my opinion, the way to follow.

      I estimate it with a 5 accounting the uncertainity nature of the workaround concerning its possible side effects.

      Show
      This task have two approaches: really fixing it would require almost a full rewrite of eventlet accounting the nature of the problem (internal design change of CPython to make the GIL optionable), which is an irrealistic scenario due to the removal of Eventlet, it would be polishing a crappy thing. we have a straightforward workaround, but it potentially it will introduce unforseen side effects, but in parallel of that it would ensure a sufficent compatibility with Python 3.13 and we will be able to continue our removal in parallel. Many deliverables made awesome progress (Neutron, Nova), the more weeks pass the less they depends on Eventlet, so this solution is, in my opinion, the way to follow. I estimate it with a 5 accounting the uncertainity nature of the workaround concerning its possible side effects.
    • PIDONE 18.0.7, PIDONE 18.0.8, Sprint 1, Sprint 2
    • 4
    • Important

      Goal: 

      As a developer maintaining compatibility with Python 3.13, I want to track and document the regression caused by changes in CPython's GIL behavior affecting Eventlet, so that I can apply a temporary workaround while we remove our dependency on Eventlet entirely.

       

      Acceptance Criteria:

      • Verify that the bug tracked in Eventlet issue #1030(https://github.com/eventlet/eventlet/issues/1030) is properly referenced and understood.
      • Confirm that the root cause is related to a mismatch between green thread identity and CPython's native thread identity (`ident != get_ident(greenthread)`), due to GIL behavior changes in Python 3.13.
      • Acknowledge that a proper fix would likely require a deep and risky rework of Eventlet's core internals (e.g., green thread handling and monkey-patching model).
      • Accept and document that the proposed workaround in PR #1031(https://github.com/eventlet/eventlet/pull/1031) is only a temporary mitigation, with potential side effects.
      • Note that this bug reinforces our strategic decision to eliminate Eventlet from our stack, as we do not have the capacity to maintain a long-term fork or rewrite.
      • Ensure that our own codebase applies the workaround where strictly necessary while keeping the scope limited and temporary.

       

              hberaud Hervé Beraud
              hberaud Hervé Beraud
              rhos-dfg-pidone
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: