newrelic_rpm 6.13.1 → 6.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +55 -0
  4. data/lib/new_relic/agent/audit_logger.rb +10 -0
  5. data/lib/new_relic/agent/configuration/default_source.rb +15 -1
  6. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +2 -2
  7. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +4 -5
  8. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +16 -37
  9. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +3 -11
  10. data/lib/new_relic/agent/instrumentation/net.rb +66 -59
  11. data/lib/new_relic/agent/instrumentation/net_prepend.rb +72 -0
  12. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +1 -1
  13. data/lib/new_relic/agent/instrumentation/rack.rb +8 -18
  14. data/lib/new_relic/agent/instrumentation/redis.rb +1 -1
  15. data/lib/new_relic/agent/method_tracer.rb +6 -16
  16. data/lib/new_relic/agent/new_relic_service.rb +1 -0
  17. data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
  18. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -1
  19. data/lib/new_relic/agent/transaction/distributed_tracer.rb +12 -6
  20. data/lib/new_relic/agent/transaction/message_broker_segment.rb +1 -0
  21. data/lib/new_relic/constants.rb +4 -0
  22. data/lib/new_relic/environment_report.rb +7 -1
  23. data/lib/new_relic/supportability_helper.rb +1 -0
  24. data/lib/new_relic/version.rb +2 -2
  25. data/newrelic_rpm.gemspec +1 -1
  26. metadata +3 -27
  27. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  28. data/.github/ISSUE_TEMPLATE/config.yml +0 -5
  29. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -24
  30. data/.github/actions/annotate/README.md +0 -79
  31. data/.github/actions/annotate/action.yml +0 -6
  32. data/.github/actions/annotate/dist/index.js +0 -433
  33. data/.github/actions/annotate/index.js +0 -25
  34. data/.github/actions/annotate/package-lock.json +0 -172
  35. data/.github/actions/annotate/package.json +0 -30
  36. data/.github/actions/annotate/pre-commit +0 -5
  37. data/.github/actions/build-ruby/README.md +0 -79
  38. data/.github/actions/build-ruby/action.yml +0 -15
  39. data/.github/actions/build-ruby/dist/index.js +0 -52683
  40. data/.github/actions/build-ruby/index.js +0 -514
  41. data/.github/actions/build-ruby/package-lock.json +0 -581
  42. data/.github/actions/build-ruby/package.json +0 -32
  43. data/.github/actions/build-ruby/pre-commit +0 -5
  44. data/.github/pull_request_template.md +0 -16
  45. data/.github/workflows/ci.yml +0 -212
  46. data/.github/workflows/pr_review_checklist.yml +0 -22
  47. data/.github/workflows/release.yml +0 -78
  48. data/.github/workflows/scripts/rubygems-authenticate.py +0 -13
  49. data/.github/workflows/scripts/rubygems-publish.rb +0 -32
  50. data/.github/workflows/snyk.yml +0 -27
  51. data/.github/workflows/stale.yml +0 -21
