-
Notifications
You must be signed in to change notification settings - Fork 534
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
fix(instrumentation-redis): Take host and port used for connection #2072
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
options
member, 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
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 populateNET_PEER_NAME
andNET_PEER_PORT
with erroneous values.This commit has the instrumentation the values the Redis client uses to connect to the server, mirroring actual use.