sbmt-outbox 6.9.0 → 6.10.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/interactors/sbmt/outbox/process_item.rb +19 -7
- data/lib/sbmt/outbox/middleware/open_telemetry/tracing_item_process_middleware.rb +9 -1
- data/lib/sbmt/outbox/middleware/sentry/tracing_batch_process_middleware.rb +0 -1
- data/lib/sbmt/outbox/v1/worker.rb +1 -1
- data/lib/sbmt/outbox/v2/box_processor.rb +1 -1
- data/lib/sbmt/outbox/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 563533826523f381bff35759aecedd3f1b5ed4e20067725e7f28d0a94808ab89
|
4
|
+
data.tar.gz: 3a974ff0df4cf3a771888b521d33e9d5b5df367973b9a43fc6dfd4f6418caed0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4af541b2e8db7fa1fec41071caf150a1df4e973a1f93bfc2491288d0d4fe69a49d20cc9ebd96dcb378d0b6cc381baef68b8dbd5cfde8fdb062730125fdcac120
|
7
|
+
data.tar.gz: 8274526f2a1c4fa433a20787ef14b07b83de4d11fa5d87f9ba30c7639bbb1396d4ae0fcec6d07493336d050ff757324e9bf88d14495e1ac803c1bf074a71734b
|
@@ -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
|
""
|
@@ -28,7 +28,9 @@ module Sbmt
|
|
28
28
|
extracted_context = ::OpenTelemetry.propagation.extract(item_options_headers)
|
29
29
|
::OpenTelemetry::Context.with_current(extracted_context) do
|
30
30
|
tracer.in_span(span_name(item_class), attributes: span_attributes.compact, kind: :consumer) do
|
31
|
-
|
31
|
+
Sbmt::Outbox.logger.with_tags(trace_id: trace_id) do
|
32
|
+
yield
|
33
|
+
end
|
32
34
|
end
|
33
35
|
end
|
34
36
|
end
|
@@ -42,6 +44,12 @@ module Sbmt
|
|
42
44
|
def span_name(item_class)
|
43
45
|
"#{item_class.box_type}/#{item_class.box_name} process item"
|
44
46
|
end
|
47
|
+
|
48
|
+
def trace_id
|
49
|
+
context = ::OpenTelemetry::Trace.current_span.context
|
50
|
+
|
51
|
+
context.valid? ? context.hex_trace_id : nil
|
52
|
+
end
|
45
53
|
end
|
46
54
|
end
|
47
55
|
end
|
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.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: 2024-09-
|
11
|
+
date: 2024-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|