You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Unresolved output-context races can lose abort data or undermine safe serialization, while live-test timing and configuration defects can cause flaky failures or skip healthy environments.
This PR improves abort handling in the Release integration SDK and reorganizes its tests around isolated fixtures, focused unit tests, and end-to-end coverage.
Changes:
Adds a cooperative abort grace period, protects in-progress result reporting, and reconciles task exit codes.
Restores support for tasks that omit super().__init__().
Expands pytest coverage for task execution, encryption, Kubernetes integration, and API helpers, with updated developer documentation.
File
Description
tests/support.py
Adds shared task IDs, input builders, and a minimal task.
tests/release/test_release_api_client.py
Converts compatibility checks to pytest.
tests/release/integration/test_wrapper.py
Removes the old combined wrapper tests.
tests/release/integration/test_wrapper_run.py
Tests task loading, context wiring, and setup failures.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
The tests have scheduling- and environment-dependent failure paths, and kubeconfig setup errors can leave a live Kubernetes namespace and API client uncleaned.
Bound abort-time stream flush to ensure process termination
digitalai/release/integration/wrapper.py:164
This flush can block indefinitely after the abort grace period has expired. If the worker is stuck writing to a full stderr pipe, it holds the buffered stream's lock; the main thread then waits for that lock here and never reaches os._exit(1), even after reporting the result. Please bound the flush wait or skip blocked streams so an unresponsive worker cannot prevent process termination.
A valid kubeconfig can omit both users and context.user, for example when targeting a local kubectl proxy. The cluster fixture can successfully probe and create its namespace with that configuration, but this lookup then raises KeyError, failing the live tests during setup. Treat the user as optional when copying the selected context.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The abort handler leaves deferred reporting retries unbounded when the callback is unavailable, preventing graceful exit and forcing the runner to kill the executor.
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
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.
No description provided.