fix(scheduler): handle RuntimeError on threadsafe future.result

Log loop-teardown RuntimeError at warning for scheduled sends, feed
queue wait, and repeater cleanup_database; keep interval advert on
broad Exception since send_advert failures use RuntimeError.
This commit is contained in:
agessaman
2026-04-16 19:18:11 -07:00
parent ad09e8ba8a
commit 7b0124208f
+6
View File
@@ -155,6 +155,8 @@ class MessageScheduler:
try:
future.result(timeout=60) # 60 second timeout
self.bot._record_send_success()
except RuntimeError as e:
self.logger.warning("Event loop gone during scheduled message: %s", e)
except Exception as e:
self.logger.error(f"Error sending scheduled message: {type(e).__name__}: {e}")
self.bot._record_send_failure(scheduler=self)
@@ -482,6 +484,8 @@ class MessageScheduler:
"work may still be running on the main loop (per-feed send spacing).",
_FEED_MESSAGE_QUEUE_FUTURE_TIMEOUT,
)
except RuntimeError as e:
self.logger.warning("Event loop gone during feed message queue: %s", e)
except Exception as e:
self.logger.exception(f"Error processing message queue: {e}")
else:
@@ -554,6 +558,8 @@ class MessageScheduler:
)
try:
future.result(timeout=60)
except RuntimeError as e:
self.logger.warning("Event loop gone during cleanup_database: %s", e)
except Exception as e:
self.logger.error(f"Error in repeater_manager.cleanup_database: {type(e).__name__}: {e}")
else: