elastic-apm 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ci/.jenkins_exclude.yml +8 -1
- data/.ci/.jenkins_ruby.yml +1 -0
- data/.ci/Jenkinsfile +64 -31
- data/.github/workflows/main.yml +14 -0
- data/.pre-commit-config.yaml +1 -5
- data/.rubocop.yml +35 -29
- data/CHANGELOG.asciidoc +20 -4
- data/Gemfile +1 -0
- data/README.md +2 -2
- data/bin/dev +1 -1
- data/bin/run-tests +3 -0
- data/docs/api.asciidoc +0 -29
- data/docs/configuration.asciidoc +11 -0
- data/docs/context.asciidoc +4 -4
- data/lib/elastic_apm.rb +5 -9
- data/lib/elastic_apm/agent.rb +0 -9
- data/lib/elastic_apm/central_config.rb +10 -10
- data/lib/elastic_apm/central_config/cache_control.rb +1 -1
- data/lib/elastic_apm/config.rb +4 -11
- data/lib/elastic_apm/config/options.rb +2 -4
- data/lib/elastic_apm/config/wildcard_pattern_list.rb +35 -0
- data/lib/elastic_apm/context_builder.rb +0 -2
- data/lib/elastic_apm/error.rb +1 -1
- data/lib/elastic_apm/error/exception.rb +2 -2
- data/lib/elastic_apm/error_builder.rb +0 -2
- data/lib/elastic_apm/grape.rb +0 -3
- data/lib/elastic_apm/instrumenter.rb +3 -13
- data/lib/elastic_apm/metadata/service_info.rb +0 -5
- data/lib/elastic_apm/metadata/system_info/container_info.rb +4 -6
- data/lib/elastic_apm/metrics.rb +0 -3
- data/lib/elastic_apm/metrics/cpu_mem_set.rb +0 -10
- data/lib/elastic_apm/metrics/metric.rb +6 -2
- data/lib/elastic_apm/metrics/set.rb +4 -4
- data/lib/elastic_apm/metrics/span_scoped_set.rb +1 -1
- data/lib/elastic_apm/metrics/transaction_set.rb +0 -2
- data/lib/elastic_apm/metrics/vm_set.rb +0 -3
- data/lib/elastic_apm/middleware.rb +0 -2
- data/lib/elastic_apm/normalizers/grape/endpoint_run.rb +2 -1
- data/lib/elastic_apm/normalizers/rails/active_record.rb +1 -1
- data/lib/elastic_apm/opentracing.rb +6 -15
- data/lib/elastic_apm/rails.rb +2 -5
- data/lib/elastic_apm/sinatra.rb +1 -1
- data/lib/elastic_apm/span.rb +2 -2
- data/lib/elastic_apm/span/context.rb +17 -1
- data/lib/elastic_apm/spies/elasticsearch.rb +0 -3
- data/lib/elastic_apm/spies/faraday.rb +2 -4
- data/lib/elastic_apm/spies/http.rb +0 -3
- data/lib/elastic_apm/spies/mongo.rb +10 -5
- data/lib/elastic_apm/spies/net_http.rb +1 -4
- data/lib/elastic_apm/spies/rake.rb +0 -2
- data/lib/elastic_apm/spies/sequel.rb +0 -2
- data/lib/elastic_apm/spies/sidekiq.rb +2 -6
- data/lib/elastic_apm/spies/sinatra.rb +0 -2
- data/lib/elastic_apm/stacktrace/frame.rb +0 -3
- data/lib/elastic_apm/stacktrace_builder.rb +0 -2
- data/lib/elastic_apm/subscriber.rb +2 -3
- data/lib/elastic_apm/trace_context.rb +0 -3
- data/lib/elastic_apm/transaction.rb +2 -2
- data/lib/elastic_apm/transport/base.rb +0 -6
- data/lib/elastic_apm/transport/connection.rb +1 -4
- data/lib/elastic_apm/transport/connection/http.rb +0 -2
- data/lib/elastic_apm/transport/filters.rb +1 -1
- data/lib/elastic_apm/transport/filters/secrets_filter.rb +1 -3
- data/lib/elastic_apm/transport/serializers.rb +0 -3
- data/lib/elastic_apm/transport/serializers/context_serializer.rb +0 -2
- data/lib/elastic_apm/transport/serializers/error_serializer.rb +0 -2
- data/lib/elastic_apm/transport/serializers/metadata_serializer.rb +0 -2
- data/lib/elastic_apm/transport/serializers/metricset_serializer.rb +0 -2
- data/lib/elastic_apm/transport/serializers/span_serializer.rb +0 -3
- data/lib/elastic_apm/transport/serializers/transaction_serializer.rb +0 -2
- data/lib/elastic_apm/transport/worker.rb +10 -6
- data/lib/elastic_apm/util.rb +1 -1
- data/lib/elastic_apm/version.rb +1 -1
- metadata +5 -5
- data/.ci/bin/check_paths_for_matches.py +0 -80
- data/.hound.yml +0 -2
data/docs/configuration.asciidoc
CHANGED
@@ -318,6 +318,17 @@ NOTE: `global_labels` are supported as of APM server version 7.2. `default_tags`
|
|
318
318
|
deprecated so please transition to using `global_labels` instead. In the meantime, any `default_tags`
|
319
319
|
that are set will override `global_labels`.
|
320
320
|
|
321
|
+
[float]
|
322
|
+
[[config-disable_metrics]]
|
323
|
+
==== `disable_metrics`
|
324
|
+
|============
|
325
|
+
| Environment | `Config` key | Default | Example
|
326
|
+
| `ELASTIC_APM_DISABLE_METRICS` | `disable_metrics` | [] | `"*.cpu.*,system.memory.total"`
|
327
|
+
|============
|
328
|
+
|
329
|
+
A comma-separated list of dotted metrics names that should not be sent to the APM Server.
|
330
|
+
You can use `*` to match multiple metrics.
|
331
|
+
|
321
332
|
[float]
|
322
333
|
[[config-disable-send]]
|
323
334
|
==== `disable_send`
|
data/docs/context.asciidoc
CHANGED
@@ -19,14 +19,14 @@ end
|
|
19
19
|
----
|
20
20
|
|
21
21
|
[float]
|
22
|
-
==== Adding
|
22
|
+
==== Adding labels
|
23
23
|
|
24
|
-
|
25
|
-
therefore
|
24
|
+
Labels are special in that they are indexed in your Elasticsearch database and
|
25
|
+
therefore queryable.
|
26
26
|
|
27
27
|
[source,ruby]
|
28
28
|
----
|
29
|
-
ElasticAPM.
|
29
|
+
ElasticAPM.set_label(:company_name, 'Acme, Inc.')
|
30
30
|
----
|
31
31
|
|
32
32
|
Note that `.`, `*` and `"` in keys are converted to `_`.
|
data/lib/elastic_apm.rb
CHANGED
@@ -28,7 +28,7 @@ require 'elastic_apm/sinatra' if defined?(::Sinatra)
|
|
28
28
|
require 'elastic_apm/grape' if defined?(::Grape)
|
29
29
|
|
30
30
|
# ElasticAPM
|
31
|
-
module ElasticAPM
|
31
|
+
module ElasticAPM
|
32
32
|
class << self
|
33
33
|
### Life cycle
|
34
34
|
|
@@ -71,7 +71,6 @@ module ElasticAPM # rubocop:disable Metrics/ModuleLength
|
|
71
71
|
agent&.current_span
|
72
72
|
end
|
73
73
|
|
74
|
-
# rubocop:disable Metrics/AbcSize
|
75
74
|
# Get a formatted string containing transaction, span, and trace ids.
|
76
75
|
# If a block is provided, the ids are yielded.
|
77
76
|
#
|
@@ -90,7 +89,6 @@ module ElasticAPM # rubocop:disable Metrics/ModuleLength
|
|
90
89
|
ids << "trace.id=#{trace_id}" if trace_id
|
91
90
|
ids.join(' ')
|
92
91
|
end
|
93
|
-
# rubocop:enable Metrics/AbcSize
|
94
92
|
|
95
93
|
# Start a new transaction
|
96
94
|
#
|
@@ -122,7 +120,6 @@ module ElasticAPM # rubocop:disable Metrics/ModuleLength
|
|
122
120
|
agent&.end_transaction(result)
|
123
121
|
end
|
124
122
|
|
125
|
-
# rubocop:disable Metrics/MethodLength
|
126
123
|
# Wrap a block in a Transaction, ending it after the block
|
127
124
|
#
|
128
125
|
# @param name [String] A description of the transaction, eg
|
@@ -158,9 +155,8 @@ module ElasticAPM # rubocop:disable Metrics/ModuleLength
|
|
158
155
|
end_transaction
|
159
156
|
end
|
160
157
|
end
|
161
|
-
# rubocop:enable Metrics/MethodLength
|
162
158
|
|
163
|
-
# rubocop:disable Metrics/
|
159
|
+
# rubocop:disable Metrics/ParameterLists
|
164
160
|
# Start a new span
|
165
161
|
#
|
166
162
|
# @param name [String] A description of the span, eq `SELECT FROM "users"`
|
@@ -193,7 +189,7 @@ module ElasticAPM # rubocop:disable Metrics/ModuleLength
|
|
193
189
|
span.original_backtrace ||= caller
|
194
190
|
end
|
195
191
|
end
|
196
|
-
# rubocop:enable Metrics/
|
192
|
+
# rubocop:enable Metrics/ParameterLists
|
197
193
|
|
198
194
|
# Ends the current span
|
199
195
|
#
|
@@ -202,7 +198,7 @@ module ElasticAPM # rubocop:disable Metrics/ModuleLength
|
|
202
198
|
agent&.end_span
|
203
199
|
end
|
204
200
|
|
205
|
-
# rubocop:disable Metrics/
|
201
|
+
# rubocop:disable Metrics/ParameterLists
|
206
202
|
# Wrap a block in a Span, ending it after the block
|
207
203
|
#
|
208
204
|
# @param name [String] A description of the span, eq `SELECT FROM "users"`
|
@@ -243,7 +239,7 @@ module ElasticAPM # rubocop:disable Metrics/ModuleLength
|
|
243
239
|
end_span
|
244
240
|
end
|
245
241
|
end
|
246
|
-
# rubocop:enable Metrics/
|
242
|
+
# rubocop:enable Metrics/ParameterLists
|
247
243
|
|
248
244
|
# Build a [Context] from a Rack `env`. The context may include information
|
249
245
|
# about the request, response, current user and more
|
data/lib/elastic_apm/agent.rb
CHANGED
@@ -13,7 +13,6 @@ require 'elastic_apm/metrics'
|
|
13
13
|
require 'elastic_apm/spies'
|
14
14
|
|
15
15
|
module ElasticAPM
|
16
|
-
# rubocop:disable Metrics/ClassLength
|
17
16
|
# @api private
|
18
17
|
class Agent
|
19
18
|
include Logging
|
@@ -27,7 +26,6 @@ module ElasticAPM
|
|
27
26
|
@instance
|
28
27
|
end
|
29
28
|
|
30
|
-
# rubocop:disable Metrics/MethodLength
|
31
29
|
def self.start(config)
|
32
30
|
return @instance if @instance
|
33
31
|
|
@@ -47,7 +45,6 @@ module ElasticAPM
|
|
47
45
|
@instance = new(config).start
|
48
46
|
end
|
49
47
|
end
|
50
|
-
# rubocop:enable Metrics/MethodLength
|
51
48
|
|
52
49
|
def self.stop
|
53
50
|
LOCK.synchronize do
|
@@ -62,7 +59,6 @@ module ElasticAPM
|
|
62
59
|
!!@instance
|
63
60
|
end
|
64
61
|
|
65
|
-
# rubocop:disable Metrics/MethodLength
|
66
62
|
def initialize(config)
|
67
63
|
@stacktrace_builder = StacktraceBuilder.new(config)
|
68
64
|
@context_builder = ContextBuilder.new(config)
|
@@ -77,7 +73,6 @@ module ElasticAPM
|
|
77
73
|
stacktrace_builder: stacktrace_builder
|
78
74
|
) { |event| enqueue event }
|
79
75
|
end
|
80
|
-
# rubocop:enable Metrics/MethodLength
|
81
76
|
|
82
77
|
attr_reader(
|
83
78
|
:central_config,
|
@@ -91,8 +86,6 @@ module ElasticAPM
|
|
91
86
|
)
|
92
87
|
|
93
88
|
def_delegator :@central_config, :config
|
94
|
-
|
95
|
-
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
96
89
|
def start
|
97
90
|
unless config.disable_start_message?
|
98
91
|
config.logger.info format(
|
@@ -113,7 +106,6 @@ module ElasticAPM
|
|
113
106
|
|
114
107
|
self
|
115
108
|
end
|
116
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
117
109
|
|
118
110
|
def stop
|
119
111
|
debug 'Stopping agent'
|
@@ -244,5 +236,4 @@ module ElasticAPM
|
|
244
236
|
super.split.first + '>'
|
245
237
|
end
|
246
238
|
end
|
247
|
-
# rubocop:enable Metrics/ClassLength
|
248
239
|
end
|
@@ -4,7 +4,7 @@ require 'elastic_apm/central_config/cache_control'
|
|
4
4
|
|
5
5
|
module ElasticAPM
|
6
6
|
# @api private
|
7
|
-
class CentralConfig
|
7
|
+
class CentralConfig
|
8
8
|
include Logging
|
9
9
|
|
10
10
|
# @api private
|
@@ -52,7 +52,6 @@ module ElasticAPM
|
|
52
52
|
.rescue(&method(:handle_error))
|
53
53
|
end
|
54
54
|
|
55
|
-
# rubocop:disable Metrics/MethodLength
|
56
55
|
def fetch_config
|
57
56
|
resp = perform_request
|
58
57
|
|
@@ -67,7 +66,6 @@ module ElasticAPM
|
|
67
66
|
raise ServerError, resp
|
68
67
|
end
|
69
68
|
end
|
70
|
-
# rubocop:enable Metrics/MethodLength
|
71
69
|
|
72
70
|
def assign(update)
|
73
71
|
# For each updated option, store the original value,
|
@@ -92,7 +90,6 @@ module ElasticAPM
|
|
92
90
|
@config = config.dup.tap { |new_config| new_config.assign(new_options) }
|
93
91
|
end
|
94
92
|
|
95
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
96
93
|
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
97
94
|
def handle_success(resp)
|
98
95
|
if (etag = resp.headers['Etag'])
|
@@ -121,17 +118,19 @@ module ElasticAPM
|
|
121
118
|
debug { e.backtrace.join('\n') }
|
122
119
|
end
|
123
120
|
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
124
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
125
121
|
|
126
122
|
def handle_error(error)
|
123
|
+
# For tests, WebMock failures don't have real responses
|
124
|
+
response = error.response if error.respond_to?(:response)
|
125
|
+
|
127
126
|
debug(
|
128
127
|
'Failed fetching config: %s, trying again in %d seconds',
|
129
|
-
|
128
|
+
response&.body, DEFAULT_MAX_AGE
|
130
129
|
)
|
131
130
|
|
132
131
|
assign({})
|
133
132
|
|
134
|
-
schedule_next_fetch(
|
133
|
+
schedule_next_fetch(response)
|
135
134
|
end
|
136
135
|
|
137
136
|
def perform_request
|
@@ -149,10 +148,11 @@ module ElasticAPM
|
|
149
148
|
{ 'Etag': @etag }
|
150
149
|
end
|
151
150
|
|
152
|
-
def schedule_next_fetch(resp)
|
151
|
+
def schedule_next_fetch(resp = nil)
|
152
|
+
headers = resp&.headers
|
153
153
|
seconds =
|
154
|
-
if
|
155
|
-
CacheControl.new(
|
154
|
+
if headers['Cache-Control']
|
155
|
+
CacheControl.new(headers['Cache-Control']).max_age
|
156
156
|
else
|
157
157
|
DEFAULT_MAX_AGE
|
158
158
|
end
|
@@ -26,7 +26,7 @@ module ElasticAPM
|
|
26
26
|
def parse!(value)
|
27
27
|
value.split(',').each do |token|
|
28
28
|
k, v = token.split('=').map(&:strip)
|
29
|
-
instance_variable_set(:"@#{k.
|
29
|
+
instance_variable_set(:"@#{k.tr('-', '_')}", v ? v.to_i : true)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
data/lib/elastic_apm/config.rb
CHANGED
@@ -4,9 +4,9 @@ require 'elastic_apm/config/options'
|
|
4
4
|
require 'elastic_apm/config/duration'
|
5
5
|
require 'elastic_apm/config/bytes'
|
6
6
|
require 'elastic_apm/config/regexp_list'
|
7
|
+
require 'elastic_apm/config/wildcard_pattern_list'
|
7
8
|
|
8
9
|
module ElasticAPM
|
9
|
-
# rubocop:disable Metrics/ClassLength
|
10
10
|
# @api private
|
11
11
|
class Config
|
12
12
|
extend Options
|
@@ -33,6 +33,7 @@ module ElasticAPM
|
|
33
33
|
option :custom_key_filters, type: :list, default: [], converter: RegexpList.new
|
34
34
|
option :default_tags, type: :dict, default: {}
|
35
35
|
option :default_labels, type: :dict, default: {}
|
36
|
+
option :disable_metrics, type: :list, default: [], converter: WildcardPatternList.new
|
36
37
|
option :disable_send, type: :bool, default: false
|
37
38
|
option :disable_start_message, type: :bool, default: false
|
38
39
|
option :disabled_instrumentations, type: :list, default: %w[json]
|
@@ -69,8 +70,6 @@ module ElasticAPM
|
|
69
70
|
option :transaction_sample_rate, type: :float, default: 1.0
|
70
71
|
option :verify_server_cert, type: :bool, default: true
|
71
72
|
# rubocop:enable Metrics/LineLength, Layout/ExtraSpacing
|
72
|
-
|
73
|
-
# rubocop:disable Metrics/MethodLength
|
74
73
|
def initialize(options = {})
|
75
74
|
@options = load_schema
|
76
75
|
|
@@ -93,7 +92,6 @@ module ElasticAPM
|
|
93
92
|
@__view_paths ||= []
|
94
93
|
@__root_path ||= Dir.pwd
|
95
94
|
end
|
96
|
-
# rubocop:enable Metrics/MethodLength
|
97
95
|
|
98
96
|
attr_accessor :__view_paths, :__root_path
|
99
97
|
attr_accessor :logger
|
@@ -105,7 +103,6 @@ module ElasticAPM
|
|
105
103
|
update.each { |key, value| send(:"#{key}=", value) }
|
106
104
|
end
|
107
105
|
|
108
|
-
# rubocop:disable Metrics/MethodLength
|
109
106
|
def available_instrumentations
|
110
107
|
%w[
|
111
108
|
delayed_job
|
@@ -123,7 +120,6 @@ module ElasticAPM
|
|
123
120
|
rake
|
124
121
|
]
|
125
122
|
end
|
126
|
-
# rubocop:enable Metrics/MethodLength
|
127
123
|
|
128
124
|
def enabled_instrumentations
|
129
125
|
available_instrumentations - disabled_instrumentations
|
@@ -166,7 +162,6 @@ module ElasticAPM
|
|
166
162
|
@span_frames_min_duration_us ||= span_frames_min_duration * 1_000_000
|
167
163
|
end
|
168
164
|
|
169
|
-
# rubocop:disable Metrics/MethodLength
|
170
165
|
def ssl_context
|
171
166
|
return unless use_ssl?
|
172
167
|
|
@@ -187,7 +182,6 @@ module ElasticAPM
|
|
187
182
|
end
|
188
183
|
end
|
189
184
|
end
|
190
|
-
# rubocop:enable Metrics/MethodLength
|
191
185
|
|
192
186
|
def inspect
|
193
187
|
super.split.first + '>'
|
@@ -235,7 +229,7 @@ module ElasticAPM
|
|
235
229
|
self.__root_path = Dir.pwd
|
236
230
|
end
|
237
231
|
|
238
|
-
def set_rails(app)
|
232
|
+
def set_rails(app)
|
239
233
|
self.service_name ||= format_name(service_name || rails_app_name(app))
|
240
234
|
self.framework_name ||= 'Ruby on Rails'
|
241
235
|
self.framework_version ||= ::Rails::VERSION::STRING
|
@@ -254,8 +248,7 @@ module ElasticAPM
|
|
254
248
|
end
|
255
249
|
|
256
250
|
def format_name(str)
|
257
|
-
str
|
251
|
+
str&.gsub('::', '_')
|
258
252
|
end
|
259
253
|
end
|
260
|
-
# rubocop:enable Metrics/ClassLength
|
261
254
|
end
|
@@ -33,7 +33,7 @@ module ElasticAPM
|
|
33
33
|
|
34
34
|
private
|
35
35
|
|
36
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
36
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
37
37
|
def normalize(val)
|
38
38
|
return unless val
|
39
39
|
|
@@ -54,7 +54,7 @@ module ElasticAPM
|
|
54
54
|
val
|
55
55
|
end
|
56
56
|
end
|
57
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
57
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
58
58
|
|
59
59
|
def normalize_bool(val)
|
60
60
|
return val unless val.is_a?(String)
|
@@ -97,7 +97,6 @@ module ElasticAPM
|
|
97
97
|
end]
|
98
98
|
end
|
99
99
|
|
100
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
101
100
|
def method_missing(name, *value)
|
102
101
|
name_str = name.to_s
|
103
102
|
|
@@ -116,7 +115,6 @@ module ElasticAPM
|
|
116
115
|
super
|
117
116
|
end
|
118
117
|
end
|
119
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
120
118
|
|
121
119
|
def [](key)
|
122
120
|
options[key]
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ElasticAPM
|
4
|
+
class Config
|
5
|
+
# @api private
|
6
|
+
class WildcardPatternList
|
7
|
+
# @api private
|
8
|
+
class WildcardPattern
|
9
|
+
def initialize(str)
|
10
|
+
@pattern = convert(str)
|
11
|
+
end
|
12
|
+
|
13
|
+
def match?(other)
|
14
|
+
!!@pattern.match(other)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def convert(str)
|
20
|
+
parts =
|
21
|
+
str.chars.each_with_object([]) do |char, arr|
|
22
|
+
arr << (char == '*' ? '.*' : Regexp.escape(char))
|
23
|
+
end
|
24
|
+
|
25
|
+
Regexp.new('\A' + parts.join + '\Z')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def call(value)
|
30
|
+
value = value.is_a?(String) ? value.split(',') : Array(value)
|
31
|
+
value.map(&WildcardPattern.method(:new))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -20,7 +20,6 @@ module ElasticAPM
|
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
24
23
|
def apply_to_request(context, rack_env:, for_type:)
|
25
24
|
req = rails_req?(rack_env) ? rack_env : Rack::Request.new(rack_env)
|
26
25
|
|
@@ -42,7 +41,6 @@ module ElasticAPM
|
|
42
41
|
|
43
42
|
context
|
44
43
|
end
|
45
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
46
44
|
|
47
45
|
def should_capture_body?(for_type)
|
48
46
|
option = config.capture_body
|
data/lib/elastic_apm/error.rb
CHANGED
@@ -53,7 +53,6 @@ module ElasticAPM
|
|
53
53
|
error.culprit = stacktrace.frames.first&.function
|
54
54
|
end
|
55
55
|
|
56
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
57
56
|
def add_current_transaction_fields(error, transaction)
|
58
57
|
return unless transaction
|
59
58
|
|
@@ -70,6 +69,5 @@ module ElasticAPM
|
|
70
69
|
Util.reverse_merge!(error.context.labels, transaction.context.labels)
|
71
70
|
Util.reverse_merge!(error.context.custom, transaction.context.custom)
|
72
71
|
end
|
73
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
74
72
|
end
|
75
73
|
end
|