newrelic_rpm 8.10.1 → 8.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.rubocop.yml +20 -187
  4. data/.rubocop_todo.yml +11 -202
  5. data/.simplecov +6 -4
  6. data/CHANGELOG.md +68 -25
  7. data/Gemfile +0 -1
  8. data/README.md +1 -1
  9. data/Rakefile +3 -20
  10. data/Thorfile +0 -1
  11. data/bin/nrdebug +63 -43
  12. data/config.dot +5 -5
  13. data/init.rb +1 -2
  14. data/install.rb +1 -2
  15. data/lib/new_relic/agent/adaptive_sampler.rb +0 -1
  16. data/lib/new_relic/agent/agent/shutdown.rb +0 -1
  17. data/lib/new_relic/agent/agent/special_startup.rb +0 -1
  18. data/lib/new_relic/agent/agent/start_worker_thread.rb +0 -1
  19. data/lib/new_relic/agent/agent/startup.rb +0 -1
  20. data/lib/new_relic/agent/agent.rb +100 -73
  21. data/lib/new_relic/agent/agent_logger.rb +4 -5
  22. data/lib/new_relic/agent/attribute_filter.rb +39 -21
  23. data/lib/new_relic/agent/attribute_processing.rb +3 -4
  24. data/lib/new_relic/agent/attributes.rb +0 -1
  25. data/lib/new_relic/agent/audit_logger.rb +2 -3
  26. data/lib/new_relic/agent/autostart.rb +0 -1
  27. data/lib/new_relic/agent/chained_call.rb +0 -1
  28. data/lib/new_relic/agent/commands/agent_command.rb +0 -1
  29. data/lib/new_relic/agent/commands/agent_command_router.rb +3 -4
  30. data/lib/new_relic/agent/commands/thread_profiler_session.rb +0 -1
  31. data/lib/new_relic/agent/configuration/default_source.rb +56 -27
  32. data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -2
  33. data/lib/new_relic/agent/configuration/environment_source.rb +3 -4
  34. data/lib/new_relic/agent/configuration/event_harvest_config.rb +0 -1
  35. data/lib/new_relic/agent/configuration/high_security_source.rb +0 -1
  36. data/lib/new_relic/agent/configuration/manager.rb +1 -2
  37. data/lib/new_relic/agent/configuration/manual_source.rb +0 -1
  38. data/lib/new_relic/agent/configuration/mask_defaults.rb +2 -3
  39. data/lib/new_relic/agent/configuration/security_policy_source.rb +0 -1
  40. data/lib/new_relic/agent/configuration/server_source.rb +0 -1
  41. data/lib/new_relic/agent/configuration/yaml_source.rb +2 -3
  42. data/lib/new_relic/agent/configuration.rb +0 -1
  43. data/lib/new_relic/agent/connect/request_builder.rb +1 -2
  44. data/lib/new_relic/agent/connect/response_handler.rb +1 -2
  45. data/lib/new_relic/agent/custom_event_aggregator.rb +0 -1
  46. data/lib/new_relic/agent/database/explain_plan_helpers.rb +0 -1
  47. data/lib/new_relic/agent/database/obfuscation_helpers.rb +0 -1
  48. data/lib/new_relic/agent/database/obfuscator.rb +0 -1
  49. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +0 -1
  50. data/lib/new_relic/agent/database.rb +13 -14
  51. data/lib/new_relic/agent/database_adapter.rb +0 -1
  52. data/lib/new_relic/agent/datastores/metric_helper.rb +0 -4
  53. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +2 -3
  54. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -4
  55. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -1
  56. data/lib/new_relic/agent/datastores/mongo.rb +0 -1
  57. data/lib/new_relic/agent/datastores/redis.rb +0 -1
  58. data/lib/new_relic/agent/datastores.rb +0 -1
  59. data/lib/new_relic/agent/deprecator.rb +0 -1
  60. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +0 -1
  61. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +0 -1
  62. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +0 -1
  63. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +0 -1
  64. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +0 -2
  65. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +0 -1
  66. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +0 -1
  67. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +0 -1
  68. data/lib/new_relic/agent/distributed_tracing.rb +0 -1
  69. data/lib/new_relic/agent/encoding_normalizer.rb +0 -1
  70. data/lib/new_relic/agent/error_collector.rb +0 -1
  71. data/lib/new_relic/agent/error_event_aggregator.rb +0 -1
  72. data/lib/new_relic/agent/error_filter.rb +4 -5
  73. data/lib/new_relic/agent/error_trace_aggregator.rb +1 -2
  74. data/lib/new_relic/agent/event_aggregator.rb +0 -1
  75. data/lib/new_relic/agent/event_buffer.rb +0 -1
  76. data/lib/new_relic/agent/event_listener.rb +0 -1
  77. data/lib/new_relic/agent/event_loop.rb +2 -3
  78. data/lib/new_relic/agent/external.rb +1 -2
  79. data/lib/new_relic/agent/guid_generator.rb +0 -1
  80. data/lib/new_relic/agent/harvester.rb +0 -1
  81. data/lib/new_relic/agent/heap.rb +2 -3
  82. data/lib/new_relic/agent/hostname.rb +0 -1
  83. data/lib/new_relic/agent/http_clients/abstract.rb +0 -1
  84. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +0 -1
  85. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +0 -1
  86. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +1 -2
  87. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +1 -2
  88. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +0 -1
  89. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +1 -2
  90. data/lib/new_relic/agent/http_clients/uri_util.rb +0 -1
  91. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +0 -1
  92. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +0 -1
  93. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +1 -2
  94. data/lib/new_relic/agent/instrumentation/active_job.rb +0 -1
  95. data/lib/new_relic/agent/instrumentation/active_merchant.rb +2 -2
  96. data/lib/new_relic/agent/instrumentation/active_record.rb +0 -1
  97. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +0 -1
  98. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +0 -1
  99. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +0 -1
  100. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +0 -1
  101. data/lib/new_relic/agent/instrumentation/active_storage.rb +0 -1
  102. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +0 -1
  103. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +0 -1
  104. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +0 -1
  105. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +0 -1
  106. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +0 -1
  107. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -1
  108. data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -1
  109. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +0 -1
  110. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +0 -1
  111. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +0 -1
  112. data/lib/new_relic/agent/instrumentation/bunny.rb +0 -1
  113. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +2 -3
  114. data/lib/new_relic/agent/instrumentation/curb/chain.rb +0 -1
  115. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +14 -11
  116. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +0 -1
  117. data/lib/new_relic/agent/instrumentation/curb.rb +0 -1
  118. data/lib/new_relic/agent/instrumentation/data_mapper.rb +1 -2
  119. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +0 -1
  120. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +0 -1
  121. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +0 -1
  122. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +0 -1
  123. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +0 -1
  124. data/lib/new_relic/agent/instrumentation/excon.rb +0 -1
  125. data/lib/new_relic/agent/instrumentation/grape/chain.rb +0 -1
  126. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +0 -1
  127. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +0 -1
  128. data/lib/new_relic/agent/instrumentation/grape.rb +0 -1
  129. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +0 -1
  130. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +0 -1
  131. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +0 -1
  132. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +0 -1
  133. data/lib/new_relic/agent/instrumentation/grpc/helper.rb +0 -1
  134. data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +0 -1
  135. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +0 -1
  136. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +0 -1
  137. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +0 -1
  138. data/lib/new_relic/agent/instrumentation/grpc_client.rb +0 -1
  139. data/lib/new_relic/agent/instrumentation/grpc_server.rb +0 -1
  140. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +0 -1
  141. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +0 -1
  142. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +0 -1
  143. data/lib/new_relic/agent/instrumentation/httpclient.rb +0 -1
  144. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +0 -1
  145. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +0 -1
  146. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +0 -1
  147. data/lib/new_relic/agent/instrumentation/httprb.rb +0 -1
  148. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +0 -1
  149. data/lib/new_relic/agent/instrumentation/logger/chain.rb +0 -1
  150. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +0 -1
  151. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +0 -1
  152. data/lib/new_relic/agent/instrumentation/logger.rb +0 -1
  153. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +0 -1
  154. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +1 -2
  155. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +0 -1
  156. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +0 -1
  157. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +1 -2
  158. data/lib/new_relic/agent/instrumentation/memcache.rb +4 -5
  159. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +1 -2
  160. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +0 -1
  161. data/lib/new_relic/agent/instrumentation/mongo.rb +0 -1
  162. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +1 -2
  163. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +0 -1
  164. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +0 -1
  165. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +0 -1
  166. data/lib/new_relic/agent/instrumentation/net_http.rb +0 -1
  167. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +2 -3
  168. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +0 -1
  169. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +0 -1
  170. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +0 -1
  171. data/lib/new_relic/agent/instrumentation/padrino.rb +0 -1
  172. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +0 -1
  173. data/lib/new_relic/agent/instrumentation/queue_time.rb +0 -2
  174. data/lib/new_relic/agent/instrumentation/rack/chain.rb +0 -1
  175. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +0 -1
  176. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +0 -1
  177. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +0 -1
  178. data/lib/new_relic/agent/instrumentation/rack.rb +0 -1
  179. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +0 -1
  180. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +0 -1
  181. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +0 -1
  182. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +0 -1
  183. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +0 -1
  184. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -1
  185. data/lib/new_relic/agent/instrumentation/rake/chain.rb +0 -1
  186. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +5 -1
  187. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +0 -1
  188. data/lib/new_relic/agent/instrumentation/rake.rb +0 -1
  189. data/lib/new_relic/agent/instrumentation/redis/chain.rb +0 -1
  190. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +0 -1
  191. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +0 -1
  192. data/lib/new_relic/agent/instrumentation/redis.rb +0 -1
  193. data/lib/new_relic/agent/instrumentation/resque/chain.rb +0 -1
  194. data/lib/new_relic/agent/instrumentation/resque/helper.rb +0 -1
  195. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +0 -1
  196. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +0 -1
  197. data/lib/new_relic/agent/instrumentation/resque.rb +0 -1
  198. data/lib/new_relic/agent/instrumentation/sequel.rb +0 -1
  199. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +0 -1
  200. data/lib/new_relic/agent/instrumentation/sidekiq.rb +1 -2
  201. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +0 -1
  202. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +0 -1
  203. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +0 -1
  204. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +0 -1
  205. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +0 -1
  206. data/lib/new_relic/agent/instrumentation/sinatra.rb +0 -1
  207. data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -1
  208. data/lib/new_relic/agent/instrumentation/thread/chain.rb +0 -1
  209. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +0 -1
  210. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +0 -1
  211. data/lib/new_relic/agent/instrumentation/thread.rb +0 -1
  212. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +0 -1
  213. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +0 -1
  214. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +0 -1
  215. data/lib/new_relic/agent/instrumentation/tilt.rb +0 -1
  216. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +0 -1
  217. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +3 -4
  218. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +0 -1
  219. data/lib/new_relic/agent/instrumentation/typhoeus.rb +0 -1
  220. data/lib/new_relic/agent/instrumentation.rb +0 -1
  221. data/lib/new_relic/agent/internal_agent_error.rb +0 -1
  222. data/lib/new_relic/agent/javascript_instrumentor.rb +1 -2
  223. data/lib/new_relic/agent/linking_metadata.rb +0 -1
  224. data/lib/new_relic/agent/local_log_decorator.rb +0 -1
  225. data/lib/new_relic/agent/log_event_aggregator.rb +0 -1
  226. data/lib/new_relic/agent/log_once.rb +0 -1
  227. data/lib/new_relic/agent/log_priority.rb +0 -1
  228. data/lib/new_relic/agent/logging.rb +0 -1
  229. data/lib/new_relic/agent/memory_logger.rb +0 -1
  230. data/lib/new_relic/agent/messaging.rb +1 -2
  231. data/lib/new_relic/agent/method_tracer.rb +0 -1
  232. data/lib/new_relic/agent/method_tracer_helpers.rb +1 -2
  233. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +0 -1
  234. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +0 -1
  235. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +0 -1
  236. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +0 -1
  237. data/lib/new_relic/agent/monitors.rb +0 -1
  238. data/lib/new_relic/agent/new_relic_service/encoders.rb +0 -1
  239. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +0 -1
  240. data/lib/new_relic/agent/new_relic_service/marshaller.rb +0 -1
  241. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +0 -1
  242. data/lib/new_relic/agent/new_relic_service.rb +193 -142
  243. data/lib/new_relic/agent/{noticible_error.rb → noticeable_error.rb} +1 -2
  244. data/lib/new_relic/agent/null_logger.rb +0 -1
  245. data/lib/new_relic/agent/obfuscator.rb +1 -2
  246. data/lib/new_relic/agent/parameter_filtering.rb +0 -1
  247. data/lib/new_relic/agent/payload_metric_mapping.rb +0 -1
  248. data/lib/new_relic/agent/pipe_channel_manager.rb +0 -1
  249. data/lib/new_relic/agent/pipe_service.rb +0 -1
  250. data/lib/new_relic/agent/prepend_supportability.rb +0 -1
  251. data/lib/new_relic/agent/priority_sampled_buffer.rb +2 -3
  252. data/lib/new_relic/agent/range_extensions.rb +0 -1
  253. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +0 -1
  254. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +0 -1
  255. data/lib/new_relic/agent/rules_engine.rb +0 -1
  256. data/lib/new_relic/agent/sampler.rb +0 -1
  257. data/lib/new_relic/agent/sampler_collection.rb +0 -1
  258. data/lib/new_relic/agent/samplers/cpu_sampler.rb +0 -1
  259. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +0 -1
  260. data/lib/new_relic/agent/samplers/memory_sampler.rb +5 -6
  261. data/lib/new_relic/agent/samplers/object_sampler.rb +0 -1
  262. data/lib/new_relic/agent/samplers/vm_sampler.rb +2 -1
  263. data/lib/new_relic/agent/span_event_aggregator.rb +0 -1
  264. data/lib/new_relic/agent/span_event_primitive.rb +0 -2
  265. data/lib/new_relic/agent/sql_sampler.rb +0 -1
  266. data/lib/new_relic/agent/stats.rb +12 -3
  267. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +0 -2
  268. data/lib/new_relic/agent/stats_engine/stats_hash.rb +1 -2
  269. data/lib/new_relic/agent/stats_engine.rb +0 -1
  270. data/lib/new_relic/agent/synthetics_event_aggregator.rb +0 -1
  271. data/lib/new_relic/agent/system_info.rb +1 -2
  272. data/lib/new_relic/agent/threading/agent_thread.rb +2 -3
  273. data/lib/new_relic/agent/threading/backtrace_node.rb +0 -1
  274. data/lib/new_relic/agent/threading/backtrace_service.rb +0 -1
  275. data/lib/new_relic/agent/threading/thread_profile.rb +1 -2
  276. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +0 -1
  277. data/lib/new_relic/agent/tracer.rb +2 -3
  278. data/lib/new_relic/agent/transaction/abstract_segment.rb +2 -3
  279. data/lib/new_relic/agent/transaction/datastore_segment.rb +0 -1
  280. data/lib/new_relic/agent/transaction/distributed_tracer.rb +0 -1
  281. data/lib/new_relic/agent/transaction/distributed_tracing.rb +0 -1
  282. data/lib/new_relic/agent/transaction/external_request_segment.rb +1 -2
  283. data/lib/new_relic/agent/transaction/message_broker_segment.rb +0 -1
  284. data/lib/new_relic/agent/transaction/request_attributes.rb +0 -1
  285. data/lib/new_relic/agent/transaction/segment.rb +0 -1
  286. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +0 -1
  287. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +0 -1
  288. data/lib/new_relic/agent/transaction/trace.rb +0 -1
  289. data/lib/new_relic/agent/transaction/trace_builder.rb +0 -1
  290. data/lib/new_relic/agent/transaction/trace_context.rb +0 -1
  291. data/lib/new_relic/agent/transaction/trace_node.rb +2 -3
  292. data/lib/new_relic/agent/transaction/tracing.rb +0 -1
  293. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +0 -2
  294. data/lib/new_relic/agent/transaction.rb +3 -5
  295. data/lib/new_relic/agent/transaction_error_primitive.rb +0 -1
  296. data/lib/new_relic/agent/transaction_event_aggregator.rb +0 -1
  297. data/lib/new_relic/agent/transaction_event_primitive.rb +0 -1
  298. data/lib/new_relic/agent/transaction_event_recorder.rb +1 -2
  299. data/lib/new_relic/agent/transaction_metrics.rb +1 -2
  300. data/lib/new_relic/agent/transaction_sampler.rb +0 -1
  301. data/lib/new_relic/agent/transaction_time_aggregator.rb +1 -2
  302. data/lib/new_relic/agent/utilization/aws.rb +0 -1
  303. data/lib/new_relic/agent/utilization/azure.rb +1 -2
  304. data/lib/new_relic/agent/utilization/gcp.rb +1 -2
  305. data/lib/new_relic/agent/utilization/pcf.rb +1 -2
  306. data/lib/new_relic/agent/utilization/vendor.rb +1 -2
  307. data/lib/new_relic/agent/utilization_data.rb +0 -1
  308. data/lib/new_relic/agent/vm/jruby_vm.rb +0 -1
  309. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +0 -1
  310. data/lib/new_relic/agent/vm/mri_vm.rb +35 -23
  311. data/lib/new_relic/agent/vm/snapshot.rb +1 -2
  312. data/lib/new_relic/agent/vm.rb +0 -1
  313. data/lib/new_relic/agent/worker_loop.rb +0 -1
  314. data/lib/new_relic/agent.rb +13 -16
  315. data/lib/new_relic/cli/command.rb +1 -2
  316. data/lib/new_relic/cli/commands/deployments.rb +72 -21
  317. data/lib/new_relic/cli/commands/install.rb +0 -1
  318. data/lib/new_relic/coerce.rb +0 -1
  319. data/lib/new_relic/collection_helper.rb +1 -2
  320. data/lib/new_relic/constants.rb +0 -1
  321. data/lib/new_relic/control/class_methods.rb +0 -1
  322. data/lib/new_relic/control/frameworks/external.rb +0 -1
  323. data/lib/new_relic/control/frameworks/rails.rb +0 -1
  324. data/lib/new_relic/control/frameworks/rails3.rb +0 -1
  325. data/lib/new_relic/control/frameworks/rails4.rb +0 -1
  326. data/lib/new_relic/control/frameworks/rails_notifications.rb +0 -1
  327. data/lib/new_relic/control/frameworks/ruby.rb +0 -1
  328. data/lib/new_relic/control/frameworks/sinatra.rb +0 -1
  329. data/lib/new_relic/control/frameworks.rb +0 -1
  330. data/lib/new_relic/control/instance_methods.rb +17 -40
  331. data/lib/new_relic/control/instrumentation.rb +0 -1
  332. data/lib/new_relic/control/private_instance_methods.rb +48 -0
  333. data/lib/new_relic/control/server_methods.rb +0 -1
  334. data/lib/new_relic/control.rb +0 -1
  335. data/lib/new_relic/delayed_job_injection.rb +0 -1
  336. data/lib/new_relic/dependency_detection.rb +3 -4
  337. data/lib/new_relic/environment_report.rb +23 -14
  338. data/lib/new_relic/helper.rb +1 -2
  339. data/lib/new_relic/language_support.rb +2 -3
  340. data/lib/new_relic/latest_changes.rb +3 -4
  341. data/lib/new_relic/local_environment.rb +3 -4
  342. data/lib/new_relic/metric_data.rb +27 -22
  343. data/lib/new_relic/metric_spec.rb +0 -1
  344. data/lib/new_relic/noticed_error.rb +3 -6
  345. data/lib/new_relic/rack/agent_hooks.rb +0 -1
  346. data/lib/new_relic/rack/agent_middleware.rb +0 -1
  347. data/lib/new_relic/rack/browser_monitoring.rb +131 -123
  348. data/lib/new_relic/rack.rb +0 -1
  349. data/lib/new_relic/recipes/capistrano3.rb +2 -59
  350. data/lib/new_relic/recipes/capistrano_legacy.rb +1 -2
  351. data/lib/new_relic/recipes/helpers/send_deployment.rb +69 -0
  352. data/lib/new_relic/recipes.rb +0 -1
  353. data/lib/new_relic/supportability_helper.rb +1 -2
  354. data/lib/new_relic/traced_thread.rb +0 -1
  355. data/lib/new_relic/version.rb +2 -3
  356. data/lib/newrelic_rpm.rb +0 -1
  357. data/lib/sequel/extensions/newrelic_instrumentation.rb +2 -3
  358. data/lib/sequel/plugins/newrelic_instrumentation.rb +0 -1
  359. data/lib/tasks/all.rb +0 -1
  360. data/lib/tasks/config.rake +4 -113
  361. data/lib/tasks/coverage_report.rake +14 -19
  362. data/lib/tasks/{config.html.erb → helpers/config.html.erb} +0 -0
  363. data/lib/tasks/{config.text.erb → helpers/config.text.erb} +0 -0
  364. data/lib/tasks/helpers/format.rb +120 -0
  365. data/lib/tasks/helpers/matches.rb +12 -0
  366. data/lib/tasks/helpers/prompt.rb +24 -0
  367. data/lib/tasks/helpers/removers.rb +33 -0
  368. data/lib/tasks/install.rake +0 -1
  369. data/lib/tasks/instrumentation_generator/README.md +1 -1
  370. data/lib/tasks/instrumentation_generator/instrumentation.thor +22 -16
  371. data/lib/tasks/instrumentation_generator/templates/Envfile.tt +0 -1
  372. data/lib/tasks/instrumentation_generator/templates/chain.tt +0 -1
  373. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +0 -1
  374. data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +0 -1
  375. data/lib/tasks/instrumentation_generator/templates/prepend.tt +0 -1
  376. data/lib/tasks/instrumentation_generator/templates/test.tt +0 -1
  377. data/lib/tasks/multiverse.rake +0 -1
  378. data/lib/tasks/multiverse.rb +3 -29
  379. data/lib/tasks/newrelic.rb +0 -1
  380. data/lib/tasks/tests.rake +3 -8
  381. data/newrelic.yml +10 -1
  382. data/newrelic_rpm.gemspec +6 -7
  383. data/recipes/newrelic.rb +0 -1
  384. data/test/agent_helper.rb +17 -35
  385. metadata +11 -5
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -60,43 +59,50 @@ module NewRelic
60
59
  include NewRelic::Agent::Shutdown
