Repository navigation
Stop activity lease maintenance after settlement when cancellation is consumed - #185
Merged
Merged
Conversation
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Stop settled activity lease maintenance
The original supported-version CI stall now has a controlled source reproduction.
ActivityLeaseAuthority.run()cancelled its maintenance task and then awaited it unconditionally. An in-flight renewal that consumes cancellation can leave that loop running after the operation has settled. The caller then waits indefinitely during cleanup.Tests-first
73db146fails that controlled cancellation case and passes original-authority reuse between loading and callback. Correctiond2939d4ee8a931e7183017e8b78262062d137bc0adds a per-operation stop event, checked before another renewal. It preserves the same original claim across input loading and callback stages. Original identity, deadlines, retry rules, application-progress authority and transport options are unchanged.Actual Python 3.10.22 verification on the corrected source:
The first broad local run used a container without an init process and retained orphan-test failures: 3,099 passes, four failures, three skips and one teardown error. Actual unreaped zombie children had
sleepas PID 1. The successful repeat added Docker--init, preserving source, assertions and deadlines. The failed original remains a failure.The diagnostic workflow follow-through remains: verbose names, Pytest's built-in 120-second thread dump and a duration summary; a strict 13-minute suite ceiling plus ten-second kill grace within the unchanged 15-minute job; and at most 12,000 bytes of failure diagnostics in a GitHub annotation. Tests, runner images and dependencies are unchanged. This tighter diagnostic ceiling does not turn timeouts into passes.
Original fresh-main
39554306509and diagnostic39562776942retain their Python 3.10 timeouts. Diagnostic39566620625passes Python 3.10 but fails Python 3.11 at the diagnostic ceiling. Those observations establish that the race is not confined to one supported Python version. Recovered ordinary public logs and the controlled source counterexample inform this fix; no old failure is rescued.The exact corrected head passes every required candidate check: Python 3.10/3.11/3.12, source-Server integration, lint, package, corpus, advisory throughput, portal, boundary, final target-branch qualification and Sonar. Independent PR issue review has zero findings. Merged
fe40c6477d71dbacf8db6035875a0f52dfef7a49preserves exact tested tree61eefba3ceb838a095942fec098978fe036720db; fresh-main gates are independent and pending.This PR publishes no version and does not complete the cross-product acceptance in Workflow #878. Genuine installed long-running activity, worker-loss and PHP/embedded automatic maintenance remain separate requirements. All local Python tools/dependencies are actually absent by the 08:39 inventory, before 09:00; recovered logs/config scratch was removed 08:26:54 before 08:30. No application, database or paid host was used.