1.4 KiB
Implemented cached-context exit completion in tractor.trionics.maybe_open_context().
git diff HEAD~1..HEAD -- tractor/trionics/_mngrs.py
The generated implementation adds _CtxExit, whose done event publishes an outcome.Outcome[None]. _Cache.run_ctx() records either Value(None) or Error(exc) after the resource exit attempt. The final MOC consumer signals no_more_users, waits for completion under a shielded cancel scope, removes the per-key lock, and unwraps the outcome so ordinary cleanup failures are raised at the consumer boundary. trio.Cancelled, KeyboardInterrupt, and SystemExit continue through the service task rather than being converted into regular cleanup errors.
git diff HEAD~1..HEAD -- tests/test_resource_cache.py
The generated regressions cover successful exit blocking, cleanup-error delivery, final-user cancellation, cancellation combined with a cleanup error, and service-nursery cancellation. The existing teardown re-entry test now uses explicit events instead of a ten-second cleanup sleep and asserts that the replacement resource is a fresh cache miss.
Verification:
env PYTHONPATH="$PWD" /home/goodboy/repos/tractor/py313/bin/python -m pytest tests/test_resource_cache.py
Result: 16 passed in 8.37s.