61
60
 
62
61
  def initialize
62
+ init_basics
63
+ init_components
64
+ init_event_handlers
65
+ setup_attribute_filter
66
+ end
67
+
68
+ private
69
+
70
+ def init_basics
63
71
  @started = false
64
72
  @event_loop = nil
65
73
  @worker_thread = nil
74
+ @connect_state = :pending
75
+ @connect_attempts = 0
76
+ @waited_on_connect = nil
77
+ @connected_pid = nil
78
+ @wait_on_connect_mutex = Mutex.new
79
+ @after_fork_lock = Mutex.new
80
+ @wait_on_connect_condition = ConditionVariable.new
81
+ end
66
82
 
83
+ def init_components
67
84
  @service = NewRelicService.new
68
-
69
85
  @events = EventListener.new
70
86
  @stats_engine = StatsEngine.new
71
87
  @transaction_sampler = TransactionSampler.new
72
88
  @sql_sampler = SqlSampler.new
73
- @agent_command_router = Commands::AgentCommandRouter.new(@events)
74
- @monitors = Monitors.new(@events)
75
- @error_collector = ErrorCollector.new(@events)
76
89
  @transaction_rules = RulesEngine.new
77
- @harvest_samplers = SamplerCollection.new(@events)
78
90
  @monotonic_gc_profiler = VM::MonotonicGCProfiler.new
