Fix automation actions failing silently in read-only containers #19319
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.
Closes #19317
Summary
Fixes automation actions that fail silently when background services run in read-only containers (common in rootless/secure deployments).
Root Cause
Background services (actions service) use
OrchestrationClientfor in-process API calls.OrchestrationClientwas creating a full FastAPI app with UI support, which attempts to create the UI static directory. In read-only containers, this raisesPermissionError, causing actions to fail and messages to go to DLQ with no error logs.Changes
1. Skip UI creation for OrchestrationClient (Primary Fix)
File:
src/prefect/server/api/clients.pyephemeral=Trueskips UI directory creation2. Add error logging for action failures
File:
src/prefect/server/events/actions.pyTesting
Unit Test Added
test_orchestration_client_works_with_readonly_ui_directoryintests/server/api/test_clients.pyPermissionErrorManual Testing
Impact
✅ Fixes:
✅ No breaking changes:
ephemeral=Trueis already used for ephemeral serversOrchestrationClient(internal use only)Related
PREFECT_UI_STATIC_DIRECTORY=/writable/dir🤖 Generated with Claude Code