Repository navigation
Conversation
Kill and wait for the direct sidecar child before preserving caller cancellation. Handle already-exited children without replacing the provider timeout error. Cover cancellation, deadline, success, and exit races with real subprocess tests. Generated-by: OpenAI Codex (GPT-6)
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.
Summary
Cancelled MetricFlow provider requests leave their direct child process alive. Kill and reap the child before re-raising CancelledError; tolerate an already-exited child during timeout cleanup while preserving METRICFLOW_PROVIDER_TIMEOUT.
Validation
Codex cloud, CPython 3.12, uv 0.9.0; base 5daf1de; head 9eae6e0.
Five real temporary-subprocess cases cover cancellation, deadline, success, cancellation after exit and timeout after exit, with readiness signals and test-owned cleanup. Baseline: 2 failed/3 passed; fixed plus existing MetricFlow tests: 14 passed.
Full suite: 1868 passed/85 skipped, coverage 68.14%, domain gates passed. Ruff, Mypy, Bandit, lock, catalog, build and clean-wheel checks passed. CI-pinned official MCP conformance: 25/25.
Limits and AI assistance
No real Doris database or installed MetricFlow engine tested. Spawn-phase/repeated cancellation and descendant processes are outside scope. Full license-eye scan unavailable: pinned dependency download returned HTTP 403; changed headers checked. Upstream CI has not run.
OpenAI Codex produced and reviewed the implementation/tests and performed cloud verification. Human review and any contributor agreements remain for the contributor; none asserted here. Independent of #239, #224 and #234.