79
- @javascript_instrumentor = JavascriptInstrumentor.new(@events)
80
91
  @adaptive_sampler = AdaptiveSampler.new(Agent.config[:sampling_target],
81
92
  Agent.config[:sampling_target_period_in_seconds])
93
+ end
82
94
 
95
+ def init_event_handlers
96
+ @agent_command_router = Commands::AgentCommandRouter.new(@events)
97
+ @monitors = Monitors.new(@events)
98
+ @error_collector = ErrorCollector.new(@events)
99
+ @harvest_samplers = SamplerCollection.new(@events)
100
+ @javascript_instrumentor = JavaScriptInstrumentor.new(@events)
83
101
  @harvester = Harvester.new(@events)
84
- @after_fork_lock = Mutex.new
85
-
86
102
  @transaction_event_recorder = TransactionEventRecorder.new(@events)
87
103
  @custom_event_aggregator = CustomEventAggregator.new(@events)
88
104
  @span_event_aggregator = SpanEventAggregator.new(@events)
89
105
  @log_event_aggregator = LogEventAggregator.new(@events)
90
-
91
- @connect_state = :pending
92
- @connect_attempts = 0
93
- @waited_on_connect = nil
94
- @connected_pid = nil
95
-
96
- @wait_on_connect_mutex = Mutex.new
97
- @wait_on_connect_condition = ConditionVariable.new
98
-
99
- setup_attribute_filter
100
106
  end
