sbmt-outbox 6.19.0 → 6.19.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c298e8639794940e746e4d60a2c66781f98eb058b1bb85b040695232a72fa250
4
- data.tar.gz: f3f4bef1e155b14fbd7b488f82c6e84b144ad32e2204d4ebe31b50566310e4ee
3
+ metadata.gz: 4bac4fb00e9e7ed83bcac6615de205d21fc5868fe371fd847bf9349f2a48849e
4
+ data.tar.gz: 71db4cfc1c0fb36399f214ef70b88b8b1752231d5ffb2ebbf6e76b71b487c755
5
5
  SHA512:
6
- metadata.gz: 1aebf60adf895f20432a04621a2fa88cd63722772906dac4870eb4cc0342e1d762f93ba287bf1bc065e1fa29eb2e14a514138570a84c202112cf28c4e6df00f6
7
- data.tar.gz: 64325c221edc8da990c6774e96208ae964e72407dd5483f83ab8ed189a2bd35f84c9f906b4dca0ae9d0b038266e83ea5a96e687fb4094d4513c7212789a29f07
6
+ metadata.gz: 4c9cf6a0e0cb436e22ced29364a2a1a724f7094c5d307b1f96f3761c4c53f78f514b53ec392c3d41f704195f015d9071b5eaed1d92e95e570d3533daf87395b1
7
+ data.tar.gz: 223d97189ef52c2eb2cf1a675d29a67283cd36198676b0f2f2b0d89354033b947c06aa10a6db4986317d584f06680dccf07aeddadd73f3672e8344f4f419e01f
@@ -118,7 +118,10 @@ module Sbmt
118
118
  batch_size = item_class.config.deletion_batch_size
119
119
  time_window = item_class.config.deletion_time_window
120
120
  min_date = Outbox.database_switcher.use_slave do
121
- item_class.where(table[:status].in(statuses)).minimum(:created_at)
121
+ # This query assumes that record with minimum 'id' also has minimum 'created_at'.
122
+ # We use it because it should be faster than plain 'SELECT MIN(created_at) ...'.
123
+ min_id = item_class.select(table[:id].minimum).where(status: statuses)
124
+ item_class.select(:created_at).where(table[:id].eq(min_id.arel)).first&.created_at
122
125
  end
123
126
  deleted_count = nil
124
127
 
@@ -174,10 +177,14 @@ module Sbmt
174
177
  end
175
178
 
176
179
  def delete_items_in_batches_with_between_mysql(waterline, statuses)
180
+ table = item_class.arel_table
177
181
  batch_size = item_class.config.deletion_batch_size
178
182
  time_window = item_class.config.deletion_time_window
179
183
  min_date = Outbox.database_switcher.use_slave do
180
- item_class.where(status: statuses).minimum(:created_at)
184
+ # This query assumes that record with minimum 'id' also has minimum 'created_at'.
185
+ # We use it because plain 'SELECT MIN(created_at) ...' is VERY slow in MySQL.
186
+ min_id = item_class.select(table[:id].minimum).where(status: statuses)
187
+ item_class.select(:created_at).where(table[:id].eq(min_id.arel)).first&.created_at
181
188
  end
182
189
  deleted_count = nil
183
190
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sbmt
4
4
  module Outbox
5
- VERSION = "6.19.0"
5
+ VERSION = "6.19.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sbmt-outbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.19.0
4
+ version: 6.19.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sbermarket Ruby-Platform Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-11 00:00:00.000000000 Z
11
+ date: 2025-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool
@@ -630,7 +630,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
630
630
  - !ruby/object:Gem::Version
631
631
  version: '0'
632
632
  requirements: []
633
- rubygems_version: 3.5.21
633
+ rubygems_version: 3.5.23
634
634
  signing_key:
635
635
  specification_version: 4
636
636
  summary: Outbox service