Vamsi-klu commented on PR #69487:
URL: https://github.com/apache/airflow/pull/69487#issuecomment-4912280929

   Confirmed the root cause: repeat() in call_regular_interval calls action() 
with no exception handling, and both maintenance callbacks it guards -- 
_remove_unreferenced_triggers (a raw DELETE with synchronize_session=fetch) and 
_reap_stale_connection_tests (a row-locked SELECT plus UPDATE loop and flush) 
-- have no internal error handling. timers.run(blocking=False) is called inside 
the while loop of _run_scheduler_loop with no try/except, so a transient DB 
error (statement_timeout, deadlock, dropped connection) propagates out and 
takes down the SchedulerJob for what should be a skippable cleanup cycle. The 
opt-in flag is the right call since EventScheduler is general-purpose and 
default=False keeps every existing caller identical. except Exception (not bare 
except) correctly still lets KeyboardInterrupt/SystemExit through, and 
self.enter() is the last line of repeat() outside the try, so the next cycle is 
always rescheduled. Worth noting: both callbacks are @provide_session-decora
 ted, so the session is already rolled back and closed by the time the 
exception reaches the except -- swallowing doesn't leave a half-open 
transaction. This matches the existing precedent in 
_update_dag_run_state_for_paused_dags. Regression coverage is meaningful: the 
non_fatal test fails without the guard (asserts no raise plus queue growth 1 to 
2), and the default-path test pins that the unguarded behavior still propagates.
   
   One non-blocking question: self.log.exception logs a full traceback at ERROR 
every cycle, so a persistent (rather than transient) failure will repeat the 
traceback each interval and the cleanup will silently never succeed. Given the 
coarse interval that's probably acceptable, but did you consider log.warning 
without the traceback, or logging once, to avoid steady-state log noise?
   


-- 
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