101
107
 
102
108
  def setup_attribute_filter
@@ -107,6 +113,8 @@ module NewRelic
107
113
  end
108
114
  end
109
115
 
116
+ public
117
+
110
118
  def refresh_attribute_filter
111
119
  @attribute_filter = AttributeFilter.new(Agent.config)
112
120
  end
@@ -154,7 +162,7 @@ module NewRelic
154
162
  # collector on connect. The former are applied during txns,
155
163
  # the latter during harvest.
156
164
  attr_accessor :transaction_rules
157
- # Responsbile for restarting the harvest thread
165
+ # Responsible for restarting the harvest thread
158
166
  attr_reader :harvester
159
167
  # GC::Profiler.total_time is not monotonic so we wrap it.
160
168
  attr_reader :monotonic_gc_profiler
@@ -182,7 +190,7 @@ module NewRelic
182
190
  # It assumes the parent process initialized the agent, but does
183
191
  # not assume the agent started.
184
192
  #
185
- # The call is idempotent, but not re-entrant.
193
+ # The call is idempotent, but not reentrant.
186
194
  #
187
195
  # * It clears any metrics carried over from the parent process
188
196
  # * Restarts the sampler thread if necessary
@@ -198,17 +206,7 @@ module NewRelic
198
206
  # connection, this tells me to only try it once so this method returns
