-
Notifications
You must be signed in to change notification settings - Fork 621
fix(instrumentation-redis): Take host and port used for connection #2072
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts
Outdated
Show resolved
Hide resolved
| options?: { | ||
| host: string; | ||
| port: string; | ||
| connection_options?: { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
options and connection_options are both ancient - this commit in 2.5.0-1is what renamed connection_option to connection_options
Since the instrumentation targets ^2.6.0 this feels ok. If earlier is desired, we can fall back on connection_option
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2072 +/- ##
==========================================
+ Coverage 90.97% 95.12% +4.14%
==========================================
Files 146 10 -136
Lines 7492 697 -6795
Branches 1502 142 -1360
==========================================
- Hits 6816 663 -6153
+ Misses 676 34 -642 |
96cf919 to
c9676fe
Compare
|
@Zirak thanks for the contribution to this package tests are failing because a formatting issue in the I think the test should be changed to expect a number in |
The Redis client allows specifying connection options in several ways, with
sensible defaults. The following all translate into `127.0.0.1:6379`:
```js
createClient('redis://127.0.0.1:6379');
createClient({ host: '127.0.0.1', port: NaN });
createClient({})
createClient()
```
Redis somewhat normalises these separate options into its `options` member, and
stores the properties it uses to connect to the server in
`connection_options`. Examples of the difference between the two in the examples
preceding (slightly redacted for ease of reading):
```js
createClient('redis://127.0.0.1:6379');
// options = { port: '6379', host: '127.0.0.1' }
// connection_options = { port: 6379, host: '127.0.0.1', family: 4 }
createClient({ host: '127.0.0.1', port: NaN });
// options = { host: '127.0.0.1', port: NaN }
// connection_options = { port: 6379, host: '127.0.0.1', family: 4 }
createClient()
// options = { host: undefined }
// connection_options = { port: 6379, host: '127.0.0.1', family: 4 }
```
The instrumentation before this commit looks at the `options` property, which
contains caller-supplied values before they're fully normalised and smoothed
over by Redis. This means that for these weird cases, the instrumentation would
populate `NET_PEER_NAME` and `NET_PEER_PORT` with erroneous values.
This commit has the instrumentation the values the Redis client uses to connect
to the server, mirroring actual use.
c9676fe to
498d968
Compare
|
Apologies for the delay, life tends to get in the way @david-luna aahh I think I understand what happened; I ran the tests locally without specifying an |
Which problem is this PR solving?
The Redis client allows specifying connection options in several ways, with sensible defaults. The following all translate into
127.0.0.1:6379:Redis somewhat normalises these separate options into its
optionsmember, and stores the properties it uses to connect to the server inconnection_options. Examples of the difference between the two in the examples preceding (slightly redacted for ease of reading):Short description of the changes
The instrumentation before this commit looks at the
optionsproperty, which contains caller-supplied values before they're fully normalised and smoothed over by Redis. This means that for these weird cases, the instrumentation would populateNET_PEER_NAMEandNET_PEER_PORTwith erroneous values.This commit has the instrumentation the values the Redis client uses to connect to the server, mirroring actual use.