github-actions[bot] opened a new pull request, #66606:
URL: https://github.com/apache/airflow/pull/66606

   * fix(db_cleanup): add --error-on-cleanup-failure flag to airflow db clean
   
   airflow db clean suppresses all per-table cleanup errors via
   _suppress_with_logging() and exits 0 even when tables could not be
   cleaned. This makes it impossible to detect silent failures in automated
   DAG-based maintenance workflows, which can lead to unchecked table
   growth and eventual migration failures on upgrade.
   
   This commit adds an opt-in --error-on-cleanup-failure flag that causes
   run_cleanup() to raise AirflowException (and the CLI to exit 1) if any
   table cleanup encountered an error. Default behaviour is unchanged.
   
   Additionally, a warning listing all tables that were not cleaned is now
   always emitted when failures occur, even without the flag, improving
   observability without requiring any opt-in.
   
   Changes:
   - airflow/utils/db_cleanup.py: update _suppress_with_logging to track
     whether an exception was suppressed via a SimpleNamespace context
     object; collect failed table names in run_cleanup(); emit a warning
     summary and optionally raise AirflowException.
   - airflow/cli/cli_config.py: add ARG_DB_ERROR_ON_CLEANUP_FAILURE and
     wire it into the db clean ActionCommand args list.
   - airflow/cli/commands/db_command.py: forward error_on_cleanup_failure
     from CLI args to run_cleanup().
   - tests/utils/test_db_cleanup.py: add unit tests covering the new flag
     and the warning summary behaviour.
   
   Made-with: Cursor
   
   * fix(db_cleanup): improve type annotations and add docs for 
--error-on-cleanup-failure
   
   - Use collections.abc.Generator for the _suppress_with_logging return
     type annotation (ruff UP035 compliant) instead of typing.Generator.
   - Expand the _suppress_with_logging docstring to describe the yielded
     SimpleNamespace context object and the failure-tracking behaviour.
   - Add a new "Detecting cleanup failures" section to
     docs/howto/usage-cli.rst documenting the --error-on-cleanup-failure
     flag and the --skip-archive recommendation for large tables.
   
   Made-with: Cursor
   
   * fix(db_cleanup): address CI failures on PR #65239
   
   - Fix mypy arg-type errors: OperationalError third argument must be a
     BaseException, not None. Replace OperationalError("", {}, None) with
     OperationalError("", {}, Exception("mock db error")) in three new
     tests in test_db_cleanup.py.
   - Fix ruff ISC violation: collapse implicit string concatenation in the
     run_cleanup() warning call into a single string literal.
   - Update existing CLI tests in test_db_command.py to include the new
     error_on_cleanup_failure=False kwarg in all ten
     assert_called_once_with assertions.
   - Add test_error_on_cleanup_failure to test_db_command.py to verify the
     --error-on-cleanup-failure flag is correctly forwarded to run_cleanup.
   
   Made-with: Cursor
   
   * fix(db_cleanup): add --error-on-cleanup-failure flag documentation and 
tests
   
   - Introduce a new news fragment detailing the addition of the 
``--error-on-cleanup-failure`` flag to the ``airflow db clean`` command, 
allowing for better error handling during table cleanup.
   - Update unit tests in `test_db_cleanup.py` to ensure proper functionality 
of the new flag, including checks for raised exceptions and warning messages 
for failed tables.
   - Adjust the known exceptions list to reflect changes in `db_cleanup.py`.
   
   * fix(db_cleanup): update error handling for table cleanup failures
   
   - Change the behavior of the `--error-on-cleanup-failure` flag to raise a 
RuntimeError instead of an AirflowException when table cleanup encounters 
errors.
   - Update the documentation and help text for the flag to clarify its 
functionality.
   - Ensure that warning messages for failed tables are always emitted, 
regardless of the flag's state.
   - Modify unit tests in `test_db_cleanup.py` to reflect the new error 
handling and verify the correct logging behavior.
   
   This update improves error visibility during automated workflows by ensuring 
that cleanup failures are properly reported.
   
   * fix(db_cleanup): remove redundant cleanup commit
   (cherry picked from commit 4364908da2c0e798800509f2427fce90777af3ec)
   
   Co-authored-by: Hemkumar Chheda <[email protected]>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to