199
207
  # quickly if there is some kind of latency with the server.
200
208
  def after_fork(options = {})
201
- needs_restart = false
202
- @after_fork_lock.synchronize do
203
- needs_restart = @harvester.needs_restart?
204
- @harvester.mark_started
205
- end
206
-
207
- return if !needs_restart ||
208
- !Agent.config[:agent_enabled] ||
209
- !Agent.config[:monitor_mode] ||
210
- disconnected? ||
211
- !control.security_settings_valid?
209
+ return unless needs_after_fork_work?
212
210
 
213
211
  ::NewRelic::Agent.logger.debug("Starting the worker thread in #{Process.pid} (parent #{Process.ppid}) after forking.")
214
212
 
@@ -222,6 +220,22 @@ module NewRelic
222
220
  setup_and_start_agent(options)
223
221
  end
224
222
 
223
+ def needs_after_fork_work?
224
+ needs_restart = false
225
+ @after_fork_lock.synchronize do
226
+ needs_restart = @harvester.needs_restart?
227
+ @harvester.mark_started
228
+ end
229
+
230
+ return false if !needs_restart ||
231
+ !Agent.config[:agent_enabled] ||
232
+ !Agent.config[:monitor_mode] ||
233
+ disconnected? ||
234
+ !control.security_settings_valid?
235
+
236
+ true
237
+ end
238
+
225
239
  def install_pipe_service(channel_id)
