Skip to content

Dispose demo database pools before test event loops close - #326

Open
theman6660 wants to merge 1 commit into
KLR-Pattern:masterfrom
theman6660:fix/demo-database-loop-lifetime
Open

theman6660 wants to merge 1 commit into
KLR-Pattern:masterfrom
theman6660:fix/demo-database-loop-lifetime

Conversation

@theman6660

Copy link
Copy Markdown
Contributor

The UseCase demo tests reuse a module-level async database engine across function-scoped event loops. A concurrent compose query binds the connection's mutex to one loop; the next test can fail with "Lock ... is bound to a different event loop", returning null for get_sprint(). The failing test passes when run alone, obscuring the lifecycle problem.

Share the database fixture between the two demo test modules and dispose the engine pool in a finally block before each test's loop closes. Keep production database configuration intact. Assert the successful compose response has no execution errors so future failures show their actual cause.

The existing parallel-compose test followed by the single-service/multiple-method test produces one pass and one failure before the fix on Python 3.14. Afterward, all 17 UseCase demo tests pass. The complete tests/ + demo/ scope passes on Python 3.12 and 3.14 (989 passed, 1 skipped, 1 deselected in each independent checkout). The excluded memory test's psutil limitation is documented in the batch. Ruff and git diff --check pass.

SQLAlchemy's engine lifecycle guidance: https://docs.sqlalchemy.org/en/20/orm/extensions/asyncio.html#using-multiple-asyncio-event-loops

Prepared with OpenAI Codex assistance. No production usage, human review or upstream CI is claimed.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant