newrelic_rpm 8.9.0 → 8.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +12 -6
  3. data/.simplecov +1 -0
  4. data/.snyk +11 -0
  5. data/Brewfile +1 -0
  6. data/CHANGELOG.md +56 -0
  7. data/Guardfile +1 -0
  8. data/Rakefile +5 -0
  9. data/bin/mongrel_rpm +7 -6
  10. data/bin/newrelic +2 -1
  11. data/bin/newrelic_cmd +1 -0
  12. data/bin/nrdebug +3 -2
  13. data/init.rb +3 -2
  14. data/install.rb +1 -0
  15. data/lib/new_relic/agent/adaptive_sampler.rb +4 -3
  16. data/lib/new_relic/agent/agent/shutdown.rb +3 -2
  17. data/lib/new_relic/agent/agent/special_startup.rb +3 -2
  18. data/lib/new_relic/agent/agent/start_worker_thread.rb +15 -14
  19. data/lib/new_relic/agent/agent/startup.rb +11 -10
  20. data/lib/new_relic/agent/agent.rb +35 -33
  21. data/lib/new_relic/agent/agent_logger.rb +2 -1
  22. data/lib/new_relic/agent/attribute_filter.rb +1 -0
  23. data/lib/new_relic/agent/attribute_processing.rb +4 -3
  24. data/lib/new_relic/agent/attributes.rb +2 -1
  25. data/lib/new_relic/agent/audit_logger.rb +1 -0
  26. data/lib/new_relic/agent/autostart.rb +1 -0
  27. data/lib/new_relic/agent/chained_call.rb +1 -0
  28. data/lib/new_relic/agent/commands/agent_command.rb +1 -0
  29. data/lib/new_relic/agent/commands/agent_command_router.rb +4 -3
  30. data/lib/new_relic/agent/commands/thread_profiler_session.rb +1 -0
  31. data/lib/new_relic/agent/configuration/default_source.rb +35 -7
  32. data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -0
  33. data/lib/new_relic/agent/configuration/environment_source.rb +2 -1
  34. data/lib/new_relic/agent/configuration/event_harvest_config.rb +1 -0
  35. data/lib/new_relic/agent/configuration/high_security_source.rb +1 -0
  36. data/lib/new_relic/agent/configuration/manager.rb +2 -1
  37. data/lib/new_relic/agent/configuration/manual_source.rb +1 -0
  38. data/lib/new_relic/agent/configuration/mask_defaults.rb +1 -0
  39. data/lib/new_relic/agent/configuration/security_policy_source.rb +7 -3
  40. data/lib/new_relic/agent/configuration/server_source.rb +7 -6
  41. data/lib/new_relic/agent/configuration/yaml_source.rb +4 -1
  42. data/lib/new_relic/agent/configuration.rb +1 -0
  43. data/lib/new_relic/agent/connect/request_builder.rb +1 -0
  44. data/lib/new_relic/agent/connect/response_handler.rb +4 -3
  45. data/lib/new_relic/agent/custom_event_aggregator.rb +5 -4
  46. data/lib/new_relic/agent/database/explain_plan_helpers.rb +1 -0
  47. data/lib/new_relic/agent/database/obfuscation_helpers.rb +1 -0
  48. data/lib/new_relic/agent/database/obfuscator.rb +2 -1
  49. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +1 -0
  50. data/lib/new_relic/agent/database.rb +3 -2
  51. data/lib/new_relic/agent/database_adapter.rb +1 -0
  52. data/lib/new_relic/agent/datastores/metric_helper.rb +9 -8
  53. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +2 -0
  54. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -0
  55. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +2 -1
  56. data/lib/new_relic/agent/datastores/mongo.rb +1 -0
  57. data/lib/new_relic/agent/datastores/redis.rb +3 -2
  58. data/lib/new_relic/agent/datastores.rb +4 -3
  59. data/lib/new_relic/agent/deprecator.rb +1 -0
  60. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +1 -0
  61. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +16 -16
  62. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +9 -9
  63. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +18 -18
  64. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +8 -8
  65. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +2 -2
  66. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +40 -39
  67. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +16 -14
  68. data/lib/new_relic/agent/distributed_tracing.rb +17 -17
  69. data/lib/new_relic/agent/encoding_normalizer.rb +1 -0
  70. data/lib/new_relic/agent/error_collector.rb +6 -4
  71. data/lib/new_relic/agent/error_event_aggregator.rb +3 -3
  72. data/lib/new_relic/agent/error_filter.rb +1 -0
  73. data/lib/new_relic/agent/error_trace_aggregator.rb +2 -1
  74. data/lib/new_relic/agent/event_aggregator.rb +20 -19
  75. data/lib/new_relic/agent/event_buffer.rb +1 -0
  76. data/lib/new_relic/agent/event_listener.rb +1 -0
  77. data/lib/new_relic/agent/event_loop.rb +7 -6
  78. data/lib/new_relic/agent/external.rb +9 -8
  79. data/lib/new_relic/agent/guid_generator.rb +2 -1
  80. data/lib/new_relic/agent/harvester.rb +1 -0
  81. data/lib/new_relic/agent/heap.rb +3 -2
  82. data/lib/new_relic/agent/hostname.rb +4 -2
  83. data/lib/new_relic/agent/http_clients/abstract.rb +1 -1
  84. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +5 -5
  85. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +4 -4
  86. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +1 -1
  87. data/lib/new_relic/agent/http_clients/uri_util.rb +1 -1
  88. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +6 -4
  89. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +2 -0
  90. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +6 -4
  91. data/lib/new_relic/agent/instrumentation/active_job.rb +2 -1
  92. data/lib/new_relic/agent/instrumentation/active_merchant.rb +2 -1
  93. data/lib/new_relic/agent/instrumentation/active_record.rb +9 -8
  94. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +15 -14
  95. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +3 -2
  96. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +1 -0
  97. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +5 -3
  98. data/lib/new_relic/agent/instrumentation/active_storage.rb +2 -1
  99. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +16 -14
  100. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +1 -0
  101. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +1 -0
  102. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +1 -0
  103. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +2 -1
  104. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +2 -1
  105. data/lib/new_relic/agent/instrumentation/authlogic.rb +2 -1
  106. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +10 -9
  107. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +10 -10
  108. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +4 -3
  109. data/lib/new_relic/agent/instrumentation/bunny.rb +1 -1
  110. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +13 -9
  111. data/lib/new_relic/agent/instrumentation/curb/chain.rb +21 -21
  112. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +8 -8
  113. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +2 -2
  114. data/lib/new_relic/agent/instrumentation/curb.rb +2 -1
  115. data/lib/new_relic/agent/instrumentation/data_mapper.rb +43 -42
  116. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +1 -1
  117. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +2 -2
  118. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +1 -1
  119. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +3 -2
  120. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +3 -2
  121. data/lib/new_relic/agent/instrumentation/excon.rb +2 -1
  122. data/lib/new_relic/agent/instrumentation/grape/chain.rb +6 -5
  123. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +5 -4
  124. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +4 -3
  125. data/lib/new_relic/agent/instrumentation/grape.rb +1 -0
  126. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +106 -0
  127. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +88 -0
  128. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +117 -0
  129. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +31 -0
  130. data/lib/new_relic/agent/instrumentation/grpc/helper.rb +31 -0
  131. data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +70 -0
  132. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +135 -0
  133. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +36 -0
  134. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +27 -0
  135. data/lib/new_relic/agent/instrumentation/grpc_client.rb +24 -0
  136. data/lib/new_relic/agent/instrumentation/grpc_server.rb +26 -0
  137. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +1 -0
  138. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +6 -5
  139. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +1 -0
  140. data/lib/new_relic/agent/instrumentation/httpclient.rb +2 -1
  141. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +1 -0
  142. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +4 -3
  143. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +1 -0
  144. data/lib/new_relic/agent/instrumentation/httprb.rb +2 -1
  145. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +2 -1
  146. data/lib/new_relic/agent/instrumentation/logger/chain.rb +2 -1
  147. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +5 -0
  148. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +1 -0
  149. data/lib/new_relic/agent/instrumentation/logger.rb +2 -1
  150. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +2 -2
  151. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +19 -19
  152. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +8 -8
  153. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +17 -14
  154. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +14 -14
  155. data/lib/new_relic/agent/instrumentation/memcache.rb +1 -1
  156. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +1 -0
  157. data/lib/new_relic/agent/instrumentation/mongo.rb +2 -1
  158. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +14 -12
  159. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +1 -0
  160. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +5 -4
  161. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +1 -0
  162. data/lib/new_relic/agent/instrumentation/net_http.rb +2 -1
  163. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +5 -4
  164. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +1 -0
  165. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +1 -0
  166. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +1 -0
  167. data/lib/new_relic/agent/instrumentation/padrino.rb +2 -1
  168. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +3 -2
  169. data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -0
  170. data/lib/new_relic/agent/instrumentation/rack/chain.rb +12 -11
  171. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +1 -0
  172. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +7 -6
  173. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +4 -3
  174. data/lib/new_relic/agent/instrumentation/rack.rb +1 -0
  175. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +6 -5
  176. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +1 -0
  177. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +3 -1
  178. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +3 -1
  179. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +3 -1
  180. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +3 -2
  181. data/lib/new_relic/agent/instrumentation/rake/chain.rb +2 -1
  182. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +1 -1
  183. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +1 -0
  184. data/lib/new_relic/agent/instrumentation/rake.rb +3 -2
  185. data/lib/new_relic/agent/instrumentation/redis/chain.rb +3 -3
  186. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +5 -5
  187. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +3 -3
  188. data/lib/new_relic/agent/instrumentation/redis.rb +2 -1
  189. data/lib/new_relic/agent/instrumentation/resque/chain.rb +2 -1
  190. data/lib/new_relic/agent/instrumentation/resque/helper.rb +1 -0
  191. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +1 -0
  192. data/lib/new_relic/agent/instrumentation/resque.rb +3 -2
  193. data/lib/new_relic/agent/instrumentation/sequel.rb +8 -7
  194. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +1 -0
  195. data/lib/new_relic/agent/instrumentation/sidekiq.rb +6 -4
  196. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +1 -0
  197. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +2 -1
  198. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +1 -0
  199. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +1 -0
  200. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +2 -1
  201. data/lib/new_relic/agent/instrumentation/sinatra.rb +2 -1
  202. data/lib/new_relic/agent/instrumentation/sunspot.rb +2 -1
  203. data/lib/new_relic/agent/instrumentation/thread/chain.rb +2 -1
  204. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +1 -0
  205. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +1 -0
  206. data/lib/new_relic/agent/instrumentation/thread.rb +2 -1
  207. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +1 -0
  208. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +1 -0
  209. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +1 -0
  210. data/lib/new_relic/agent/instrumentation/tilt.rb +1 -0
  211. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +1 -0
  212. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +6 -5
  213. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +1 -0
  214. data/lib/new_relic/agent/instrumentation/typhoeus.rb +2 -1
  215. data/lib/new_relic/agent/instrumentation.rb +1 -0
  216. data/lib/new_relic/agent/internal_agent_error.rb +1 -0
  217. data/lib/new_relic/agent/javascript_instrumentor.rb +7 -6
  218. data/lib/new_relic/agent/linking_metadata.rb +2 -2
  219. data/lib/new_relic/agent/log_event_aggregator.rb +6 -5
  220. data/lib/new_relic/agent/log_once.rb +1 -0
  221. data/lib/new_relic/agent/log_priority.rb +1 -0
  222. data/lib/new_relic/agent/logging.rb +13 -12
  223. data/lib/new_relic/agent/memory_logger.rb +1 -0
  224. data/lib/new_relic/agent/messaging.rb +18 -18
  225. data/lib/new_relic/agent/method_tracer.rb +6 -5
  226. data/lib/new_relic/agent/method_tracer_helpers.rb +8 -5
  227. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +3 -2
  228. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +3 -2
  229. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +1 -0
  230. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +2 -1
  231. data/lib/new_relic/agent/monitors.rb +5 -4
  232. data/lib/new_relic/agent/new_relic_service/encoders.rb +2 -1
  233. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +4 -3
  234. data/lib/new_relic/agent/new_relic_service/marshaller.rb +1 -0
  235. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +1 -0
  236. data/lib/new_relic/agent/new_relic_service.rb +11 -11
  237. data/lib/new_relic/agent/noticible_error.rb +1 -1
  238. data/lib/new_relic/agent/null_logger.rb +1 -0
  239. data/lib/new_relic/agent/obfuscator.rb +2 -1
  240. data/lib/new_relic/agent/parameter_filtering.rb +1 -0
  241. data/lib/new_relic/agent/payload_metric_mapping.rb +1 -0
  242. data/lib/new_relic/agent/pipe_channel_manager.rb +6 -5
  243. data/lib/new_relic/agent/pipe_service.rb +1 -0
  244. data/lib/new_relic/agent/prepend_supportability.rb +2 -1
  245. data/lib/new_relic/agent/priority_sampled_buffer.rb +2 -1
  246. data/lib/new_relic/agent/range_extensions.rb +8 -27
  247. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +2 -1
  248. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -0
  249. data/lib/new_relic/agent/rules_engine.rb +2 -1
  250. data/lib/new_relic/agent/sampler.rb +1 -0
  251. data/lib/new_relic/agent/sampler_collection.rb +1 -0
  252. data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -0
  253. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +1 -0
  254. data/lib/new_relic/agent/samplers/memory_sampler.rb +5 -4
  255. data/lib/new_relic/agent/samplers/object_sampler.rb +1 -0
  256. data/lib/new_relic/agent/samplers/vm_sampler.rb +1 -0
  257. data/lib/new_relic/agent/span_event_aggregator.rb +2 -1
  258. data/lib/new_relic/agent/span_event_primitive.rb +15 -11
  259. data/lib/new_relic/agent/sql_sampler.rb +7 -6
  260. data/lib/new_relic/agent/stats.rb +3 -1
  261. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -0
  262. data/lib/new_relic/agent/stats_engine/stats_hash.rb +3 -2
  263. data/lib/new_relic/agent/stats_engine.rb +1 -0
  264. data/lib/new_relic/agent/synthetics_event_aggregator.rb +6 -5
  265. data/lib/new_relic/agent/system_info.rb +8 -7
  266. data/lib/new_relic/agent/threading/agent_thread.rb +1 -0
  267. data/lib/new_relic/agent/threading/backtrace_node.rb +6 -3
  268. data/lib/new_relic/agent/threading/backtrace_service.rb +1 -0
  269. data/lib/new_relic/agent/threading/thread_profile.rb +1 -0
  270. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -0
  271. data/lib/new_relic/agent/tracer.rb +12 -11
  272. data/lib/new_relic/agent/transaction/abstract_segment.rb +64 -31
  273. data/lib/new_relic/agent/transaction/datastore_segment.rb +12 -11
  274. data/lib/new_relic/agent/transaction/distributed_tracer.rb +52 -47
  275. data/lib/new_relic/agent/transaction/distributed_tracing.rb +21 -21
  276. data/lib/new_relic/agent/transaction/external_request_segment.rb +36 -27
  277. data/lib/new_relic/agent/transaction/message_broker_segment.rb +6 -5
  278. data/lib/new_relic/agent/transaction/request_attributes.rb +29 -28
  279. data/lib/new_relic/agent/transaction/segment.rb +8 -7
  280. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -0
  281. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -0
  282. data/lib/new_relic/agent/transaction/trace.rb +3 -2
  283. data/lib/new_relic/agent/transaction/trace_builder.rb +10 -9
  284. data/lib/new_relic/agent/transaction/trace_context.rb +22 -19
  285. data/lib/new_relic/agent/transaction/trace_node.rb +9 -8
  286. data/lib/new_relic/agent/transaction/tracing.rb +7 -6
  287. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -0
  288. data/lib/new_relic/agent/transaction.rb +22 -21
  289. data/lib/new_relic/agent/transaction_error_primitive.rb +9 -8
  290. data/lib/new_relic/agent/transaction_event_aggregator.rb +5 -4
  291. data/lib/new_relic/agent/transaction_event_primitive.rb +3 -3
  292. data/lib/new_relic/agent/transaction_event_recorder.rb +14 -12
  293. data/lib/new_relic/agent/transaction_metrics.rb +3 -2
  294. data/lib/new_relic/agent/transaction_sampler.rb +4 -3
  295. data/lib/new_relic/agent/transaction_time_aggregator.rb +13 -12
  296. data/lib/new_relic/agent/utilization/aws.rb +4 -3
  297. data/lib/new_relic/agent/utilization/azure.rb +1 -0
  298. data/lib/new_relic/agent/utilization/gcp.rb +6 -5
  299. data/lib/new_relic/agent/utilization/pcf.rb +3 -2
  300. data/lib/new_relic/agent/utilization/vendor.rb +27 -26
  301. data/lib/new_relic/agent/utilization_data.rb +1 -0
  302. data/lib/new_relic/agent/vm/jruby_vm.rb +1 -0
  303. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -0
  304. data/lib/new_relic/agent/vm/mri_vm.rb +1 -0
  305. data/lib/new_relic/agent/vm/snapshot.rb +1 -0
  306. data/lib/new_relic/agent/vm.rb +1 -0
  307. data/lib/new_relic/agent/worker_loop.rb +2 -1
  308. data/lib/new_relic/agent.rb +11 -10
  309. data/lib/new_relic/cli/command.rb +5 -4
  310. data/lib/new_relic/cli/commands/deployments.rb +9 -8
  311. data/lib/new_relic/cli/commands/install.rb +6 -5
  312. data/lib/new_relic/coerce.rb +4 -4
  313. data/lib/new_relic/collection_helper.rb +2 -1
  314. data/lib/new_relic/control/class_methods.rb +1 -0
  315. data/lib/new_relic/control/frameworks/external.rb +1 -0
  316. data/lib/new_relic/control/frameworks/rails.rb +3 -2
  317. data/lib/new_relic/control/frameworks/rails3.rb +1 -0
  318. data/lib/new_relic/control/frameworks/rails4.rb +1 -0
  319. data/lib/new_relic/control/frameworks/rails_notifications.rb +1 -0
  320. data/lib/new_relic/control/frameworks/ruby.rb +1 -0
  321. data/lib/new_relic/control/frameworks/sinatra.rb +1 -0
  322. data/lib/new_relic/control/frameworks.rb +1 -0
  323. data/lib/new_relic/control/instance_methods.rb +5 -4
  324. data/lib/new_relic/control/instrumentation.rb +7 -6
  325. data/lib/new_relic/control/server_methods.rb +2 -1
  326. data/lib/new_relic/control.rb +1 -0
  327. data/lib/new_relic/delayed_job_injection.rb +1 -0
  328. data/lib/new_relic/dependency_detection.rb +18 -16
  329. data/lib/new_relic/environment_report.rb +1 -0
  330. data/lib/new_relic/helper.rb +4 -3
  331. data/lib/new_relic/language_support.rb +1 -0
  332. data/lib/new_relic/latest_changes.rb +1 -0
  333. data/lib/new_relic/local_environment.rb +5 -6
  334. data/lib/new_relic/metric_data.rb +3 -2
  335. data/lib/new_relic/metric_spec.rb +2 -1
  336. data/lib/new_relic/noticed_error.rb +1 -1
  337. data/lib/new_relic/rack/agent_hooks.rb +1 -0
  338. data/lib/new_relic/rack/agent_middleware.rb +1 -0
  339. data/lib/new_relic/rack/browser_monitoring.rb +3 -2
  340. data/lib/new_relic/rack.rb +1 -0
  341. data/lib/new_relic/recipes/capistrano3.rb +7 -6
  342. data/lib/new_relic/recipes/capistrano_legacy.rb +12 -11
  343. data/lib/new_relic/recipes.rb +1 -0
  344. data/lib/new_relic/supportability_helper.rb +5 -4
  345. data/lib/new_relic/version.rb +2 -1
  346. data/lib/newrelic_rpm.rb +1 -0
  347. data/lib/sequel/extensions/newrelic_instrumentation.rb +6 -5
  348. data/lib/sequel/plugins/newrelic_instrumentation.rb +1 -0
  349. data/lib/tasks/all.rb +1 -0
  350. data/lib/tasks/config.rake +2 -1
  351. data/lib/tasks/coverage_report.rake +2 -1
  352. data/lib/tasks/install.rake +1 -0
  353. data/lib/tasks/multiverse.rake +1 -0
  354. data/lib/tasks/multiverse.rb +8 -7
  355. data/lib/tasks/newrelic.rb +1 -0
  356. data/lib/tasks/tests.rake +1 -0
  357. data/newrelic.yml +505 -486
  358. data/newrelic_rpm.gemspec +3 -1
  359. data/recipes/newrelic.rb +1 -0
  360. data/test/agent_helper.rb +113 -103
  361. metadata +28 -2
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  require 'new_relic/agent/transaction/abstract_segment'
6
7
  require 'new_relic/agent/span_event_primitive'