226
240
  @service = PipeService.new(channel_id)
227
241
  if connected?
@@ -296,12 +310,7 @@ module NewRelic
296
310
 
297
311
  def flush_pipe_data
298
312
  if connected? && @service.is_a?(PipeService)
299
- transmit_data
300
- transmit_analytic_event_data
301
- transmit_custom_event_data
302
- transmit_error_event_data
303
- transmit_span_event_data
304
- transmit_log_event_data
313
+ transmit_data_types
305
314
  end
306
315
  end
307
316
 
@@ -516,12 +525,7 @@ module NewRelic
516
525
  # forking off from a parent process.
517
526
  #
518
527
  def connect(options = {})
519
- defaults = {
520
- :keep_retrying => Agent.config[:keep_retrying],
521
- :force_reconnect => Agent.config[:force_reconnect]
522
- }
523
- opts = defaults.merge(options)
524
-
528
+ opts = connect_options(options)
525
529
  return unless should_connect?(opts[:force_reconnect])
526
530
 
527
531
  ::NewRelic::Agent.logger.debug("Connecting Process to New Relic: #$0")
@@ -536,21 +540,32 @@ module NewRelic
536
540
  rescue NewRelic::Agent::UnrecoverableAgentException => e
537
541
  handle_unrecoverable_agent_error(e)
538
542
  rescue StandardError, Timeout::Error, NewRelic::Agent::ServerConnectionException => e
543
+ retry if retry_from_error?(e, opts)
544
+ rescue Exception => e
545
+ ::NewRelic::Agent.logger.error("Exception of unexpected type during Agent#connect():", e)
546
+
547
+ raise
548
+ end
549
+
550
+ def connect_options(options)
551
+ {
552
+ keep_retrying: Agent.config[:keep_retrying],
553
+ force_reconnect: Agent.config[:force_reconnect]
554
+ }.merge(options)
555
+ end
556
+
557
+ def retry_from_error?(e, opts)
539
558
  # Allow a killed (aborting) thread to continue exiting during shutdown.
540
559
  # See: https://github.com/newrelic/newrelic-ruby-agent/issues/340
541
560
  raise if Thread.current.status == 'aborting'
542
561
 
543
562
  log_error(e)
544
- if opts[:keep_retrying]
545
- note_connect_failure
546
- ::NewRelic::Agent.logger.info("Will re-attempt in #{connect_retry_period} seconds")
547
- sleep(connect_retry_period)
548
- retry
549
- end
550
- rescue Exception => e
551
- ::NewRelic::Agent.logger.error("Exception of unexpected type during Agent#connect():", e)
563
+ return false unless opts[:keep_retrying]
552
564
 
553
- raise
565
+ note_connect_failure
566
+ ::NewRelic::Agent.logger.info("Will re-attempt in #{connect_retry_period} seconds")
567
+ sleep(connect_retry_period)
568
+ true
554
569
  end
555
570
 
556
571
  # Delegates to the control class to determine the root
@@ -735,13 +750,7 @@ module NewRelic
735
750
 
736
751
  @events.notify(:before_harvest)
737
752
  @service.session do # use http keep-alive
738
- harvest_and_send_errors
739
- harvest_and_send_error_event_data
740
- harvest_and_send_transaction_traces
741
- harvest_and_send_slowest_sql
742
- harvest_and_send_timeslice_data
743
- harvest_and_send_span_event_data
744
- harvest_and_send_log_event_data
753
+ harvest_and_send_data_types
745
754
 
746
755
  check_for_and_handle_agent_commands
747
756
  harvest_and_send_for_agent_commands
@@ -765,19 +774,9 @@ module NewRelic
765
774
  @service.request_timeout = 10
766
775
 
767
776
  @events.notify(:before_shutdown)
768
- transmit_data
769
- transmit_analytic_event_data
770
- transmit_custom_event_data
771
- transmit_error_event_data
772
- transmit_span_event_data
773
- transmit_log_event_data
774
-
775
- if @connected_pid == $$ && !@service.kind_of?(NewRelic::Agent::NewRelicService)
776
- ::NewRelic::Agent.logger.debug("Sending New Relic service agent run shutdown message")
777
- @service.shutdown
778
- else
779
- ::NewRelic::Agent.logger.debug("This agent connected from parent process #{@connected_pid}--not sending shutdown")
780
- end
777
+ transmit_data_types
778
+ shutdown_service
779
+
781
780
  ::NewRelic::Agent.logger.debug("Graceful disconnect complete")
782
781
  rescue Timeout::Error, StandardError => e
783
782
  ::NewRelic::Agent.logger.debug("Error when disconnecting #{e.class.name}: #{e.message}")
@@ -788,6 +787,34 @@ module NewRelic
788
787
  end
789
788
  end
790
789
 
790
+ def shutdown_service
791
+ if @connected_pid == $$ && !@service.kind_of?(NewRelic::Agent::NewRelicService)
792
+ ::NewRelic::Agent.logger.debug("Sending New Relic service agent run shutdown message")
793
+ @service.shutdown
794
+ else
795
+ ::NewRelic::Agent.logger.debug("This agent connected from parent process #{@connected_pid}--not sending shutdown")
796
+ end
797
+ end
798
+
799
+ def transmit_data_types
800
+ transmit_data
801
+ transmit_analytic_event_data
802
+ transmit_custom_event_data
803
+ transmit_error_event_data
804
+ transmit_span_event_data
805
+ transmit_log_event_data
806
+ end
807
+
808
+ def harvest_and_send_data_types
809
+ harvest_and_send_errors
810
+ harvest_and_send_error_event_data
811
+ harvest_and_send_transaction_traces
812
+ harvest_and_send_slowest_sql
813
+ harvest_and_send_timeslice_data
814
+ harvest_and_send_span_event_data
815
+ harvest_and_send_log_event_data
816
+ end
817
+
791
818
  extend ClassMethods
