sbmt-outbox 6.8.0 → 6.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9c1d6731755da78bfaf755eb229d0b0574cb305aa09be61ff4b582297be40ca
|
4
|
+
data.tar.gz: 33e1cc5bf44df4ab4fa85ed41552c86a5990bc4570c3019408800359823cc432
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09554fa859af8e022eb5b48ed2595ee34fa946bd4d43bf22b83435f5fbffd57eba30cde7324eebd8e282132ec98d10379e939d2e257727f309fec77a67f3b041'
|
7
|
+
data.tar.gz: ed32aa05783c3a83ee92ae9a30e6d059d608ecfe0451c95a8b6ab7e72bda4a6deb6684489cc69ca83b28322e1fb58cce9438868909db18fc2f33424c68e4e748
|
data/README.md
CHANGED
@@ -235,7 +235,7 @@ create_table :my_outbox_items do |t|
|
|
235
235
|
end
|
236
236
|
|
237
237
|
add_index :my_outbox_items, :uuid, unique: true
|
238
|
-
add_index :my_outbox_items, [:status, :bucket, :errors_count]
|
238
|
+
add_index :my_outbox_items, [:status, :id, :bucket], algorithm: :concurrently, include: [:errors_count]
|
239
239
|
add_index :my_outbox_items, [:event_name, :event_key, :id]
|
240
240
|
add_index :my_outbox_items, :created_at
|
241
241
|
```
|
@@ -11,7 +11,7 @@ module Sbmt
|
|
11
11
|
|
12
12
|
METRICS_COUNTERS = %i[error_counter retry_counter sent_counter fetch_error_counter discarded_counter].freeze
|
13
13
|
|
14
|
-
delegate :log_success, :log_failure, to: "Sbmt::Outbox.logger"
|
14
|
+
delegate :log_success, :log_info, :log_failure, to: "Sbmt::Outbox.logger"
|
15
15
|
delegate :item_process_middlewares, to: "Sbmt::Outbox"
|
16
16
|
delegate :box_type, :box_name, :owner, to: :item_class
|
17
17
|
|
@@ -73,7 +73,7 @@ module Sbmt
|
|
73
73
|
end
|
74
74
|
|
75
75
|
unless item.for_processing?
|
76
|
-
|
76
|
+
log_info("already processed")
|
77
77
|
counters[:fetch_error_counter] += 1
|
78
78
|
return Failure(:already_processed)
|
79
79
|
end
|
@@ -154,7 +154,7 @@ module Sbmt
|
|
154
154
|
# rubocop:enable Metrics/MethodLength
|
155
155
|
|
156
156
|
def track_failed(ex_or_msg, item = nil)
|
157
|
-
|
157
|
+
log_processing_error(ex_or_msg, item)
|
158
158
|
|
159
159
|
item&.touch_processed_at
|
160
160
|
item&.add_error(ex_or_msg)
|
@@ -170,6 +170,8 @@ module Sbmt
|
|
170
170
|
counters[:retry_counter] += 1
|
171
171
|
item.pending!
|
172
172
|
end
|
173
|
+
rescue => e
|
174
|
+
log_error_handling_error(e, item)
|
173
175
|
end
|
174
176
|
|
175
177
|
def track_successed(item)
|
@@ -196,18 +198,28 @@ module Sbmt
|
|
196
198
|
counters[:discarded_counter] += 1
|
197
199
|
end
|
198
200
|
|
199
|
-
def
|
201
|
+
def log_processing_error(ex_or_msg, item = nil)
|
200
202
|
text = format_exception_error(ex_or_msg)
|
201
203
|
|
202
204
|
msg = "Failed processing #{box_type} item with error: #{text}.\n" \
|
203
205
|
"Record: #{item_class.name}##{item_id}.\n" \
|
204
206
|
"#{item&.log_details&.to_json}"
|
205
207
|
|
206
|
-
log_failure(msg,
|
208
|
+
log_failure(msg, stacktrace: format_backtrace(ex_or_msg))
|
207
209
|
end
|
208
210
|
|
209
|
-
def
|
210
|
-
text =
|
211
|
+
def log_error_handling_error(handling_error, item = nil)
|
212
|
+
text = format_exception_error(handling_error, extract_cause: false)
|
213
|
+
|
214
|
+
msg = "Could not persist status of failed #{box_type} item due to error: #{text}.\n" \
|
215
|
+
"Record: #{item_class.name}##{item_id}.\n" \
|
216
|
+
"#{item&.log_details&.to_json}"
|
217
|
+
|
218
|
+
log_failure(msg, stacktrace: format_backtrace(handling_error))
|
219
|
+
end
|
220
|
+
|
221
|
+
def format_exception_error(e, extract_cause: true)
|
222
|
+
text = if extract_cause && e.respond_to?(:cause) && !e.cause.nil?
|
211
223
|
"#{format_exception_error(e.cause)}. "
|
212
224
|
else
|
213
225
|
""
|
@@ -44,7 +44,7 @@ module Outbox
|
|
44
44
|
end
|
45
45
|
|
46
46
|
add_index :#{table_name}, :uuid, unique: true
|
47
|
-
add_index :#{table_name}, [:status, :bucket, :errors_count]
|
47
|
+
add_index :#{table_name}, [:status, :id, :bucket], algorithm: :concurrently, include: [:errors_count]
|
48
48
|
add_index :#{table_name}, [:event_key, :id]
|
49
49
|
add_index :#{table_name}, :created_at
|
50
50
|
RUBY
|
data/lib/sbmt/outbox/version.rb
CHANGED
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.
|
4
|
+
version: 6.10.0
|
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: 2024-09-
|
11
|
+
date: 2024-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|
@@ -640,7 +640,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
640
640
|
- !ruby/object:Gem::Version
|
641
641
|
version: '0'
|
642
642
|
requirements: []
|
643
|
-
rubygems_version: 3.5.
|
643
|
+
rubygems_version: 3.5.19
|
644
644
|
signing_key:
|
645
645
|
specification_version: 4
|
646
646
|
summary: Outbox service
|