@@ -15,9 +16,9 @@ module NewRelic
15
16
  # initialize it as an array that would be empty, have one item, or many items.
16
17
  attr_reader :unscoped_metrics, :custom_transaction_attributes
17
18
 
18
- def initialize name = nil, unscoped_metrics = nil, start_time = nil
19
+ def initialize(name = nil, unscoped_metrics = nil, start_time = nil)
19
20
  @unscoped_metrics = unscoped_metrics
20
- super name, start_time
21
+ super(name, start_time)
21
22
  end
22
23
 
23
24
  def attributes
@@ -32,7 +33,7 @@ module NewRelic
32
33
  if segment = NewRelic::Agent::Tracer.current_segment
33
34
  segment.merge_untrusted_agent_attributes(attributes, prefix, default_destinations)
34
35
  else
35
- NewRelic::Agent.logger.debug "Attempted to merge untrusted attributes without segment"
36
+ NewRelic::Agent.logger.debug("Attempted to merge untrusted attributes without segment")
36
37
  end
37
38
  end
38
39
 
@@ -49,16 +50,16 @@ module NewRelic
49
50
 
50
51
  def record_metrics
51
52
  if record_scoped_metric?
52
- metric_cache.record_scoped_and_unscoped name, duration, exclusive_duration
53
+ metric_cache.record_scoped_and_unscoped(name, duration, exclusive_duration)
53
54
  else