792
819
  include InstanceMethods
793
820
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -75,7 +74,7 @@ module NewRelic
75
74
  # We've seen that often the backtrace on a SystemStackError is bunk
76
75
  # so massage the caller instead at a known depth.
77
76
  #
78
- # Tests keep us honest about minmum method depth our log calls add.
77
+ # Tests keep us honest about minimum method depth our log calls add.
79
78
  return caller.drop(5) if e.is_a?(SystemStackError)
80
79
 
81
80
  e.backtrace
@@ -86,7 +85,7 @@ module NewRelic
86
85
  if block
87
86
  return unless @log.send("#{level}?")
88
87
 
89
- msgs = Array(block.call)
88
+ msgs = Array(yield)
90
89
  end
91
90
 
92
91
  msgs.flatten.each do |item|
@@ -133,7 +132,7 @@ module NewRelic
133
132
  end
134
133
 
135
134
  def wants_stdout?
136
- ::NewRelic::Agent.config[:log_file_path].upcase == "STDOUT"
135
+ ::NewRelic::Agent.config[:log_file_path].casecmp("STDOUT").zero?
137
136
  end
138
137
 
139
138
  def find_or_create_file_path(path_setting, root)
@@ -165,7 +164,7 @@ module NewRelic
165
164
  def set_log_format!
166
165
  @hostname = NewRelic::Agent::Hostname.get
167
166
  @prefix = wants_stdout? ? '** [NewRelic]' : ''
168
- @log.formatter = Proc.new do |severity, timestamp, progname, msg|
167
+ @log.formatter = proc do |severity, timestamp, progname, msg|
169
168
  "#{@prefix}[#{timestamp.strftime("%F %H:%M:%S %z")} #{@hostname} (#{$$})] #{severity} : #{msg}\n"
170
169
  end
171
170
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -77,19 +76,43 @@ module NewRelic
77
76
  attr_reader :rules
78
77
 
79
78
  def initialize(config)
80
- @enabled_destinations = DST_NONE
79
+ prep_enabled_destinations(config)
80
+ prep_rules(config)
81
81
 
82
- @enabled_destinations |= DST_TRANSACTION_TRACER if config[:'transaction_tracer.attributes.enabled']
83
- @enabled_destinations |= DST_TRANSACTION_EVENTS if config[:'transaction_events.attributes.enabled']
84
- @enabled_destinations |= DST_ERROR_COLLECTOR if config[:'error_collector.attributes.enabled']
85
- @enabled_destinations |= DST_BROWSER_MONITORING if config[:'browser_monitoring.attributes.enabled']
86
- @enabled_destinations |= DST_SPAN_EVENTS if config[:'span_events.attributes.enabled']
87
- @enabled_destinations |= DST_TRANSACTION_SEGMENTS if config[:'transaction_segments.attributes.enabled']
82
+ # We're ok to cache high security for fast lookup because the attribute
83
+ # filter is re-generated on any significant config change.
84
+ @high_security = config[:high_security]
85
+
86
+ setup_key_cache
87
+ cache_prefix_denylist
88
+ end
88
89
 
89
- @enabled_destinations = DST_NONE unless config[:'attributes.enabled']
90
+ def prep_enabled_destinations(config)
91
+ @enabled_destinations = config[:'attributes.enabled'] ? enabled_destinations_for_attributes(config) : DST_NONE
92
+ end
93
+
94
+ def enabled_destinations_for_attributes(config)
95
+ destinations = DST_NONE
96
+ destinations |= DST_TRANSACTION_TRACER if config[:'transaction_tracer.attributes.enabled']
97
+ destinations |= DST_TRANSACTION_EVENTS if config[:'transaction_events.attributes.enabled']
98
+ destinations |= DST_ERROR_COLLECTOR if config[:'error_collector.attributes.enabled']
99
+ destinations |= DST_BROWSER_MONITORING if config[:'browser_monitoring.attributes.enabled']
100
+ destinations |= DST_SPAN_EVENTS if config[:'span_events.attributes.enabled']
101
+ destinations |= DST_TRANSACTION_SEGMENTS if config[:'transaction_segments.attributes.enabled']
102
+ destinations
103
+ end
90
104
 
105
+ def prep_rules(config)
91
106
  @rules = []
107
+ prep_attributes_exclude_rules(config)
108
+ prep_capture_params_rules(config)
109
+ prep_datastore_rules(config)
110
+ prep_attributes_include_rules(config)
111
+ build_uri_rule(config[:'attributes.exclude'])
112
+ @rules.sort!
113
+ end
92
114
 
115
+ def prep_attributes_exclude_rules(config)
93
116
  build_rule(config[:'attributes.exclude'], DST_ALL, false)
94
117
  build_rule(config[:'transaction_tracer.attributes.exclude'], DST_TRANSACTION_TRACER, false)
95
118
  build_rule(config[:'transaction_events.attributes.exclude'], DST_TRANSACTION_EVENTS, false)
@@ -97,14 +120,20 @@ module NewRelic
97
120
  build_rule(config[:'browser_monitoring.attributes.exclude'], DST_BROWSER_MONITORING, false)
98
121
  build_rule(config[:'span_events.attributes.exclude'], DST_SPAN_EVENTS, false)