@@ -1,32 +0,0 @@
1
- {
2
- "name": "newrelic-build-ruby",
3
- "version": "1.0.0",
4
- "description": "Builds various flavors of Ruby on Ubuntu",
5
- "main": "index.js",
6
- "scripts": {
7
- "lint": "eslint *.js",
8
- "package": "ncc build index.js -o dist"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "git+https://github.com/newrelic/newrelic-ruby-agent.git"
13
- },
14
- "keywords": [
15
- "NewRelic",
16
- "GitHub",
17
- "Actions",
18
- "Ruby"
19
- ],
20
- "bugs": {
21
- "url": "https://github.com/newrelic/newrelic-ruby-agent/issues"
22
- },
23
- "author": "New Relic",
24
- "license": "Apache-2.0",
25
- "dependencies": {
26
- "@actions/cache": "^1.0.2",
27
- "@actions/core": "^1.2.4",
28
- "@actions/exec": "^1.0.4",
29
- "@actions/io": "^1.0.2",
30
- "ncc": "^0.3.6"
31
- }
32
- }
@@ -1,5 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
- cd .github/actions/build-ruby
4
- yarn run package
5
- exec git add dist/index.js
@@ -1,16 +0,0 @@
1
- _Before contributing, please read our [contributing guidelines](https://github.com/newrelic/newrelic-ruby-agent/blob/main/CONTRIBUTING.md) and [code of conduct](https://github.com/newrelic/.github/blob/master/CODE_OF_CONDUCT.md)._
2
-
3
- # Overview
4
- Describe the changes present in the pull request
5
-
6
- # Related Github Issue
7
- Include a link to the related GitHub issue, if applicable
8
-
9
- # Testing
10
- The agent includes a suite of unit and functional tests which should be used to
11
- verify your changes don't break existing functionality. These tests will run with
12
- Github Actions when a pull request is made. More details on running the tests locally can be found
13
- [here for our unit tests](https://github.com/newrelic/newrelic-ruby-agent/blob/main/test/README.md),
14
- and [here for our functional tests](https://github.com/newrelic/newrelic-ruby-agent/blob/main/test/multiverse/README.md).
15
- For most contributions it is strongly recommended to add additional tests which
16
- exercise your changes.
@@ -1,212 +0,0 @@
1
- name: Continuous Integration
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- - dev
8
- pull_request:
9
-
10
- jobs:
11
- build-ruby:
12
- runs-on: ubuntu-latest
13
- strategy:
14
- matrix:
15
- ruby-version: [2.0.0-p648, 2.1.10, 2.2.10, 2.3.8, 2.4.10, 2.5.8, 2.6.6, 2.7.1, jruby-9.2.12.0]
16
- steps:
17
- - uses: actions/checkout@v2
18
-
19
- - name: Build Ruby ${{ matrix.ruby-version }}
20
- uses: ./.github/actions/build-ruby
21
- with:
22
- ruby-version: ${{ matrix.ruby-version }}
23
-
24
- mini-env:
25
- needs: build-ruby
26
- runs-on: ubuntu-latest
27
- strategy:
28
- fail-fast: false
29
- matrix:
30
- rails: [norails, rails60, rails52, rails51, rails42, rails41, rails40, rails32, rails31, rails30]
31
- ruby-version: [2.0.0-p648, 2.1.10, 2.2.10, 2.3.8, 2.4.10, 2.5.8, 2.6.6, 2.7.1, jruby-9.2.12.0]
32
- exclude:
33
- - ruby-version: "2.7.1"
34
- rails: rails30
35
- - ruby-version: "2.7.1"
36
- rails: rails31
37
- - ruby-version: "2.7.1"
38
- rails: rails32
39
- - ruby-version: "2.7.1"
40
- rails: rails40
41
- - ruby-version: "2.7.1"
42
- rails: rails41
43
- - ruby-version: "2.7.1"
44
- rails: rails42
45
- - ruby-version: "2.7.1"
46
- rails: rails50
47
- - ruby-version: "2.7.1"
48
- rails: rails51
49
- - ruby-version: "2.7.1"
50
- rails: rails52
51
- - ruby-version: "2.6.6"
52
- rails: rails30
53
- - ruby-version: "2.6.6"
54
- rails: rails31
55
- - ruby-version: "2.6.6"
56
- rails: rails32
57
- - ruby-version: "2.6.6"
58
- rails: rails40
59
- - ruby-version: "2.6.6"
60
- rails: rails41
61
- - ruby-version: "2.5.8"
62
- rails: rails30
63
- - ruby-version: "2.5.8"
64
- rails: rails31
65
- - ruby-version: "2.5.8"
66
- rails: rails40
67
- - ruby-version: "2.5.8"
68
- rails: rails41
69
- - ruby-version: "2.4.10"
70
- rails: rails30
71
- - ruby-version: "2.4.10"
72
- rails: rails31
73
- - ruby-version: "2.4.10"
74
- rails: rails40
75
- - ruby-version: "2.4.10"
76
- rails: rails41
77
- - ruby-version: "2.4.10"
78
- rails: rails60
79
- - ruby-version: "2.3.8"
80
- rails: rails60
81
- - ruby-version: "2.2.10"
82
- rails: rails60
83
- - ruby-version: "2.1.10"
84
- rails: rails50
85
- - ruby-version: "2.1.10"
86
- rails: rails51
87
- - ruby-version: "2.1.10"
88
- rails: rails52
89
- - ruby-version: "2.1.10"
90
- rails: rails60
91
- - ruby-version: "2.0.0-p648"
92
- rails: rails50
93
- - ruby-version: "2.0.0-p648"
94
- rails: rails51
95
- - ruby-version: "2.0.0-p648"
96
- rails: rails52
97
- - ruby-version: "2.0.0-p648"
98
- rails: rails60
99
- - ruby-version: "jruby-9.2.12.0"
100
- rails: rails30
101
- - ruby-version: "jruby-9.2.12.0"
102
- rails: rails31
103
- - ruby-version: "jruby-9.2.12.0"
104
- rails: rails32
105
- - ruby-version: "jruby-9.2.12.0"
106
- rails: rails40
107
- - ruby-version: "jruby-9.2.12.0"
108
- rails: rails41
109
- - ruby-version: "jruby-9.2.12.0"
110
- rails: rails60
111
- - ruby-version: "jruby-9.2.12.0"
112
- rails: rails52
113
- steps:
114
- - uses: actions/checkout@v2
115
-
116
- - name: Build Ruby ${{ matrix.ruby-version }}
117
- uses: ./.github/actions/build-ruby
118
- with:
119
- ruby-version: ${{ matrix.ruby-version }}
120
-
121
- - name: Start mysql
122
- run: sudo systemctl start mysql
123
-
124
- - name: Run Unit Tests
125
- uses: nick-invision/retry@v1.0.0
126
- with:
127
- timeout_minutes: 20
128
- max_attempts: 2
129
- command: bundle exec rake test:env[${{ matrix.rails }}] TESTOPTS="--verbose"
130
- env:
131
- DB_PORT: 3306
132
- MYSQL_PASSWORD: root
133
-
134
- multiverse:
135
- needs: build-ruby
136
- runs-on: ubuntu-latest
137
- services:
138
- redis:
139
- image: redis
140
- ports:
141
- - 6379:6379
142
- options: >-
143
- --health-cmd "redis-cli ping"
144
- --health-interval 10s
145
- --health-timeout 5s
146
- --health-retries 5
147
- mongodb:
148
- image: mongo
149
- ports:
150
- - 27017:27017
151
- rabbitmq:
152
- image: rabbitmq:latest
153
- ports:
154
- - 5672:5672
155
- options: >-
156
- --health-cmd "rabbitmqctl node_health_check"
157
- --health-interval 10s
158
- --health-timeout 5s
159
- --health-retries 5
160
- memcached:
161
- image: memcached:latest
162
- ports:
163
- - 11211:11211
164
- options: >-
165
- --health-cmd "timeout 5 bash -c 'cat < /dev/null > /dev/udp/127.0.0.1/11211'"
166
- --health-interval 10s
167
- --health-timeout 5s
168
- --health-retries 5
169
-
170
- strategy:
171
- fail-fast: false
172
- matrix:
173
- multiverse: [agent, api, background, background_2, database, httpclients, rails, rest, serialization, sinatra]
174
- ruby-version: [2.0.0-p648, 2.1.10, 2.2.10, 2.3.8, 2.4.10, 2.5.8, 2.6.6, 2.7.1, jruby-9.2.12.0]
175
- include:
176
- - ruby-version: "2.7.1"
177
- multiverse: infinite_tracing
178
- - ruby-version: "2.6.6"
179
- multiverse: infinite_tracing
180
- - ruby-version: "2.5.8"
181
- multiverse: infinite_tracing
182
- exclude:
183
- - ruby-version: "2.7.1"
184
- multiverse: api
185
- - ruby-version: "2.7.1"
186
- multiverse: sinatra
187
- - ruby-version: "jruby-9.2.12.0"
188
- multiverse: agent
189
- steps:
190
- - uses: actions/checkout@v2
191
-
192
- - name: Build Ruby ${{ matrix.ruby-version }}
193
- uses: ./.github/actions/build-ruby
194
- with:
195
- ruby-version: ${{ matrix.ruby-version }}
196
-
197
- - name: Start mysql
198
- run: sudo systemctl start mysql
199
-
200
- - name: Run Multiverse Tests
201
- uses: nick-invision/retry@v1.0.0
202
- with:
203
- timeout_minutes: 30
204
- max_attempts: 4
205
- command: bundle exec rake test:multiverse[group=${{ matrix.multiverse }},verbose]
206
- env:
207
- DB_PORT: 3306
208
- MYSQL_PASSWORD: root
209
-
210
- - name: Annotate errors
211
- if: ${{ failure() }}
212
- uses: ./.github/actions/annotate
@@ -1,22 +0,0 @@
1
- name: PR Review Checklist
2
-
3
- on:
4
- pull_request:
5
- types: [opened]
6
-
7
- jobs:
8
- sidekick_checklist:
9
- name:
10
- runs-on: ubuntu-latest
11
- steps:
12
- - name: Checklist
13
- uses: unsplash/comment-on-pr@master
14
- env:
15
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16
- with:
17
- msg: "PR review checklist:\n
18
- - [ ] Perform code review\n
19
- - [ ] Add performance label\n
20
- - [ ] Perform appropriate level of performance testing\n
21
- - [ ] Confirm all checks passed\n
22
- - [ ] Add version label prior to acceptance"
@@ -1,78 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
-
8
- jobs:
9
- release:
10
- runs-on: ubuntu-latest
11
- steps:
12
- - uses: actions/checkout@v2
13
- with:
14
- fetch-depth: 0
15
- - name: update rubygems
16
- run: gem update --system
17
- - name: Install onetimepass
18
- run: pip install onetimepass
19
- - name: Configure gem credentials
20
- run: |
21
- echo ::set-env name=GEM_HOST_API_KEY::${{ secrets.RUBYGEMS_API_KEY }}
22
- echo ::set-env name=RUBYGEMS_MFA_KEY::${{ secrets.RUBYGEMS_MFA_KEY }}
23
- - name: Build newrelic_rpm gem
24
- run: gem build newrelic_rpm.gemspec
25
- - name: Build newrelic-infinite_tracing gem
26
- run: |
27
- cd infinite_tracing
28
- gem build newrelic-infinite_tracing.gemspec
29
- cd ..
30
- - name: Determine version
31
- run: |
32
- echo ::set-env name=VERSION::$(ls newrelic_rpm-*.gem | ruby -pe 'sub(/newrelic_rpm\-(.*).gem/, "\\1")')
33
- - name: Tag new version
34
- run: |
35
- if [ $(git tag -l ${{ env.VERSION }}) ]; then
36
- echo "Tag already created for this version"
37
- else
38
- git tag ${{ env.VERSION }}
39
- git push origin ${{ env.VERSION }}
40
- fi
41
-
42
- - name: Obtain OTP to publish newrelic_rpm to rubygems.org
43
- run: echo ::set-env name=RUBYGEMS_OTP::$(python ./.github/workflows/scripts/rubygems-authenticate.py RUBYGEMS_MFA_KEY)
44
- - name: Publish newrelic_rpm to rubygems.org
45
- run: ruby ./.github/workflows/scripts/rubygems-publish.rb newrelic_rpm
46
-
47
- - name: Obtain OTP to publish newrelic-infinite_tracing to rubygems.org
48
- run: echo ::set-env name=RUBYGEMS_OTP::$(python ./.github/workflows/scripts/rubygems-authenticate.py RUBYGEMS_MFA_KEY)
49
- - name: Publish newrelic-infinite_tracing to rubygems.org
50
- run: ruby ./.github/workflows/scripts/rubygems-publish.rb infinite_tracing/newrelic-infinite_tracing
51
-
52
- - name: Update system configuration page
53
- run: |
54
- PAYLOAD="{
55
- \"system_configuration\": {
56
- \"key\": \"ruby_agent_version\",
57
- \"value\": \"${{ env.VERSION }}\"
58
- }
59
- }"
60
- CONTENT_TYPE='Content-Type: application/json'
61
-
62
- # STAGING
63
- curl -X POST 'https://staging-api.newrelic.com/v2/system_configuration.json' \
64
- -H "X-Api-Key:${{ secrets.NEW_RELIC_API_KEY_STAGING }}" -i \
65
- -H "$CONTENT_TYPE" \
66
- -d "$PAYLOAD"
67
-
68
- # PRODUCTION
69
- curl -X POST 'https://api.newrelic.com/v2/system_configuration.json' \
70
- -H "X-Api-Key:${{ secrets.NEW_RELIC_API_KEY_PRODUCTION }}" -i \
71
- -H "$CONTENT_TYPE" \
72
- -d "$PAYLOAD"
73
-
74
- # EU PRODUCTION
75
- curl -X POST 'https://api.eu.newrelic.com/v2/system_configuration.json' \
76
- -H "X-Api-Key:$ {{ secrets.NEW_RELIC_API_KEY_PRODUCTION }}" -i \
77
- -H "$CONTENT_TYPE" \
78
- -d "$PAYLOAD"
@@ -1,13 +0,0 @@
1
- import os
2
-
3
- import argparse
4
- import onetimepass
5
-
6
- if __name__ == '__main__':
7
-
8
- parser = argparse.ArgumentParser(
9
- description='Generate a one-time password from a key'
10
- )
11
- parser.add_argument('env_var', type=str, help='The name of the environment variable from which to load the MFA key from the service')
12
- args = parser.parse_args()
13
- print(onetimepass.get_totp(os.getenv(args.env_var)))
@@ -1,32 +0,0 @@
1
- gem_name = ARGV[0]
2
- raise "gem name sans version must be supplied" if gem_name.to_s == ""
3
-
4
- api_key = ENV["GEM_HOST_API_KEY"]
5
- raise "GEM_HOST_API_KEY must be set" if api_key.to_s == ""
6
-
7
- version = ENV["VERSION"]
8
- raise "VERSION environment must be set" if version.to_s == ""
9
-
10
- gem_filename = "#{gem_name}-#{version}.gem"
11
- raise "#{gem_filename} is missing!" unless File.exist?(gem_filename)
12
-
13
- otp = ENV["RUBYGEMS_OTP"]
14
- raise "RUBYGEMS_OTP environment must be set" if otp.to_s == ""
15
-
16
- puts "Publshing the #{gem_filename} file..."
17
- cmd = "gem push --otp #{otp} #{gem_filename}"
18
- puts "executing: #{cmd}"
19
-
20
- result = `#{cmd}`
21
- if $?.to_i.zero?
22
- puts "#{gem_filename} successfully pushed to rubygems.org!"
23
- else
24
- if result =~ /Repushing of gem versions is not allowed/
25
- puts "Pushing #{gem_filename} skipped because this version is already published to rubygems.org!"
26
- exit 0
27
- else
28
- puts "#{gem_filename} failed to push to rubygems.org!"
29
- puts result
30
- exit 1
31
- end
32
- end
@@ -1,27 +0,0 @@
1
- name: Snyk Check
2
-
3
- on:
4
- schedule:
5
- - cron: "0 7 * * *"
6
- pull_request:
7
- branches:
8
- - main
9
-
10
- # A workflow run is made up of one or more jobs that can run sequentially or in parallel
11
- jobs:
12
- security:
13
- runs-on: ubuntu-latest
14
- steps:
15
- - uses: actions/checkout@v2
16
- - name: Setup Ruby
17
- uses: actions/setup-ruby@v1
18
- with:
19
- ruby-version: 2.6
20
- - name: Bundle
21
- run: bundle install
22
- - name: Run Snyk
23
- uses: snyk/actions/ruby@master
24
- env:
25
- SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
26
- with:
27
- command: test