From a033e1d7348f2701e3e06fdebbfad455b30e8b26 Mon Sep 17 00:00:00 2001 From: Misha Merkushin Date: Tue, 11 Feb 2025 12:18:16 +0300 Subject: [PATCH] [DEX-2851] feat: user replica for deletion --- CHANGELOG.md | 6 ++++++ app/jobs/sbmt/outbox/base_delete_stale_items_job.rb | 8 ++++++-- lib/sbmt/outbox/version.rb | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51ae240..891f217 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed +## [6.19.0] - 2025-02-11 + +### Added + +- Querying minimum `created_at` for deletion now uses a replica database to reduce primary database load + ## [6.18.0] - 2025-02-04 ### Added diff --git a/app/jobs/sbmt/outbox/base_delete_stale_items_job.rb b/app/jobs/sbmt/outbox/base_delete_stale_items_job.rb index d484511..9212d6e 100644 --- a/app/jobs/sbmt/outbox/base_delete_stale_items_job.rb +++ b/app/jobs/sbmt/outbox/base_delete_stale_items_job.rb @@ -117,7 +117,9 @@ def delete_items_in_batches_with_between(waterline, statuses) table = item_class.arel_table batch_size = item_class.config.deletion_batch_size time_window = item_class.config.deletion_time_window - min_date = item_class.where(table[:status].in(statuses)).minimum(:created_at) + min_date = Outbox.database_switcher.use_slave do + item_class.where(table[:status].in(statuses)).minimum(:created_at) + end deleted_count = nil while min_date && min_date < waterline @@ -174,7 +176,9 @@ def mysql_delete_in_batches(waterline_failed, waterline_delivered) def delete_items_in_batches_with_between_mysql(waterline, statuses) batch_size = item_class.config.deletion_batch_size time_window = item_class.config.deletion_time_window - min_date = item_class.where(status: statuses).minimum(:created_at) + min_date = Outbox.database_switcher.use_slave do + item_class.where(status: statuses).minimum(:created_at) + end deleted_count = nil while min_date && min_date < waterline diff --git a/lib/sbmt/outbox/version.rb b/lib/sbmt/outbox/version.rb index b089199..d92486e 100644 --- a/lib/sbmt/outbox/version.rb +++ b/lib/sbmt/outbox/version.rb @@ -2,6 +2,6 @@ module Sbmt module Outbox - VERSION = "6.18.0" + VERSION = "6.19.0" end end