99
122
  build_rule(config[:'transaction_segments.attributes.exclude'], DST_TRANSACTION_SEGMENTS, false)
123
+ end
100
124
 
125
+ def prep_capture_params_rules(config)
101
126
  build_rule(['request.parameters.*'], include_destinations_for_capture_params(config[:capture_params]), true)
102
127
  build_rule(['job.resque.args.*'], include_destinations_for_capture_params(config[:'resque.capture_params']), true)
103
128
  build_rule(['job.sidekiq.args.*'], include_destinations_for_capture_params(config[:'sidekiq.capture_params']), true)
129
+ end
104
130
 
105
- build_rule(['host', 'port_path_or_id'], DST_TRANSACTION_SEGMENTS, config[:'datastore_tracer.instance_reporting.enabled'])
131
+ def prep_datastore_rules(config)
132
+ build_rule(%w[host port_path_or_id], DST_TRANSACTION_SEGMENTS, config[:'datastore_tracer.instance_reporting.enabled'])
106
133
  build_rule(['database_name'], DST_TRANSACTION_SEGMENTS, config[:'datastore_tracer.database_name_reporting.enabled'])
134
+ end
107
135
 
136
+ def prep_attributes_include_rules(config)
108
137
  build_rule(config[:'attributes.include'], DST_ALL, true)
109
138
  build_rule(config[:'transaction_tracer.attributes.include'], DST_TRANSACTION_TRACER, true)
110
139
  build_rule(config[:'transaction_events.attributes.include'], DST_TRANSACTION_EVENTS, true)
@@ -112,17 +141,6 @@ module NewRelic
112
141
  build_rule(config[:'browser_monitoring.attributes.include'], DST_BROWSER_MONITORING, true)
113
142
  build_rule(config[:'span_events.attributes.include'], DST_SPAN_EVENTS, true)
114
143
  build_rule(config[:'transaction_segments.attributes.include'], DST_TRANSACTION_SEGMENTS, true)
115
-
116
- build_uri_rule(config[:'attributes.exclude'])
117
-
118
- @rules.sort!
119
-
120
- # We're ok to cache high security for fast lookup because the attribute
121
- # filter is re-generated on any significant config change.
122
- @high_security = config[:high_security]
123
-
124
- setup_key_cache
125
- cache_prefix_denylist
126
144
  end
127
145
 
128
146
  # Note the key_cache is a global cache, accessible by multiple threads,
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -19,7 +18,7 @@ module NewRelic
19
18
  elsif prefix
20
19
  val = Coerce.scalar(object)
21
20
  if blk
22
- blk.call(prefix, val)
21
+ yield(prefix, val)
23
22
  elsif !val.nil?
24
23
  result[prefix] = val
25
24
  end
@@ -32,7 +31,7 @@ module NewRelic
32
31
  def flatten_and_coerce_hash(hash, prefix, result, &blk)
33
32
  if hash.empty?
34
33
  if blk
35
- blk.call(prefix, EMPTY_HASH_STRING_LITERAL)
34
+ yield(prefix, EMPTY_HASH_STRING_LITERAL)
36
35
  else
37
36
  result[prefix] = EMPTY_HASH_STRING_LITERAL
38
37
  end
@@ -47,7 +46,7 @@ module NewRelic
47
46
  def flatten_and_coerce_array(array, prefix, result, &blk)
48
47
  if array.empty?
49
48
  if blk
50
- blk.call(prefix, EMPTY_ARRAY_STRING_LITERAL)
49
+ yield(prefix, EMPTY_ARRAY_STRING_LITERAL)
51
50
  else
52
51
  result[prefix] = EMPTY_ARRAY_STRING_LITERAL
53
52
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -95,13 +94,13 @@ module NewRelic
95
94
  end
96
95
 
97
96
  def wants_stdout?
98
- ::NewRelic::Agent.config[:'audit_log.path'].upcase == "STDOUT"
97
+ ::NewRelic::Agent.config[:'audit_log.path'].casecmp("STDOUT").zero?
99
98
  end
100
99
 
101
100
  def create_log_formatter
102
101
  @hostname = NewRelic::Agent::Hostname.get
103
102
  @prefix = wants_stdout? ? '** [NewRelic]' : ''
104
- Proc.new do |severity, time, progname, msg|
103
+ proc do |severity, time, progname, msg|
105
104
  "#{@prefix}[#{time} #{@hostname} (#{$$})] : #{msg}\n"
106
105
  end
107
106
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -21,14 +20,14 @@ module NewRelic
21
20
  attr_accessor :thread_profiler_session, :backtrace_service
22
21
 
23
22
  def initialize(event_listener = nil)
24
- @handlers = Hash.new { |*| Proc.new { |cmd| self.unrecognized_agent_command(cmd) } }
23
+ @handlers = Hash.new { |*| proc { |cmd| self.unrecognized_agent_command(cmd) } }
25
24
 
26
25
  @backtrace_service = Threading::BacktraceService.new(event_listener)
27
26
 
28
27
  @thread_profiler_session = ThreadProfilerSession.new(@backtrace_service)
29
28
 
30
- @handlers['start_profiler'] = Proc.new { |cmd| thread_profiler_session.handle_start_command(cmd) }
31
- @handlers['stop_profiler'] = Proc.new { |cmd| thread_profiler_session.handle_stop_command(cmd) }
29
+ @handlers['start_profiler'] = proc { |cmd| thread_profiler_session.handle_start_command(cmd) }
30
+ @handlers['stop_profiler'] = proc { |cmd| thread_profiler_session.handle_stop_command(cmd) }
32
31
 
33
32
  if event_listener
34
33
  event_listener.subscribe(:before_shutdown, &method(:on_before_shutdown))
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true