From 6914823380635946a1b00c2da4a67d6cd2233ad6 Mon Sep 17 00:00:00 2001 From: Mike Fedosin Date: Mon, 22 Jul 2019 13:32:18 +0200 Subject: [PATCH] Bulk delete of stored delayed calls Instead of making a lot of single requests for deleting stored delayed calls, we can use bulk requests. Change-Id: Ia2a6462d72f31df18a9811329672eae7f60d160f --- mistral/services/legacy_scheduler.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/mistral/services/legacy_scheduler.py b/mistral/services/legacy_scheduler.py index c7d8bb7f8..edec03d37 100644 --- a/mistral/services/legacy_scheduler.py +++ b/mistral/services/legacy_scheduler.py @@ -300,20 +300,16 @@ class LegacyScheduler(sched_base.Scheduler): :param db_calls: Delayed calls to delete from DB. """ + try: + db_api.delete_delayed_calls(id={'in': [c.id for c in db_calls]}) + except Exception as e: + LOG.error( + "Failed to delete all delayed calls [exception=%s]", e + ) - with db_api.transaction(): - for call in db_calls: - try: - db_api.delete_delayed_call(call.id) - except Exception as e: - LOG.error( - "Failed to delete delayed call [call=%s, " - "exception=%s]", call, e - ) - - # We have to re-raise any exception because the transaction - # would be already invalid anyway. If it's a deadlock then - # it will be handled. - raise e + # We have to re-raise any exception because the transaction + # would be already invalid anyway. If it's a deadlock then + # it will be handled. + raise e LOG.debug("Scheduler deleted %s delayed calls.", len(db_calls))