Skip to content

Commit 69486bd

Browse files
committed
Gracefully handle 'database is locked' error on flush
This might happen on high event load and is not that critical as the database items were already transmitted and are marked as sent. The events will be removed from the database on the next run.
1 parent acb5a56 commit 69486bd

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

logstash_async/worker.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,16 @@ def _flush_queued_events(self, force=False):
180180
self._safe_log(u'exception', u'An error occurred while sending events: %s', e)
181181
self._database.requeue_queued_events(queued_events)
182182
else:
183-
self._database.delete_queued_events()
183+
self._delete_queued_events_from_database()
184184
self._reset_flush_counters()
185185

186+
# ----------------------------------------------------------------------
187+
def _delete_queued_events_from_database(self):
188+
try:
189+
self._database.delete_queued_events()
190+
except DatabaseLockedError:
191+
pass # nothing to handle, if it fails, we delete those events in a later run
192+
186193
# ----------------------------------------------------------------------
187194
def _queued_event_interval_reached(self):
188195
delta = datetime.now() - self._last_event_flush_date

0 commit comments

Comments
 (0)