mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-08-27 21:10:13 +00:00
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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user