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
Parallel CI runs across pull requests share one AWS account. #786 / #803 make the metadata API path tolerate throttling by answering from Glue. The query execution path has no equivalent, and it still fails transiently when several runs overlap.
Observed in run 35889837530 (PR #803 at ec384d2, running at the same time as the docs/790-notice run):
ERROR tests/sqlalchemy/test_suite.py::DateHistoricTest_awsathena+aiorest_async::test_select_direct
pyathena.error.OperationalError: Amazon Athena experienced an internal error while executing this query.
Please try submitting the query again and if the issue reoccurs, contact AWS support for further assistance.
[SQL: DELETE FROM date_table]
That was 1 of the 15 jobs; the other 14 passed. The query reached a terminal FAILED state. execute() reports that as OperationalError and does not resubmit, because only API-call errors are retried (RetryConfig).
.github/workflows/test.yaml also records a second class of overlap failure: the account's concurrent-query quota (TooManyRequestsException on StartQueryExecution). The default RetryConfig retries it with backoff, but the retry budget is shared with every other overlapping run.
Questions to settle before a change
Which terminal query failures are safe to resubmit, and for which statement types?
Athena's message explicitly asks for resubmission.
A resubmitted DML or DDL statement may not be idempotent.
The query's AthenaError (ErrorCategory / ErrorType / Retryable) may classify the failure. This is not yet verified for this error.
Should resubmission be a library feature, opt-in or default, or only a test-suite fixture concern?
Problem
Parallel CI runs across pull requests share one AWS account. #786 / #803 make the metadata API path tolerate throttling by answering from Glue. The query execution path has no equivalent, and it still fails transiently when several runs overlap.
Observed in run 35889837530 (PR #803 at
ec384d2, running at the same time as thedocs/790-noticerun):That was 1 of the 15 jobs; the other 14 passed. The query reached a terminal FAILED state.
execute()reports that asOperationalErrorand does not resubmit, because only API-call errors are retried (RetryConfig)..github/workflows/test.yamlalso records a second class of overlap failure: the account's concurrent-query quota (TooManyRequestsExceptiononStartQueryExecution). The defaultRetryConfigretries it with backoff, but the retry budget is shared with every other overlapping run.Questions to settle before a change
AthenaError(ErrorCategory/ErrorType/Retryable) may classify the failure. This is not yet verified for this error.Context