54
- append_unscoped_metric name
55
+ append_unscoped_metric(name)
55
56
  end
56
57
  if unscoped_metrics
57
- metric_cache.record_unscoped unscoped_metrics, duration, exclusive_duration
58
+ metric_cache.record_unscoped(unscoped_metrics, duration, exclusive_duration)
58
59
  end
59
60
  end
60
61
 
61
- def append_unscoped_metric metric
62
+ def append_unscoped_metric(metric)
62
63
  if @unscoped_metrics
63
64
  if Array === @unscoped_metrics
64
65
  if unscoped_metrics.frozen?
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  require 'new_relic/agent/transaction/transaction_sample_buffer'
6
7
 
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  require 'new_relic/agent/transaction/transaction_sample_buffer'
6
7
 
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  require 'new_relic/agent/transaction/trace_node'
6
7
 
@@ -50,7 +51,7 @@ module NewRelic
50
51
  end
51
52
 
52
53
  def create_node(time_since_start, metric_name = nil)
53
- raise FinishedTraceError.new "Can't create additional node for finished trace." if self.finished
54
+ raise FinishedTraceError.new("Can't create additional node for finished trace.") if self.finished
54
55
  self.node_count += 1
55
56
  NewRelic::Agent::Transaction::TraceNode.new(metric_name, time_since_start)
