newrelic_rpm 8.9.0 → 8.10.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +23 -8
- data/.rubocop_todo.yml +243 -0
- data/.simplecov +10 -2
- data/.snyk +11 -0
- data/Brewfile +1 -0
- data/CHANGELOG.md +78 -0
- data/Guardfile +1 -0
- data/Rakefile +5 -0
- data/Thorfile +6 -0
- data/bin/newrelic +2 -1
- data/bin/newrelic_cmd +1 -0
- data/bin/nrdebug +3 -2
- data/init.rb +3 -2
- data/install.rb +1 -0
- data/lib/new_relic/agent/adaptive_sampler.rb +4 -3
- data/lib/new_relic/agent/agent/shutdown.rb +3 -2
- data/lib/new_relic/agent/agent/special_startup.rb +3 -2
- data/lib/new_relic/agent/agent/start_worker_thread.rb +15 -14
- data/lib/new_relic/agent/agent/startup.rb +11 -10
- data/lib/new_relic/agent/agent.rb +35 -33
- data/lib/new_relic/agent/agent_logger.rb +2 -1
- data/lib/new_relic/agent/attribute_filter.rb +1 -0
- data/lib/new_relic/agent/attribute_processing.rb +4 -3
- data/lib/new_relic/agent/attributes.rb +2 -1
- data/lib/new_relic/agent/audit_logger.rb +1 -0
- data/lib/new_relic/agent/autostart.rb +1 -0
- data/lib/new_relic/agent/chained_call.rb +1 -0
- data/lib/new_relic/agent/commands/agent_command.rb +1 -0
- data/lib/new_relic/agent/commands/agent_command_router.rb +4 -3
- data/lib/new_relic/agent/commands/thread_profiler_session.rb +1 -0
- data/lib/new_relic/agent/configuration/default_source.rb +35 -7
- data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -0
- data/lib/new_relic/agent/configuration/environment_source.rb +2 -1
- data/lib/new_relic/agent/configuration/event_harvest_config.rb +1 -0
- data/lib/new_relic/agent/configuration/high_security_source.rb +1 -0
- data/lib/new_relic/agent/configuration/manager.rb +2 -1
- data/lib/new_relic/agent/configuration/manual_source.rb +1 -0
- data/lib/new_relic/agent/configuration/mask_defaults.rb +1 -0
- data/lib/new_relic/agent/configuration/security_policy_source.rb +7 -3
- data/lib/new_relic/agent/configuration/server_source.rb +7 -6
- data/lib/new_relic/agent/configuration/yaml_source.rb +4 -1
- data/lib/new_relic/agent/configuration.rb +1 -0
- data/lib/new_relic/agent/connect/request_builder.rb +1 -0
- data/lib/new_relic/agent/connect/response_handler.rb +4 -3
- data/lib/new_relic/agent/custom_event_aggregator.rb +5 -4
- data/lib/new_relic/agent/database/explain_plan_helpers.rb +1 -0
- data/lib/new_relic/agent/database/obfuscation_helpers.rb +1 -0
- data/lib/new_relic/agent/database/obfuscator.rb +2 -1
- data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +1 -0
- data/lib/new_relic/agent/database.rb +3 -2
- data/lib/new_relic/agent/database_adapter.rb +1 -0
- data/lib/new_relic/agent/datastores/metric_helper.rb +9 -8
- data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +2 -0
- data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -0
- data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +2 -1
- data/lib/new_relic/agent/datastores/mongo.rb +1 -0
- data/lib/new_relic/agent/datastores/redis.rb +3 -2
- data/lib/new_relic/agent/datastores.rb +4 -3
- data/lib/new_relic/agent/deprecator.rb +1 -0
- data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +1 -0
- data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +16 -16
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +9 -9
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +18 -18
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +8 -8
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +2 -2
- data/lib/new_relic/agent/distributed_tracing/trace_context.rb +40 -39
- data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +16 -14
- data/lib/new_relic/agent/distributed_tracing.rb +17 -17
- data/lib/new_relic/agent/encoding_normalizer.rb +1 -0
- data/lib/new_relic/agent/error_collector.rb +6 -4
- data/lib/new_relic/agent/error_event_aggregator.rb +3 -3
- data/lib/new_relic/agent/error_filter.rb +1 -0
- data/lib/new_relic/agent/error_trace_aggregator.rb +2 -1
- data/lib/new_relic/agent/event_aggregator.rb +20 -19
- data/lib/new_relic/agent/event_buffer.rb +1 -0
- data/lib/new_relic/agent/event_listener.rb +1 -0
- data/lib/new_relic/agent/event_loop.rb +7 -6
- data/lib/new_relic/agent/external.rb +9 -8
- data/lib/new_relic/agent/guid_generator.rb +2 -1
- data/lib/new_relic/agent/harvester.rb +1 -0
- data/lib/new_relic/agent/heap.rb +3 -2
- data/lib/new_relic/agent/hostname.rb +4 -2
- data/lib/new_relic/agent/http_clients/abstract.rb +1 -1
- data/lib/new_relic/agent/http_clients/curb_wrappers.rb +5 -5
- data/lib/new_relic/agent/http_clients/excon_wrappers.rb +4 -4
- data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +1 -1
- data/lib/new_relic/agent/http_clients/uri_util.rb +1 -1
- data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +6 -4
- data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +10 -4
- data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +6 -4
- data/lib/new_relic/agent/instrumentation/active_job.rb +2 -1
- data/lib/new_relic/agent/instrumentation/active_merchant.rb +2 -1
- data/lib/new_relic/agent/instrumentation/active_record.rb +9 -8
- data/lib/new_relic/agent/instrumentation/active_record_helper.rb +15 -14
- data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +3 -2
- data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +5 -3
- data/lib/new_relic/agent/instrumentation/active_storage.rb +2 -1
- data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +16 -14
- data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +1 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger.rb +2 -1
- data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +2 -1
- data/lib/new_relic/agent/instrumentation/authlogic.rb +2 -1
- data/lib/new_relic/agent/instrumentation/bunny/chain.rb +10 -9
- data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +10 -10
- data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +4 -3
- data/lib/new_relic/agent/instrumentation/bunny.rb +1 -1
- data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +13 -9
- data/lib/new_relic/agent/instrumentation/curb/chain.rb +21 -21
- data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +8 -8
- data/lib/new_relic/agent/instrumentation/curb/prepend.rb +2 -2
- data/lib/new_relic/agent/instrumentation/curb.rb +2 -1
- data/lib/new_relic/agent/instrumentation/data_mapper.rb +43 -42
- data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +2 -2
- data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +1 -1
- data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +3 -2
- data/lib/new_relic/agent/instrumentation/excon/middleware.rb +3 -2
- data/lib/new_relic/agent/instrumentation/excon.rb +2 -1
- data/lib/new_relic/agent/instrumentation/grape/chain.rb +6 -5
- data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +5 -4
- data/lib/new_relic/agent/instrumentation/grape/prepend.rb +4 -3
- data/lib/new_relic/agent/instrumentation/grape.rb +1 -0
- data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +98 -0
- data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +90 -0
- data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +112 -0
- data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +31 -0
- data/lib/new_relic/agent/instrumentation/grpc/helper.rb +33 -0
- data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +70 -0
- data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +135 -0
- data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +36 -0
- data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +27 -0
- data/lib/new_relic/agent/instrumentation/grpc_client.rb +24 -0
- data/lib/new_relic/agent/instrumentation/grpc_server.rb +26 -0
- data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +6 -5
- data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/httpclient.rb +2 -1
- data/lib/new_relic/agent/instrumentation/httprb/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +4 -3
- data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/httprb.rb +2 -1
- data/lib/new_relic/agent/instrumentation/ignore_actions.rb +2 -1
- data/lib/new_relic/agent/instrumentation/logger/chain.rb +2 -1
- data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +5 -0
- data/lib/new_relic/agent/instrumentation/logger/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/logger.rb +2 -1
- data/lib/new_relic/agent/instrumentation/memcache/chain.rb +2 -2
- data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +19 -19
- data/lib/new_relic/agent/instrumentation/memcache/helper.rb +8 -8
- data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +17 -14
- data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +14 -14
- data/lib/new_relic/agent/instrumentation/memcache.rb +1 -1
- data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +1 -0
- data/lib/new_relic/agent/instrumentation/mongo.rb +2 -1
- data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +14 -12
- data/lib/new_relic/agent/instrumentation/net_http/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +5 -4
- data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/net_http.rb +2 -1
- data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +5 -4
- data/lib/new_relic/agent/instrumentation/padrino/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +1 -0
- data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/padrino.rb +2 -1
- data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +3 -2
- data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -0
- data/lib/new_relic/agent/instrumentation/rack/chain.rb +12 -11
- data/lib/new_relic/agent/instrumentation/rack/helpers.rb +1 -0
- data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +7 -6
- data/lib/new_relic/agent/instrumentation/rack/prepend.rb +4 -3
- data/lib/new_relic/agent/instrumentation/rack.rb +1 -0
- data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +6 -5
- data/lib/new_relic/agent/instrumentation/rails_middleware.rb +1 -0
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +3 -1
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +3 -1
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +3 -1
- data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +3 -2
- data/lib/new_relic/agent/instrumentation/rake/chain.rb +2 -1
- data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +1 -1
- data/lib/new_relic/agent/instrumentation/rake/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/rake.rb +3 -2
- data/lib/new_relic/agent/instrumentation/redis/chain.rb +3 -3
- data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +5 -5
- data/lib/new_relic/agent/instrumentation/redis/prepend.rb +3 -3
- data/lib/new_relic/agent/instrumentation/redis.rb +2 -1
- data/lib/new_relic/agent/instrumentation/resque/chain.rb +2 -1
- data/lib/new_relic/agent/instrumentation/resque/helper.rb +1 -0
- data/lib/new_relic/agent/instrumentation/resque/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/resque.rb +3 -2
- data/lib/new_relic/agent/instrumentation/sequel.rb +8 -7
- data/lib/new_relic/agent/instrumentation/sequel_helper.rb +1 -0
- data/lib/new_relic/agent/instrumentation/sidekiq.rb +6 -4
- data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +2 -1
- data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +1 -0
- data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +2 -1
- data/lib/new_relic/agent/instrumentation/sinatra.rb +2 -1
- data/lib/new_relic/agent/instrumentation/sunspot.rb +2 -1
- data/lib/new_relic/agent/instrumentation/thread/chain.rb +2 -1
- data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +1 -0
- data/lib/new_relic/agent/instrumentation/thread/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/thread.rb +2 -1
- data/lib/new_relic/agent/instrumentation/tilt/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +1 -0
- data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/tilt.rb +1 -0
- data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +6 -5
- data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +1 -0
- data/lib/new_relic/agent/instrumentation/typhoeus.rb +2 -1
- data/lib/new_relic/agent/instrumentation.rb +1 -0
- data/lib/new_relic/agent/internal_agent_error.rb +1 -0
- data/lib/new_relic/agent/javascript_instrumentor.rb +7 -6
- data/lib/new_relic/agent/linking_metadata.rb +2 -2
- data/lib/new_relic/agent/log_event_aggregator.rb +6 -5
- data/lib/new_relic/agent/log_once.rb +1 -0
- data/lib/new_relic/agent/log_priority.rb +1 -0
- data/lib/new_relic/agent/logging.rb +13 -12
- data/lib/new_relic/agent/memory_logger.rb +1 -0
- data/lib/new_relic/agent/messaging.rb +18 -18
- data/lib/new_relic/agent/method_tracer.rb +6 -5
- data/lib/new_relic/agent/method_tracer_helpers.rb +8 -5
- data/lib/new_relic/agent/monitors/cross_app_monitor.rb +3 -2
- data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +3 -2
- data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +1 -0
- data/lib/new_relic/agent/monitors/synthetics_monitor.rb +2 -1
- data/lib/new_relic/agent/monitors.rb +5 -4
- data/lib/new_relic/agent/new_relic_service/encoders.rb +2 -1
- data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +4 -3
- data/lib/new_relic/agent/new_relic_service/marshaller.rb +1 -0
- data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +1 -0
- data/lib/new_relic/agent/new_relic_service.rb +11 -11
- data/lib/new_relic/agent/noticible_error.rb +1 -1
- data/lib/new_relic/agent/null_logger.rb +1 -0
- data/lib/new_relic/agent/obfuscator.rb +2 -1
- data/lib/new_relic/agent/parameter_filtering.rb +1 -0
- data/lib/new_relic/agent/payload_metric_mapping.rb +1 -0
- data/lib/new_relic/agent/pipe_channel_manager.rb +6 -5
- data/lib/new_relic/agent/pipe_service.rb +1 -0
- data/lib/new_relic/agent/prepend_supportability.rb +2 -1
- data/lib/new_relic/agent/priority_sampled_buffer.rb +2 -1
- data/lib/new_relic/agent/range_extensions.rb +8 -27
- data/lib/new_relic/agent/rules_engine/replacement_rule.rb +2 -1
- data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -0
- data/lib/new_relic/agent/rules_engine.rb +2 -1
- data/lib/new_relic/agent/sampler.rb +1 -0
- data/lib/new_relic/agent/sampler_collection.rb +1 -0
- data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -0
- data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +1 -0
- data/lib/new_relic/agent/samplers/memory_sampler.rb +5 -4
- data/lib/new_relic/agent/samplers/object_sampler.rb +1 -0
- data/lib/new_relic/agent/samplers/vm_sampler.rb +1 -0
- data/lib/new_relic/agent/span_event_aggregator.rb +2 -1
- data/lib/new_relic/agent/span_event_primitive.rb +15 -11
- data/lib/new_relic/agent/sql_sampler.rb +7 -6
- data/lib/new_relic/agent/stats.rb +3 -1
- data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -0
- data/lib/new_relic/agent/stats_engine/stats_hash.rb +3 -2
- data/lib/new_relic/agent/stats_engine.rb +1 -0
- data/lib/new_relic/agent/synthetics_event_aggregator.rb +6 -5
- data/lib/new_relic/agent/system_info.rb +8 -7
- data/lib/new_relic/agent/threading/agent_thread.rb +11 -6
- data/lib/new_relic/agent/threading/backtrace_node.rb +6 -3
- data/lib/new_relic/agent/threading/backtrace_service.rb +1 -0
- data/lib/new_relic/agent/threading/thread_profile.rb +1 -0
- data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -0
- data/lib/new_relic/agent/tracer.rb +17 -14
- data/lib/new_relic/agent/transaction/abstract_segment.rb +64 -31
- data/lib/new_relic/agent/transaction/datastore_segment.rb +12 -11
- data/lib/new_relic/agent/transaction/distributed_tracer.rb +52 -47
- data/lib/new_relic/agent/transaction/distributed_tracing.rb +21 -21
- data/lib/new_relic/agent/transaction/external_request_segment.rb +36 -27
- data/lib/new_relic/agent/transaction/message_broker_segment.rb +6 -5
- data/lib/new_relic/agent/transaction/request_attributes.rb +29 -28
- data/lib/new_relic/agent/transaction/segment.rb +8 -7
- data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -0
- data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -0
- data/lib/new_relic/agent/transaction/trace.rb +3 -2
- data/lib/new_relic/agent/transaction/trace_builder.rb +10 -9
- data/lib/new_relic/agent/transaction/trace_context.rb +22 -19
- data/lib/new_relic/agent/transaction/trace_node.rb +9 -8
- data/lib/new_relic/agent/transaction/tracing.rb +7 -6
- data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -0
- data/lib/new_relic/agent/transaction.rb +22 -21
- data/lib/new_relic/agent/transaction_error_primitive.rb +9 -8
- data/lib/new_relic/agent/transaction_event_aggregator.rb +5 -4
- data/lib/new_relic/agent/transaction_event_primitive.rb +3 -3
- data/lib/new_relic/agent/transaction_event_recorder.rb +14 -12
- data/lib/new_relic/agent/transaction_metrics.rb +3 -2
- data/lib/new_relic/agent/transaction_sampler.rb +4 -3
- data/lib/new_relic/agent/transaction_time_aggregator.rb +13 -12
- data/lib/new_relic/agent/utilization/aws.rb +4 -3
- data/lib/new_relic/agent/utilization/azure.rb +1 -0
- data/lib/new_relic/agent/utilization/gcp.rb +6 -5
- data/lib/new_relic/agent/utilization/pcf.rb +3 -2
- data/lib/new_relic/agent/utilization/vendor.rb +27 -26
- data/lib/new_relic/agent/utilization_data.rb +1 -0
- data/lib/new_relic/agent/vm/jruby_vm.rb +1 -0
- data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -0
- data/lib/new_relic/agent/vm/mri_vm.rb +1 -0
- data/lib/new_relic/agent/vm/snapshot.rb +1 -0
- data/lib/new_relic/agent/vm.rb +1 -0
- data/lib/new_relic/agent/worker_loop.rb +2 -1
- data/lib/new_relic/agent.rb +11 -10
- data/lib/new_relic/cli/command.rb +5 -4
- data/lib/new_relic/cli/commands/deployments.rb +9 -8
- data/lib/new_relic/cli/commands/install.rb +6 -5
- data/lib/new_relic/coerce.rb +4 -4
- data/lib/new_relic/collection_helper.rb +2 -1
- data/lib/new_relic/control/class_methods.rb +1 -0
- data/lib/new_relic/control/frameworks/external.rb +1 -0
- data/lib/new_relic/control/frameworks/rails.rb +3 -2
- data/lib/new_relic/control/frameworks/rails3.rb +1 -0
- data/lib/new_relic/control/frameworks/rails4.rb +1 -0
- data/lib/new_relic/control/frameworks/rails_notifications.rb +1 -0
- data/lib/new_relic/control/frameworks/ruby.rb +1 -0
- data/lib/new_relic/control/frameworks/sinatra.rb +1 -0
- data/lib/new_relic/control/frameworks.rb +1 -0
- data/lib/new_relic/control/instance_methods.rb +5 -4
- data/lib/new_relic/control/instrumentation.rb +7 -6
- data/lib/new_relic/control/server_methods.rb +2 -1
- data/lib/new_relic/control.rb +1 -0
- data/lib/new_relic/delayed_job_injection.rb +1 -0
- data/lib/new_relic/dependency_detection.rb +18 -16
- data/lib/new_relic/environment_report.rb +1 -0
- data/lib/new_relic/helper.rb +4 -3
- data/lib/new_relic/language_support.rb +6 -0
- data/lib/new_relic/latest_changes.rb +1 -0
- data/lib/new_relic/local_environment.rb +5 -6
- data/lib/new_relic/metric_data.rb +3 -2
- data/lib/new_relic/metric_spec.rb +2 -1
- data/lib/new_relic/noticed_error.rb +1 -1
- data/lib/new_relic/rack/agent_hooks.rb +1 -0
- data/lib/new_relic/rack/agent_middleware.rb +1 -0
- data/lib/new_relic/rack/browser_monitoring.rb +3 -2
- data/lib/new_relic/rack.rb +1 -0
- data/lib/new_relic/recipes/capistrano3.rb +7 -6
- data/lib/new_relic/recipes/capistrano_legacy.rb +12 -11
- data/lib/new_relic/recipes.rb +1 -0
- data/lib/new_relic/supportability_helper.rb +5 -4
- data/lib/new_relic/version.rb +3 -2
- data/lib/newrelic_rpm.rb +1 -0
- data/lib/sequel/extensions/newrelic_instrumentation.rb +6 -5
- data/lib/sequel/plugins/newrelic_instrumentation.rb +1 -0
- data/lib/tasks/all.rb +1 -0
- data/lib/tasks/config.rake +2 -1
- data/lib/tasks/coverage_report.rake +22 -11
- data/lib/tasks/install.rake +1 -0
- data/lib/tasks/instrumentation_generator/README.md +63 -0
- data/lib/tasks/instrumentation_generator/TODO.md +33 -0
- data/lib/tasks/instrumentation_generator/instrumentation.thor +96 -0
- data/lib/tasks/instrumentation_generator/templates/Envfile.tt +10 -0
- data/lib/tasks/instrumentation_generator/templates/chain.tt +22 -0
- data/lib/tasks/instrumentation_generator/templates/chain_method.tt +7 -0
- data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +30 -0
- data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +13 -0
- data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +3 -0
- data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +19 -0
- data/lib/tasks/instrumentation_generator/templates/prepend.tt +14 -0
- data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +3 -0
- data/lib/tasks/instrumentation_generator/templates/test.tt +16 -0
- data/lib/tasks/multiverse.rake +1 -0
- data/lib/tasks/multiverse.rb +8 -7
- data/lib/tasks/newrelic.rb +1 -0
- data/lib/tasks/tests.rake +1 -0
- data/newrelic.yml +505 -486
- data/newrelic_rpm.gemspec +15 -17
- data/recipes/newrelic.rb +1 -0
- data/test/agent_helper.rb +114 -118
- metadata +58 -89
- data/bin/mongrel_rpm +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5293c4968708ee7ff95720c57446722d8649e7095fd44f03b88f562d156b7cbf
|
4
|
+
data.tar.gz: df7b918b393af7aa8852bbb2867e0f7468a0ce7e78316f3a0cb8e0cedeb2aaeb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 863115396ffd0b911d11da3d0ccbe8a4e7bc98f6d406080261c4a41272a78139406146524e0f3f121ae0f729635235b40c8666caf8b70b9e20182d82b178789c
|
7
|
+
data.tar.gz: 24f7b15184ec2fd778712a215e4f6fc7d029c37b3cfb3f1efe9d0d085999abe2e795b6f644c6ac420904de3a5c7759797e462c94deb73173566c536c8bf3cb54
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,5 +1,12 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
1
3
|
require:
|
4
|
+
# Default minitest configurations: https://github.com/rubocop/rubocop-minitest/blob/master/config/default.yml
|
5
|
+
- rubocop-minitest
|
6
|
+
# Default performance configurations: https://github.com/rubocop/rubocop-performance/blob/master/config/default.yml
|
2
7
|
- rubocop-performance
|
8
|
+
# Default rake configurations: https://github.com/rubocop/rubocop-rake/blob/master/config/default.yml
|
9
|
+
<%= '- rubocop-rake' if RUBY_VERSION >= '2.4.0' %>
|
3
10
|
|
4
11
|
AllCops:
|
5
12
|
TargetRubyVersion: 2.7
|
@@ -256,7 +263,9 @@ Layout/LineEndStringConcatenationIndentation:
|
|
256
263
|
Enabled: false
|
257
264
|
|
258
265
|
Layout/LineLength:
|
259
|
-
|
266
|
+
# TODO: get this down to something closer to the 80 col ideal
|
267
|
+
# we should be able to manage 120
|
268
|
+
Max: 576
|
260
269
|
|
261
270
|
Layout/MultilineArrayBraceLayout:
|
262
271
|
Enabled: true
|
@@ -1361,9 +1370,6 @@ Style/FormatString:
|
|
1361
1370
|
Style/FormatStringToken:
|
1362
1371
|
Enabled: false
|
1363
1372
|
|
1364
|
-
Style/FrozenStringLiteralComment:
|
1365
|
-
Enabled: false
|
1366
|
-
|
1367
1373
|
# Disabling for now
|
1368
1374
|
Style/GlobalStdStream:
|
1369
1375
|
Enabled: false
|
@@ -1468,18 +1474,27 @@ Style/MapToHash:
|
|
1468
1474
|
Enabled: false
|
1469
1475
|
|
1470
1476
|
Style/MethodCallWithArgsParentheses:
|
1471
|
-
Enabled:
|
1477
|
+
Enabled: true
|
1478
|
+
AllowedMethods:
|
1479
|
+
- puts
|
1480
|
+
- require
|
1481
|
+
- raise
|
1482
|
+
- include
|
1483
|
+
- fail
|
1484
|
+
- print
|
1485
|
+
- add_dependency
|
1486
|
+
- add_development_dependency
|
1487
|
+
AllowedPatterns: [^assert, ^refute]
|
1472
1488
|
|
1473
|
-
# Disabling for now
|
1474
1489
|
Style/MethodCallWithoutArgsParentheses:
|
1475
1490
|
Enabled: false
|
1476
|
-
|
1491
|
+
AllowedMethods: []
|
1477
1492
|
|
1478
1493
|
Style/MethodCalledOnDoEndBlock:
|
1479
1494
|
Enabled: false
|
1480
1495
|
|
1481
1496
|
Style/MethodDefParentheses:
|
1482
|
-
Enabled:
|
1497
|
+
Enabled: true
|
1483
1498
|
|
1484
1499
|
Style/MinMax:
|
1485
1500
|
Enabled: false
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,243 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2022-09-09 22:01:39 UTC using RuboCop version 1.36.0.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 4
|
10
|
+
# This cop supports safe autocorrection (--autocorrect).
|
11
|
+
# Configuration parameters: EnforcedStyle.
|
12
|
+
# SupportedStyles: empty_lines, no_empty_lines
|
13
|
+
Layout/EmptyLinesAroundBlockBody:
|
14
|
+
Exclude:
|
15
|
+
- 'test/multiverse/suites/active_record/db/schema.rb'
|
16
|
+
- 'test/multiverse/suites/active_record_pg/db/schema.rb'
|
17
|
+
|
18
|
+
# Offense count: 52
|
19
|
+
# This cop supports safe autocorrection (--autocorrect).
|
20
|
+
Minitest/AssertEmptyLiteral:
|
21
|
+
Enabled: false
|
22
|
+
|
23
|
+
# Offense count: 13
|
24
|
+
# This cop supports safe autocorrection (--autocorrect).
|
25
|
+
Minitest/AssertEqual:
|
26
|
+
Exclude:
|
27
|
+
- 'test/multiverse/suites/config_file_loading/config_file_loading_test.rb'
|
28
|
+
- 'test/new_relic/agent/configuration/default_source_test.rb'
|
29
|
+
- 'test/new_relic/agent/error_trace_aggregator_test.rb'
|
30
|
+
- 'test/new_relic/agent/method_tracer_helpers_test.rb'
|
31
|
+
- 'test/new_relic/agent/method_tracer_test.rb'
|
32
|
+
- 'test/new_relic/agent/transaction_sampler_test.rb'
|
33
|
+
- 'test/new_relic/metric_data_test.rb'
|
34
|
+
|
35
|
+
# Offense count: 145
|
36
|
+
# This cop supports safe autocorrection (--autocorrect).
|
37
|
+
Minitest/AssertInDelta:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
# Offense count: 22
|
41
|
+
# This cop supports safe autocorrection (--autocorrect).
|
42
|
+
Minitest/AssertIncludes:
|
43
|
+
Exclude:
|
44
|
+
- 'test/agent_helper.rb'
|
45
|
+
- 'test/multiverse/suites/rails/active_support_logger_test.rb'
|
46
|
+
- 'test/multiverse/suites/sequel/sequel_plugin_test.rb'
|
47
|
+
- 'test/multiverse/suites/sinatra_agent_disabled/shim_test.rb'
|
48
|
+
- 'test/new_relic/agent/audit_logger_test.rb'
|
49
|
+
- 'test/new_relic/agent/configuration/manager_test.rb'
|
50
|
+
- 'test/new_relic/agent/configuration/orphan_configuration_test.rb'
|
51
|
+
- 'test/new_relic/agent/error_trace_aggregator_test.rb'
|
52
|
+
- 'test/new_relic/agent/javascript_instrumentor_test.rb'
|
53
|
+
- 'test/new_relic/agent/method_visibility_test.rb'
|
54
|
+
- 'test/new_relic/agent/sampler_test.rb'
|
55
|
+
- 'test/new_relic/agent/tracer_state_test.rb'
|
56
|
+
- 'test/new_relic/control/instance_methods_test.rb'
|
57
|
+
- 'test/new_relic/environment_report_test.rb'
|
58
|
+
- 'test/new_relic/metric_data_test.rb'
|
59
|
+
|
60
|
+
# Offense count: 4
|
61
|
+
# This cop supports safe autocorrection (--autocorrect).
|
62
|
+
Minitest/AssertKindOf:
|
63
|
+
Exclude:
|
64
|
+
- 'test/new_relic/agent/agent_test.rb'
|
65
|
+
- 'test/new_relic/agent/pipe_channel_manager_test.rb'
|
66
|
+
- 'test/new_relic/agent_test.rb'
|
67
|
+
|
68
|
+
# Offense count: 4
|
69
|
+
# This cop supports safe autocorrection (--autocorrect).
|
70
|
+
Minitest/AssertNil:
|
71
|
+
Exclude:
|
72
|
+
- 'test/multiverse/suites/agent_only/log_events_test.rb'
|
73
|
+
|
74
|
+
# Offense count: 5
|
75
|
+
# This cop supports safe autocorrection (--autocorrect).
|
76
|
+
Minitest/AssertPathExists:
|
77
|
+
Exclude:
|
78
|
+
- 'infinite_tracing/test/support/fixtures.rb'
|
79
|
+
- 'test/multiverse/suites/mongo/helpers/mongo_server_test.rb'
|
80
|
+
|
81
|
+
# Offense count: 140
|
82
|
+
# This cop supports safe autocorrection (--autocorrect).
|
83
|
+
Minitest/AssertPredicate:
|
84
|
+
Enabled: false
|
85
|
+
|
86
|
+
# Offense count: 6
|
87
|
+
Minitest/AssertRaisesCompoundBody:
|
88
|
+
Exclude:
|
89
|
+
- 'test/new_relic/agent/collector_response_code_test.rb'
|
90
|
+
- 'test/new_relic/agent/new_relic_service_test.rb'
|
91
|
+
- 'test/new_relic/cli/commands/deployments_test.rb'
|
92
|
+
|
93
|
+
# Offense count: 9
|
94
|
+
# This cop supports safe autocorrection (--autocorrect).
|
95
|
+
Minitest/AssertRespondTo:
|
96
|
+
Exclude:
|
97
|
+
- 'test/multiverse/suites/sequel/sequel_plugin_test.rb'
|
98
|
+
- 'test/multiverse/suites/sinatra_agent_disabled/shim_test.rb'
|
99
|
+
- 'test/new_relic/agent/configuration/default_source_test.rb'
|
100
|
+
- 'test/new_relic/collection_helper_test.rb'
|
101
|
+
- 'test/new_relic/data_container_tests.rb'
|
102
|
+
|
103
|
+
# Offense count: 35
|
104
|
+
# This cop supports safe autocorrection (--autocorrect).
|
105
|
+
Minitest/AssertTruthy:
|
106
|
+
Exclude:
|
107
|
+
- 'test/multiverse/suites/agent_only/error_events_test.rb'
|
108
|
+
- 'test/multiverse/suites/rack/puma_rack_urlmap_test.rb'
|
109
|
+
- 'test/multiverse/suites/sequel/sequel_safety_test.rb'
|
110
|
+
- 'test/new_relic/agent/commands/thread_profiler_session_test.rb'
|
111
|
+
- 'test/new_relic/agent/configuration/environment_source_test.rb'
|
112
|
+
- 'test/new_relic/agent/configuration/manager_test.rb'
|
113
|
+
- 'test/new_relic/agent/configuration/security_policy_source_test.rb'
|
114
|
+
- 'test/new_relic/agent/configuration/yaml_source_test.rb'
|
115
|
+
- 'test/new_relic/agent/distributed_tracing/distributed_trace_payload_test.rb'
|
116
|
+
- 'test/new_relic/agent/distributed_tracing/trace_context_payload_test.rb'
|
117
|
+
- 'test/new_relic/agent/priority_sampled_buffer_test.rb'
|
118
|
+
- 'test/new_relic/agent/transaction/distributed_tracing_test.rb'
|
119
|
+
- 'test/new_relic/agent_test.rb'
|
120
|
+
- 'test/new_relic/gem_notifications_tests.rb'
|
121
|
+
- 'test/new_relic/language_support_test.rb'
|
122
|
+
|
123
|
+
# Offense count: 27
|
124
|
+
Minitest/AssertWithExpectedArgument:
|
125
|
+
Exclude:
|
126
|
+
- 'infinite_tracing/test/infinite_tracing/worker_test.rb'
|
127
|
+
- 'test/agent_helper.rb'
|
128
|
+
- 'test/multiverse/suites/grpc/grpc_client_test.rb'
|
129
|
+
- 'test/multiverse/suites/rails/error_tracing_test.rb'
|
130
|
+
- 'test/multiverse/suites/sidekiq/sidekiq_instrumentation_test.rb'
|
131
|
+
- 'test/new_relic/agent/agent_test.rb'
|
132
|
+
- 'test/new_relic/agent/configuration/default_source_test.rb'
|
133
|
+
- 'test/new_relic/agent/configuration/orphan_configuration_test.rb'
|
134
|
+
- 'test/new_relic/agent/datastores/redis_test.rb'
|
135
|
+
- 'test/new_relic/agent/distributed_tracing/distributed_tracing_cross_agent_test.rb'
|
136
|
+
- 'test/new_relic/agent/method_tracer_helpers_test.rb'
|
137
|
+
- 'test/new_relic/control_test.rb'
|
138
|
+
|
139
|
+
# Offense count: 4
|
140
|
+
Minitest/DuplicateTestRun:
|
141
|
+
Exclude:
|
142
|
+
- 'test/multiverse/suites/rails/error_tracing_test.rb'
|
143
|
+
- 'test/multiverse/suites/sinatra/ignoring_test.rb'
|
144
|
+
|
145
|
+
# Offense count: 38
|
146
|
+
# This cop supports safe autocorrection (--autocorrect).
|
147
|
+
Minitest/LiteralAsActualArgument:
|
148
|
+
Exclude:
|
149
|
+
- 'test/multiverse/suites/rails/active_support_logger_test.rb'
|
150
|
+
- 'test/new_relic/agent/configuration/environment_source_test.rb'
|
151
|
+
- 'test/new_relic/agent/connect/request_builder_test.rb'
|
152
|
+
- 'test/new_relic/agent/error_trace_aggregator_test.rb'
|
153
|
+
- 'test/new_relic/agent/instrumentation/controller_instrumentation_test.rb'
|
154
|
+
- 'test/new_relic/agent/new_relic_service_test.rb'
|
155
|
+
- 'test/new_relic/agent/samplers/cpu_sampler_test.rb'
|
156
|
+
- 'test/new_relic/agent/samplers/memory_sampler_test.rb'
|
157
|
+
- 'test/new_relic/agent/stats_test.rb'
|
158
|
+
- 'test/new_relic/agent/transaction/abstract_segment_test.rb'
|
159
|
+
- 'test/new_relic/agent/transaction/datastore_segment_test.rb'
|
160
|
+
- 'test/new_relic/agent/transaction_sampler_test.rb'
|
161
|
+
- 'test/new_relic/gem_notifications_tests.rb'
|
162
|
+
- 'test/new_relic/marshalling_test_cases.rb'
|
163
|
+
- 'test/new_relic/noticed_error_test.rb'
|
164
|
+
|
165
|
+
# Offense count: 260
|
166
|
+
Minitest/MultipleAssertions:
|
167
|
+
Max: 28
|
168
|
+
|
169
|
+
# Offense count: 9
|
170
|
+
# This cop supports safe autocorrection (--autocorrect).
|
171
|
+
Minitest/RefuteEqual:
|
172
|
+
Exclude:
|
173
|
+
- 'test/agent_helper.rb'
|
174
|
+
- 'test/multiverse/suites/config_file_loading/config_file_loading_test.rb'
|
175
|
+
- 'test/new_relic/agent/agent_test.rb'
|
176
|
+
- 'test/new_relic/agent/configuration/manager_test.rb'
|
177
|
+
- 'test/new_relic/marshalling_test_cases.rb'
|
178
|
+
|
179
|
+
# Offense count: 121
|
180
|
+
# This cop supports safe autocorrection (--autocorrect).
|
181
|
+
Minitest/RefuteFalse:
|
182
|
+
Enabled: false
|
183
|
+
|
184
|
+
# Offense count: 16
|
185
|
+
# This cop supports safe autocorrection (--autocorrect).
|
186
|
+
Minitest/RefuteIncludes:
|
187
|
+
Exclude:
|
188
|
+
- 'test/multiverse/suites/datamapper/datamapper_test.rb'
|
189
|
+
- 'test/multiverse/suites/grpc/grpc_server_test.rb'
|
190
|
+
- 'test/multiverse/suites/mongo/helpers/mongo_operation_tests.rb'
|
191
|
+
- 'test/multiverse/suites/mongo/mongo2_instrumentation_test.rb'
|
192
|
+
- 'test/multiverse/suites/rack/rack_cascade_test.rb'
|
193
|
+
- 'test/new_relic/agent/configuration/manager_test.rb'
|
194
|
+
- 'test/new_relic/control/instance_methods_test.rb'
|
195
|
+
|
196
|
+
# Offense count: 3
|
197
|
+
# This cop supports safe autocorrection (--autocorrect).
|
198
|
+
Minitest/RefutePathExists:
|
199
|
+
Exclude:
|
200
|
+
- 'test/multiverse/suites/mongo/helpers/mongo_server_test.rb'
|
201
|
+
|
202
|
+
# Offense count: 96
|
203
|
+
# This cop supports safe autocorrection (--autocorrect).
|
204
|
+
Minitest/RefutePredicate:
|
205
|
+
Enabled: false
|
206
|
+
|
207
|
+
# Offense count: 27
|
208
|
+
# This cop supports safe autocorrection (--autocorrect).
|
209
|
+
Minitest/TestMethodName:
|
210
|
+
Enabled: false
|
211
|
+
|
212
|
+
# Offense count: 2
|
213
|
+
# This cop supports safe autocorrection (--autocorrect).
|
214
|
+
Rake/Desc:
|
215
|
+
Exclude:
|
216
|
+
- 'Rakefile'
|
217
|
+
- 'lib/tasks/config.rake'
|
218
|
+
|
219
|
+
# Offense count: 15
|
220
|
+
Rake/MethodDefinitionInTask:
|
221
|
+
Exclude:
|
222
|
+
- 'Rakefile'
|
223
|
+
- 'infinite_tracing/tasks/proto.rake'
|
224
|
+
- 'lib/tasks/config.rake'
|
225
|
+
- 'lib/tasks/tests.rake'
|
226
|
+
|
227
|
+
# Offense count: 2
|
228
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
229
|
+
# Configuration parameters: EnforcedStyle.
|
230
|
+
# SupportedStyles: always, always_true, never
|
231
|
+
Style/FrozenStringLiteralComment:
|
232
|
+
Exclude:
|
233
|
+
- 'test/multiverse/suites/active_record/db/schema.rb'
|
234
|
+
- 'test/multiverse/suites/active_record_pg/db/schema.rb'
|
235
|
+
|
236
|
+
# Offense count: 26
|
237
|
+
# This cop supports safe autocorrection (--autocorrect).
|
238
|
+
# Configuration parameters: IgnoreMacros, AllowedMethods, IgnoredMethods, AllowedPatterns, IgnoredPatterns, IncludedMacros, AllowParenthesesInMultilineCall, AllowParenthesesInChaining, AllowParenthesesInCamelCaseMethod, AllowParenthesesInStringInterpolation, EnforcedStyle.
|
239
|
+
# SupportedStyles: require_parentheses, omit_parentheses
|
240
|
+
Style/MethodCallWithArgsParentheses:
|
241
|
+
Exclude:
|
242
|
+
- 'test/multiverse/suites/active_record/db/schema.rb'
|
243
|
+
- 'test/multiverse/suites/active_record_pg/db/schema.rb'
|
data/.simplecov
CHANGED
@@ -1,5 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'securerandom'
|
3
|
+
|
4
|
+
random = SecureRandom.uuid
|
5
|
+
SimpleCov.command_name(random)
|
6
|
+
SimpleCov.coverage_dir("coverage_#{random}")
|
7
|
+
|
1
8
|
SimpleCov.start do
|
2
|
-
enable_coverage
|
9
|
+
enable_coverage(:branch)
|
3
10
|
SimpleCov.root(File.join(File.dirname(__FILE__), '/lib'))
|
4
|
-
track_files
|
11
|
+
track_files("**/*.rb")
|
12
|
+
formatter(SimpleCov::Formatter::SimpleFormatter)
|
5
13
|
end
|
data/.snyk
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
exclude:
|
2
|
+
global:
|
3
|
+
# The project Dockerfile is only used to orchestrate container usage for
|
4
|
+
# local development with containers that are not to be exposed to the
|
5
|
+
# outside world. We use vanilla "ruby" images and do not layer on any
|
6
|
+
# additional software dependencies or configurations ourselves that would
|
7
|
+
# change the original "ruby" images' security profile. We defer all
|
8
|
+
# security mitigation for the images to the "ruby" image maintainers (who
|
9
|
+
# themselves are periodically updating their base Ubuntu layers to mitigate
|
10
|
+
# issues).
|
11
|
+
- Dockerfile
|
data/Brewfile
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,84 @@
|
|
1
1
|
# New Relic Ruby Agent Release Notes #
|
2
2
|
|
3
3
|
|
4
|
+
## v8.10.1
|
5
|
+
|
6
|
+
|
7
|
+
* **Bugfix: Missing unscoped metrics when instrumentation.thread.tracing is enabled**
|
8
|
+
|
9
|
+
Previously, when `instrumentation.thread.tracing` was set to true, some puma applications encountered a bug where a varying number of unscoped metrics would be missing. The agent now will correctly store and send all unscoped metrics.
|
10
|
+
|
11
|
+
Thank you to @texpert for providing details of their situation to help resolve the issue.
|
12
|
+
|
13
|
+
|
14
|
+
* **Bugfix: gRPC instrumentation causes ArgumentError when other Google gems are present**
|
15
|
+
|
16
|
+
Previously, when the agent had gRPC instrumentation enabled in an application using other gems (such as google-ads-googleads), the instrumentation could cause the error `ArgumentError: wrong number of arguments (given 3, expected 2)`. The gRPC instrumentation has been updated to prevent this issue from occurring in the future.
|
17
|
+
|
18
|
+
Thank you to @FeminismIsAwesome for bringing this issue to our attention.
|
19
|
+
|
20
|
+
|
21
|
+
## v8.10.0
|
22
|
+
|
23
|
+
|
24
|
+
* **New gRPC instrumentation**
|
25
|
+
|
26
|
+
The agent will now instrument [gRPC](https://grpc.io/) activity performed by clients and servers that use the [grpc](https://rubygems.org/gems/grpc) RubyGem. Instrumentation is automatic and enabled by default, so gRPC users should not need to modify any existing application code or agent configuration to benefit from the instrumentation. The instrumentation makes use of distributed tracing for a comprehensive overview of all gRPC traffic taking place across multiple monitored applications. This allows you to observe your client and server activity using any service that adheres to the W3C standard.
|
27
|
+
|
28
|
+
The following new configuration parameters have been added for gRPC. All are optional.
|
29
|
+
|
30
|
+
| Configuration name | Default | Behavior |
|
31
|
+
| ----------- | ----------- |----------- |
|
32
|
+
| `instrumentation.grpc_client` | auto | Set to 'disabled' to disable, set to 'chain' if there are module prepending conflicts |
|
33
|
+
| `instrumentation.grpc_server` | auto | Set to 'disabled' to disable, set to 'chain' if there are module prepending conflicts |
|
34
|
+
| `instrumentation.grpc.host_denylist` | "" | Provide a comma delimited list of host regex patterns (ex: "private.com$,exception.*") |
|
35
|
+
|
36
|
+
|
37
|
+
* **Code-level metrics functionality is enabled by default**
|
38
|
+
|
39
|
+
The code-level metrics functionality for the Ruby agent's [CodeStream integration](https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration) is now enabled by default after we have received positive feedback and no open bugs for the past two releases.
|
40
|
+
|
41
|
+
|
42
|
+
* **Performance: Rework timing range overlap calculations for multiple transaction segments**
|
43
|
+
|
44
|
+
Many thanks to GitHub community members @bmulholland and @hkdnet. @bmulholland alerted us to [rmosolgo/graphql-ruby#3945](https://github.com/rmosolgo/graphql-ruby/issues/3945). That Issue essentially notes that the New Relic Ruby agent incurs a significant perfomance hit when the `graphql` RubyGem (which ships with New Relic Ruby agent support) is used with DataLoader to generate a high number of transactions. Then @hkdnet diagnosed the root cause in the Ruby agent and put together both a proof of concept fix and a full blown PR to resolve the problem. The agent keeps track multiple segments that are concurrently in play for a given transaction in order to merge the ones whose start and stop times intersect. The logic for doing this find-and-merge operation has been reworked to a) be deferred entirely until the transaction is ready to be recorded, and b) made more performant when it is needed. GraphQL DataLoader users and other users who generate lots of activity for monitoring within a short amount of time will hopefully see some good performance gains from these changes.
|
45
|
+
|
46
|
+
|
47
|
+
* **Performance: Make frozen string literals the default for the agent**
|
48
|
+
|
49
|
+
The Ruby `frozen_string_literal: true` magic source code comment has now been applied consistently across all Ruby files belonging to the agent. This can provide a performance boost, given that Ruby can rely on the strings remaining immutable. Previously only about a third of the agent's code was freezing string literals by default. Now that 100% of the code freezes string literals by default, we have internally observed some related performance gains through testing. We are hopeful that these will translate into some real world gains in production capacities.
|
50
|
+
|
51
|
+
|
52
|
+
* **Bugfix: Error when setting the yaml configuration with `transaction_tracer.transaction_threshold: apdex_f`**
|
53
|
+
|
54
|
+
Originally, the agent was only checking the `transaction_tracer.transaction_threshold` from the newrelic.yml correctly if it was on two lines.
|
55
|
+
|
56
|
+
Example:
|
57
|
+
|
58
|
+
```
|
59
|
+
# newrelic.yml
|
60
|
+
transaction_tracer:
|
61
|
+
transaction_threshold: apdex_f
|
62
|
+
```
|
63
|
+
|
64
|
+
When this was instead changed to be on one line, the agent was not able to correctly identify the value of apdex_f.
|
65
|
+
|
66
|
+
Example:
|
67
|
+
```
|
68
|
+
# newrelic.yml
|
69
|
+
transaction_tracer.transaction_threshold: apdex_f
|
70
|
+
```
|
71
|
+
This would cause prevent transactions from finishing due to the error `ArgumentError: comparison of Float with String failed`. This has now been corrected and the agent is able to process newrelic.yml with a one line `transaction_tracer.transaction_threshold: apdex_f` correctly now.
|
72
|
+
|
73
|
+
Thank you to @oboxodo for bringing this to our attention.
|
74
|
+
|
75
|
+
|
76
|
+
* **Bugfix: Don't modify frozen Logger**
|
77
|
+
|
78
|
+
Previously the agent would modify each instance of the Logger class by adding a unique instance variable as part of the instrumentation. This could cause the error `FrozenError: can't modify frozen Logger` to be thrown if the Logger instance had been frozen. The agent will now check if the object is frozen before attempting to modify the object. Thanks to @mkcosta for bringing this issue to our attention.
|
79
|
+
|
80
|
+
|
81
|
+
|
4
82
|
## v8.9.0
|
5
83
|
|
6
84
|
|
data/Guardfile
CHANGED
data/Rakefile
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
1
6
|
require 'rubygems'
|
2
7
|
require 'rake/testtask'
|
3
8
|
require 'yard'
|
data/Thorfile
ADDED
data/bin/newrelic
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
# executes one of the commands in the new_relic/commands directory
|
3
4
|
# pass the name of the command as an argument
|
4
5
|
|
@@ -9,5 +10,5 @@ begin
|
|
9
10
|
rescue NewRelic::Cli::Command::CommandFailure => failure
|
10
11
|
STDERR.puts failure.message
|
11
12
|
STDERR.puts failure.options if failure.options
|
12
|
-
exit
|
13
|
+
exit(1)
|
13
14
|
end
|
data/bin/newrelic_cmd
CHANGED
data/bin/nrdebug
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
# encoding: utf-8
|
4
4
|
# This file is distributed under New Relic's license terms.
|
5
5
|
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
|
6
|
+
# frozen_string_literal: true
|
6
7
|
|
7
8
|
require 'tempfile'
|
8
9
|
require 'rbconfig'
|
@@ -178,10 +179,10 @@ class ProcessReport
|
|
178
179
|
def open
|
179
180
|
if @path
|
180
181
|
File.open(@path, "w") do |f|
|
181
|
-
yield
|
182
|
+
yield(f)
|
182
183
|
end
|
183
184
|
else
|
184
|
-
yield
|
185
|
+
yield($stdout)
|
185
186
|
end
|
186
187
|
end
|
187
188
|
|
data/init.rb
CHANGED
@@ -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 is the initialization for the New Relic Ruby Agent when used as
|
6
7
|
# a plugin
|
@@ -24,7 +25,7 @@ begin
|
|
24
25
|
Rails.configuration
|
25
26
|
end
|
26
27
|
|
27
|
-
NewRelic::Control.instance.init_plugin
|
28
|
+
NewRelic::Control.instance.init_plugin(:config => current_config)
|
28
29
|
rescue => e
|
29
|
-
::NewRelic::Agent.logger.error
|
30
|
+
::NewRelic::Agent.logger.error("Error initializing New Relic plugin. Agent is disabled.", e)
|
30
31
|
end
|
data/install.rb
CHANGED
@@ -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
|
if __FILE__ == $0 || $0 =~ /script\/plugin/ || File.basename($0) == 'rake'
|
6
7
|
$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
|
@@ -1,11 +1,12 @@
|
|
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
|
7
8
|
class AdaptiveSampler
|
8
|
-
def initialize
|
9
|
+
def initialize(target_samples = 10, period_duration = 60)
|
9
10
|
@target = target_samples
|
10
11
|
@seen = 0
|
11
12
|
@seen_last = 0
|
@@ -84,7 +85,7 @@ module NewRelic
|
|
84
85
|
end
|
85
86
|
end
|
86
87
|
if target_changed
|
87
|
-
NewRelic::Agent.logger.debug
|
88
|
+
NewRelic::Agent.logger.debug("Sampling target set to: #{target}")
|
88
89
|
end
|
89
90
|
end
|
90
91
|
end
|
@@ -99,7 +100,7 @@ module NewRelic
|
|
99
100
|
end
|
100
101
|
end
|
101
102
|
if period_changed
|
102
|
-
NewRelic::Agent.logger.debug
|
103
|
+
NewRelic::Agent.logger.debug("Sampling period set to: #{period_duration}")
|
103
104
|
end
|
104
105
|
end
|
105
106
|
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
|
@@ -9,7 +10,7 @@ module NewRelic
|
|
9
10
|
# data.
|
10
11
|
def shutdown
|
11
12
|
return unless started?
|
12
|
-
::NewRelic::Agent.logger.info
|
13
|
+
::NewRelic::Agent.logger.info("Starting Agent shutdown")
|
13
14
|
|
14
15
|
stop_event_loop
|
15
16
|
trap_signals_for_litespeed
|
@@ -26,7 +27,7 @@ module NewRelic
|
|
26
27
|
graceful_disconnect
|
27
28
|
end
|
28
29
|
rescue => e
|
29
|
-
::NewRelic::Agent.logger.error
|
30
|
+
::NewRelic::Agent.logger.error(e)
|
30
31
|
end
|
31
32
|
end
|
32
33
|
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
|
@@ -10,8 +11,8 @@ module NewRelic
|
|
10
11
|
# before connecting, otherwise the parent process sends useless data
|
11
12
|
def using_forking_dispatcher?
|
12
13
|
# TODO: MAJOR VERSION - remove :rainbows
|
13
|
-
if [:puma, :passenger, :rainbows, :unicorn].include?
|
14
|
-
::NewRelic::Agent.logger.info
|
14
|
+
if [:puma, :passenger, :rainbows, :unicorn].include?(Agent.config[:dispatcher])
|
15
|
+
::NewRelic::Agent.logger.info("Deferring startup of agent reporting thread because #{Agent.config[:dispatcher]} may fork.")
|
15
16
|
true
|
16
17
|
else
|
17
18
|
false
|