56
57
  end
@@ -121,7 +122,7 @@ module NewRelic
121
122
  }
122
123
  end
123
124
 
124
- def trace_tree attributes_hash
125
+ def trace_tree(attributes_hash)
125
126
  [
126
127
  NewRelic::Coerce.float(self.start_time),
127
128
  NewRelic::EMPTY_HASH,
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  require 'new_relic/helper'
6
7
  require 'new_relic/agent/transaction/trace'
@@ -12,10 +13,10 @@ module NewRelic
12
13
  module TraceBuilder
13
14
  extend self
14
15
 
15
- def build_trace transaction
16
- trace = Trace.new transaction.start_time
16
+ def build_trace(transaction)
17
+ trace = Trace.new(transaction.start_time)
17
18
  trace.root_node.exit_timestamp = transaction.end_time - transaction.start_time
18
- copy_attributes transaction, trace
19
+ copy_attributes(transaction, trace)
19
20
  first, *rest = transaction.segments
20
21
  relationship_map = rest.group_by { |s| s.parent }
21
22
  trace.root_node.children << process_segments(transaction, first, trace.root_node, relationship_map)
@@ -25,25 +26,25 @@ module NewRelic
25
26
  private
26
27
 
27
28
  # recursively builds a transaction trace from the flat list of segments
28
- def process_segments transaction, segment, parent, relationship_map
29
- current = create_trace_node transaction, segment, parent
29
+ def process_segments(transaction, segment, parent, relationship_map)
30
+ current = create_trace_node(transaction, segment, parent)
30
31
 
31
32
  if children = relationship_map[segment]
32
33
  current.children = children.map! do |child|
33
- process_segments transaction, child, current, relationship_map
34
+ process_segments(transaction, child, current, relationship_map)
34
35
  end
35
36
  end
36
37
 
37
38
  current
38
39
  end
39
40
 
40
- def create_trace_node transaction, segment, parent
41
+ def create_trace_node(transaction, segment, parent)
41
42
  relative_start = segment.start_time - transaction.start_time
42
43
  relative_end = segment.end_time - transaction.start_time
43
- TraceNode.new segment.name, relative_start, relative_end, segment.params, parent
44
+ TraceNode.new(segment.name, relative_start, relative_end, segment.params, parent)
44
45
  end
45
46
 
46
- def copy_attributes transaction, trace
47
+ def copy_attributes(transaction, trace)
47
48
  trace.transaction_name = transaction.best_name
48
49
  trace.guid = transaction.guid
49
50
  trace.attributes = transaction.attributes
@@ -40,11 +40,11 @@ module NewRelic
40
40
  attr_accessor :trace_context_header_data
41
41
  attr_reader :trace_state_payload
42
42
 
43
- def trace_parent_header_present? request
43
+ def trace_parent_header_present?(request)
44
44
  request[NewRelic::HTTP_TRACEPARENT_KEY]
45
45
  end
46
46
 
47
- def accept_trace_context_incoming_request request
47
+ def accept_trace_context_incoming_request(request)
48
48
  header_data = NewRelic::Agent::DistributedTracing::TraceContext.parse(
49
49
  format: NewRelic::FORMAT_RACK,
50
50
  carrier: request,
@@ -52,28 +52,29 @@ module NewRelic
52
52
  )
53
53
  return if header_data.nil?
54
54
 
55
- accept_trace_context header_data
55
+ accept_trace_context(header_data)
56
56
  end
57
57
  private :accept_trace_context_incoming_request
58
58
 
59
- def insert_trace_context_header header, format = NewRelic::FORMAT_NON_RACK
59
+ def insert_trace_context_header(header, format = NewRelic::FORMAT_NON_RACK)
60
60
  return unless Agent.config[:'distributed_tracing.enabled']
61
61
 
62
- NewRelic::Agent::DistributedTracing::TraceContext.insert \
62
+ NewRelic::Agent::DistributedTracing::TraceContext.insert( \
63
63
  format: format,
64
64
  carrier: header,
65
65
  trace_id: transaction.trace_id.rjust(32, '0').downcase,
66
66
  parent_id: transaction.current_segment.guid,
67
67
  trace_flags: transaction.sampled? ? 0x1 : 0x0,
68
68
  trace_state: create_trace_state
69
+ )
69
70
 
70
71
  @trace_context_inserted = true
71
72
 
72
- NewRelic::Agent.increment_metric CREATE_SUCCESS_METRIC
73
+ NewRelic::Agent.increment_metric(CREATE_SUCCESS_METRIC)
73
74
  true
74
75
  rescue Exception => e
75
- NewRelic::Agent.increment_metric CREATE_EXCEPTION_METRIC
76
- NewRelic::Agent.logger.warn "Failed to create trace context payload", e
76
+ NewRelic::Agent.increment_metric(CREATE_EXCEPTION_METRIC)
77
+ NewRelic::Agent.logger.warn("Failed to create trace context payload", e)
77
78
  false
78
79
  end
79
80
 
@@ -82,9 +83,10 @@ module NewRelic
82
83
  payload = create_trace_state_payload
83
84
 
84
85
  if payload
85
- entry = NewRelic::Agent::DistributedTracing::TraceContext.create_trace_state_entry \
86
+ entry = NewRelic::Agent::DistributedTracing::TraceContext.create_trace_state_entry( \
86
87
  entry_key,
87
88
  payload.to_s
89
+ )
88
90
  else
89
91
  entry = NewRelic::EMPTY_STR
90
92
  end
@@ -94,36 +96,37 @@ module NewRelic
94
96
 
95
97
  def create_trace_state_payload
96
98
  unless Agent.config[:'distributed_tracing.enabled']
97
- NewRelic::Agent.logger.warn "Not configured to create WC3 trace context payload"
99
+ NewRelic::Agent.logger.warn("Not configured to create WC3 trace context payload")
98
100
  return
99
101
  end
100
102
 
101
103
  span_guid = Agent.config[:'span_events.enabled'] ? transaction.current_segment.guid : nil
102
104
  transaction_guid = Agent.config[:'transaction_events.enabled'] ? transaction.guid : nil
103
105
 
104
- TraceContextPayload.create \
106
+ TraceContextPayload.create( \
105
107
  parent_account_id: Agent.config[:account_id],
106
108
  parent_app_id: Agent.config[:primary_application_id],
107
109
  transaction_id: transaction_guid,
108
110
  sampled: transaction.sampled?,
109
111
  priority: float!(transaction.priority, NewRelic::PRIORITY_PRECISION),
110
112
  id: span_guid
113
+ )
111
114
  end
112
115
 
113
116
  def assign_trace_state_payload
114
117
  payload = @trace_context_header_data.trace_state_payload
115
118
  unless payload
116
- NewRelic::Agent.increment_metric NO_NR_ENTRY_TRACESTATE_METRIC
119
+ NewRelic::Agent.increment_metric(NO_NR_ENTRY_TRACESTATE_METRIC)
117
120
  return false
118
121
  end
119
122
  unless payload.valid?
120
- NewRelic::Agent.increment_metric INVALID_TRACESTATE_PAYLOAD_METRIC
123
+ NewRelic::Agent.increment_metric(INVALID_TRACESTATE_PAYLOAD_METRIC)
121
124
  return false
122
125
  end
123
126
  @trace_state_payload = payload
124
127
  end
125
128
 
126
- def accept_trace_context header_data
129
+ def accept_trace_context(header_data)
127
130
  return if ignore_trace_context?
128
131
 
129
132
  @trace_context_header_data = header_data
@@ -138,20 +141,20 @@ module NewRelic
138
141
  transaction.sampled = payload.sampled
139
142
  transaction.priority = payload.priority if payload.priority
140
143
  end
141
- NewRelic::Agent.increment_metric ACCEPT_SUCCESS_METRIC
144
+ NewRelic::Agent.increment_metric(ACCEPT_SUCCESS_METRIC)
142
145
  true
143
146
  rescue => e
144
- NewRelic::Agent.increment_metric ACCEPT_EXCEPTION_METRIC
145
- NewRelic::Agent.logger.warn "Failed to accept trace context payload", e
147
+ NewRelic::Agent.increment_metric(ACCEPT_EXCEPTION_METRIC)
148
+ NewRelic::Agent.logger.warn("Failed to accept trace context payload", e)
146
149
  false
147
150
  end
148
151
 
149
152
  def ignore_trace_context?
150
153
  if trace_context_header_data
151
- NewRelic::Agent.increment_metric IGNORE_MULTIPLE_ACCEPT_METRIC
154
+ NewRelic::Agent.increment_metric(IGNORE_MULTIPLE_ACCEPT_METRIC)
152
155
  return true
153
156
  elsif trace_context_inserted?
154
- NewRelic::Agent.increment_metric IGNORE_ACCEPT_AFTER_CREATE_METRIC
157
+ NewRelic::Agent.increment_metric(IGNORE_ACCEPT_AFTER_CREATE_METRIC)
155
158
  return true
156
159
  end
157
160
  false
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  module NewRelic
6
7
  module Agent
@@ -26,10 +27,10 @@ module NewRelic
26
27
  @parent_node = parent
27
28
  end
28
29
 
29
- def select_allowed_params params
30
+ def select_allowed_params(params)
30
31
  return unless params
31
32
  params.select do |p|
32
- NewRelic::Agent.instance.attribute_filter.allows_key? p, AttributeFilter::DST_TRANSACTION_SEGMENTS
33
+ NewRelic::Agent.instance.attribute_filter.allows_key?(p, AttributeFilter::DST_TRANSACTION_SEGMENTS)
33
34
  end
34
35
  end
35
36
 
@@ -57,16 +58,16 @@ module NewRelic
57
58
  end
58
59
 
59
60
  def to_s_compact
60
- str = ""
61
+ str = String.new('')
61
62
  str << metric_name
62
63
  if children.any?
63
- str << "{#{children.map { |cs| cs.to_s_compact }.join(",")}}"
64
+ str << "{#{children.map { |cs| cs.to_s_compact }.join(',')}}"
64
65
  end
65
66
  str
66
67
  end
67
68
 
68
69
  def to_debug_str(depth)
69
- tab = " " * depth
70
+ tab = String.new(' ') * depth
70
71
  s = tab.clone
71
72
  s << ">> #{'%3i ms' % (@entry_timestamp * 1000)} [#{self.class.name.split("::").last}] #{metric_name} \n"
72
73
  unless params.empty?
@@ -77,7 +78,7 @@ module NewRelic
77
78
  children.each do |cs|
78
79
  s << cs.to_debug_str(depth + 1)
79
80
  end
80
- s << tab + "<< "
81
+ s << tab + '<< '
81
82
  s << case @exit_timestamp
82
83
  when nil then ' n/a'
83
84
  when Numeric then '%3i ms' % (@exit_timestamp * 1000)
@@ -133,7 +134,7 @@ module NewRelic
133
134
  # call the provided block for this node and each
134
135
  # of the called nodes
135
136
  def each_node(&block)
136
- block.call self
137
+ block.call(self)
137
138
 
138
139
  if @children
139
140
  @children.each do |node|
@@ -145,7 +146,7 @@ module NewRelic
145
146
  # call the provided block for this node and each
146
147
  # of the called nodes while keeping track of nested nodes
147
148
  def each_node_with_nest_tracking(&block)
148
- summary = block.call self
149
+ summary = block.call(self)
149
150
  summary.current_nest_count += 1 if summary
150
151
 
151
152
  if @children
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  module NewRelic
6
7
  module Agent
@@ -20,10 +21,10 @@ module NewRelic
20
21
 
21
22
  attr_writer :total_time
22
23
 
23
- def add_segment segment, parent = nil
24
+ def add_segment(segment, parent = nil)
24
25
  segment.transaction = self
25
26
  segment.parent = parent || current_segment
26
- set_current_segment segment
27
+ set_current_segment(segment)
27
28
  if @segments.length < segment_limit
28
29
  @segments << segment
29
30
  else
@@ -33,12 +34,12 @@ module NewRelic
33
34
  segment.transaction_assigned
34
35
  end
35
36
 
36
- def segment_complete segment
37
+ def segment_complete(segment)
37
38
  # if parent was in another thread, remove the current_segment entry for this thread
38
39
  if segment.parent && segment.parent.starting_thread_id != ::Thread.current.object_id
39
40
  remove_current_segment_by_thread_id(::Thread.current.object_id)
40
41
  else
41
- set_current_segment segment.parent
42
+ set_current_segment(segment.parent)
42
43
  end
43
44
  end
44
45
 
@@ -62,8 +63,8 @@ module NewRelic
62
63
  OTHER_TRANSACTION_TOTAL_TIME
63
64
  end
64
65
 
65
- @metrics.record_unscoped total_time_metric, total_time
66
- @metrics.record_unscoped "#{total_time_metric}/#{@frozen_name}", total_time
66
+ @metrics.record_unscoped(total_time_metric, total_time)
67
+ @metrics.record_unscoped("#{total_time_metric}/#{@frozen_name}", total_time)
67
68
  end
68
69
  end
69
70
  end
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  module NewRelic
6
7
  module Agent
@@ -181,7 +181,7 @@ module NewRelic
181
181
  if txn = tl_current
182
182
  txn.add_agent_attribute(key, value, default_destinations)
183
183
  else
184
- NewRelic::Agent.logger.debug "Attempted to add agent attribute: #{key} without transaction"
184
+ NewRelic::Agent.logger.debug("Attempted to add agent attribute: #{key} without transaction")
185
185
  end
186
186
  end
187
187
 
@@ -194,7 +194,7 @@ module NewRelic
194
194
  if txn = tl_current
195
195
  txn.merge_untrusted_agent_attributes(attributes, prefix, default_destinations)
196
196
  else
197
- NewRelic::Agent.logger.debug "Attempted to merge untrusted attributes without transaction"
197
+ NewRelic::Agent.logger.debug("Attempted to merge untrusted attributes without transaction")
198
198
  end
199
199
  end
200
200
 
@@ -208,8 +208,8 @@ module NewRelic
208
208
  if defined? JRuby
209
209
  begin
210
210
  require 'java'
211
- java_import 'java.lang.management.ManagementFactory'
212
- java_import 'com.sun.management.OperatingSystemMXBean'
211
+ java_import('java.lang.management.ManagementFactory')
212
+ java_import('com.sun.management.OperatingSystemMXBean')
213
213
  @@java_classes_loaded = true
214
214
  rescue
215
215
  end
@@ -256,7 +256,7 @@ module NewRelic
256
256
  merge_request_parameters(@filtered_params)
257
257
 
258
258
  if request = options[:request]
259
- @request_attributes = RequestAttributes.new request
259
+ @request_attributes = RequestAttributes.new(request)
260
260
  else
261
261
  @request_attributes = nil
262
262
  end
@@ -294,7 +294,7 @@ module NewRelic
294
294
  end
295
295
 
296
296
  def trace_id
297
- @trace_id ||= NewRelic::Agent::GuidGenerator.generate_guid 32
297
+ @trace_id ||= NewRelic::Agent::GuidGenerator.generate_guid(32)
298
298
  end
299
299
 
300
300
  def trace_id=(value)
@@ -424,10 +424,11 @@ module NewRelic
424
424
  ignore! if user_defined_rules_ignore?
425
425
 
426
426
  create_initial_segment(options)
427
- Segment.merge_untrusted_agent_attributes \
427
+ Segment.merge_untrusted_agent_attributes( \
428
428
  @filtered_params,
429
429
  :'request.parameters',
430
430
  AttributeFilter::DST_SPAN_EVENTS
431
+ )
431
432
  end
432
433
 
433
434
  def initial_segment
@@ -435,7 +436,7 @@ module NewRelic
435
436
  end
436
437
 
437
438
  def create_initial_segment(options = {})
438
- segment = create_segment @default_name, options
439
+ segment = create_segment(@default_name, options)
439
440
  segment.record_scoped_metric = false
440
441
  end
441
442
 
@@ -466,19 +467,19 @@ module NewRelic
466
467
  merge_request_parameters(options[:filtered_params])
467
468
  end
468
469
 
469
- @ignore_apdex = options[:ignore_apdex] if options.key? :ignore_apdex
470
- @ignore_enduser = options[:ignore_enduser] if options.key? :ignore_enduser
470
+ @ignore_apdex = options[:ignore_apdex] if options.key?(:ignore_apdex)
471
+ @ignore_enduser = options[:ignore_enduser] if options.key?(:ignore_enduser)
471
472
 
472
473
  nest_initial_segment if segments.length == 1
473
- nested_name = self.class.nested_transaction_name options[:transaction_name]
474
+ nested_name = self.class.nested_transaction_name(options[:transaction_name])
474
475
 
475
- segment = create_segment nested_name, options
476
+ segment = create_segment(nested_name, options)
476
477
  set_default_transaction_name(options[:transaction_name], category)
477
478
  segment
478
479
  end
479
480
 
480
481
  def nest_initial_segment
481
- self.initial_segment.name = self.class.nested_transaction_name initial_segment.name
482
+ self.initial_segment.name = self.class.nested_transaction_name(initial_segment.name)
482
483
  initial_segment.record_scoped_metric = true
483
484
  end
484
485
 
@@ -568,8 +569,8 @@ module NewRelic
568
569
  def assign_segment_dt_attributes
569
570
  dt_payload = distributed_tracer.trace_state_payload || distributed_tracer.distributed_trace_payload
570
571
  parent_attributes = {}
571
- DistributedTraceAttributes.copy_parent_attributes self, dt_payload, parent_attributes
572
- parent_attributes.each { |k, v| initial_segment.add_agent_attribute k, v }
572
+ DistributedTraceAttributes.copy_parent_attributes(self, dt_payload, parent_attributes)
573
+ parent_attributes.each { |k, v| initial_segment.add_agent_attribute(k, v) }
573
574
  end
574
575
 
575
576
  def assign_agent_attributes
@@ -590,7 +591,7 @@ module NewRelic
590
591
  end
591
592
 
592
593
  if @request_attributes
593
- @request_attributes.assign_agent_attributes self
594
+ @request_attributes.assign_agent_attributes(self)
594
595
  end
595
596
 
596
597
  display_host = Agent.config[:'process_host.display_name']
@@ -627,7 +628,7 @@ module NewRelic
627
628
  # This method returns transport_duration in seconds. Transport duration
628
629
  # is stored in milliseconds on the payload, but it's needed in seconds
629
630
  # for metrics and intrinsics.
630
- def calculate_transport_duration distributed_trace_payload
631
+ def calculate_transport_duration(distributed_trace_payload)
631
632
  return unless distributed_trace_payload
632
633
 
633
634
  duration = start_time - (distributed_trace_payload.timestamp / 1000.0)
@@ -735,7 +736,7 @@ module NewRelic
735
736
  options[:metric] = best_name
736
737
  options[:attributes] = @attributes
737
738
 
738
- span_id = options.delete :span_id
739
+ span_id = options.delete(:span_id)
739
740
  error_recorded = !!agent.error_collector.notice_error(exception, options, span_id) || error_recorded
740
741
  end
741
742
  payload[:error] = error_recorded if payload
@@ -750,18 +751,18 @@ module NewRelic
750
751
  end
751
752
 
752
753
  if @exceptions[error]
753
- @exceptions[error].merge! options
754
+ @exceptions[error].merge!(options)
754
755
  else
755
756
  @exceptions[error] = options
756
757
  end
757
758
  end
758
759
 
759
760
  def record_transaction_event
760
- agent.transaction_event_recorder.record payload
761
+ agent.transaction_event_recorder.record(payload)
761
762
  end
762
763
 
763
764
  def record_log_events
764
- agent.log_event_aggregator.record_batch self, @logs.to_a
765
+ agent.log_event_aggregator.record_batch(self, @logs.to_a)
765
766
  end
766
767
 
767
768
  def queue_time
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  # This module was introduced and largely extracted from the transaction event aggregator
6
7
  # when the synthetics container was extracted from it. Its purpose is to create the data
@@ -34,7 +35,7 @@ module NewRelic
34
35
  PRIORITY_KEY = "priority".freeze
35
36
  SPAN_ID_KEY = "spanId".freeze
36
37
 
37
- def create noticed_error, payload, span_id
38
+ def create(noticed_error, payload, span_id)
38
39
  [
39
40
  intrinsic_attributes_for(noticed_error, payload, span_id),
40
41
  noticed_error.custom_attributes,
@@ -42,7 +43,7 @@ module NewRelic
42
43
  ]
43
44
  end
44
45
 
45
- def intrinsic_attributes_for noticed_error, payload, span_id
46
+ def intrinsic_attributes_for(noticed_error, payload, span_id)
46
47
  attrs = {
47
48
  TYPE_KEY => SAMPLE_TYPE,
48
49
  ERROR_CLASS_KEY => noticed_error.exception_class_name,
@@ -59,10 +60,10 @@ module NewRelic
59
60
  attrs[DURATION_KEY] = payload[:duration]
60
61
  attrs[SAMPLED_KEY] = payload[:sampled] if payload.key?(:sampled)
61
62
  attrs[PRIORITY_KEY] = payload[:priority]
62
- append_synthetics payload, attrs
63
- append_cat payload, attrs
64
- DistributedTraceAttributes.copy_to_hash payload, attrs
65
- PayloadMetricMapping.append_mapped_metrics payload[:metrics], attrs
63
+ append_synthetics(payload, attrs)
64
+ append_cat(payload, attrs)
65
+ DistributedTraceAttributes.copy_to_hash(payload, attrs)
66
+ PayloadMetricMapping.append_mapped_metrics(payload[:metrics], attrs)
66
67
  else
67
68
  attrs[PRIORITY_KEY] = rand.round(NewRelic::PRIORITY_PRECISION)
68
69
  end
@@ -70,13 +71,13 @@ module NewRelic
70
71
  attrs
71
72
  end
72
73
 
73
- def append_synthetics payload, sample
74
+ def append_synthetics(payload, sample)
74
75
  sample[SYNTHETICS_RESOURCE_ID_KEY] = payload[:synthetics_resource_id] if payload[:synthetics_resource_id]
75
76
  sample[SYNTHETICS_JOB_ID_KEY] = payload[:synthetics_job_id] if payload[:synthetics_job_id]
76
77
  sample[SYNTHETICS_MONITOR_ID_KEY] = payload[:synthetics_monitor_id] if payload[:synthetics_monitor_id]
77
78
  end
78
79
 
79
- def append_cat payload, sample
80
+ def append_cat(payload, sample)
80
81
  sample[GUID_KEY] = payload[:guid] if payload[:guid]
81
82
  sample[REFERRING_TRANSACTION_GUID_KEY] = payload[:referring_transaction_guid] if payload[:referring_transaction_guid]
82
83
  end
@@ -2,6 +2,7 @@
2
2
  # encoding: utf-8
3
3
  # This file is distributed under New Relic's license terms.
4
4
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
5
+ # frozen_string_literal: true
5
6
 
6
7
  require 'newrelic_rpm' unless defined?(NewRelic)
7
8
  require 'new_relic/agent' unless defined?(NewRelic::Agent)
@@ -16,7 +17,7 @@ module NewRelic
16
17
  enabled_key :'transaction_events.enabled'
17
18
  buffer_class PrioritySampledBuffer
18
19
 
19
- def record priority: nil, event: nil, &blk
20
+ def record(priority: nil, event: nil, &blk)
20
21
  unless event || priority && blk
21
22
  raise ArgumentError, "Expected priority and block, or event"
22
23
  end
@@ -24,16 +25,16 @@ module NewRelic
24
25
  return unless enabled?
25
26
 
26
27
  @lock.synchronize do
27
- @buffer.append priority: priority, event: event, &blk
28
+ @buffer.append(priority: priority, event: event, &blk)
28
29
  notify_if_full
29
30
  end
30
31
  end
31
32
 
32
33
  private
33
34
 
34
- def after_harvest metadata
35
+ def after_harvest(metadata)
35
36
  return unless enabled?
36
- record_sampling_rate metadata
37
+ record_sampling_rate(metadata)
37
38
  end
38
39
 
39
40
  def record_sampling_rate(metadata) # THREAD_LOCAL_ACCESS