Skip to content

Commit de731ed

Browse files
committed
fix(redis): handle case when socket data is not available
1 parent aa26a53 commit de731ed

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

  • packages/node/src/integrations/tracing/redis

packages/node/src/integrations/tracing/redis/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,12 @@ export const cacheResponseHook: IORedisResponseCustomAttributeFunction = (
7070

7171
// otel/ioredis seems to be using the old standard, as there was a change to those params: https://github.com/open-telemetry/opentelemetry-specification/issues/3199
7272
// We are using params based on the docs: https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/
73-
const networkPeerAddress = spanToJSON(span).data['net.peer.name'];
74-
const networkPeerPort = spanToJSON(span).data['net.peer.port'];
73+
// Fall back to stable semconv attributes (server.address/server.port) when
74+
// old-semconv ones are absent, eg OTEL_SEMCONV_STABILITY_OPT_IN=database
75+
// set for node-redis v4/v5.
76+
const spanData = spanToJSON(span).data;
77+
const networkPeerAddress = spanData['net.peer.name'] ?? spanData['server.address'];
78+
const networkPeerPort = spanData['net.peer.port'] ?? spanData['server.port'];
7579
if (networkPeerPort && networkPeerAddress) {
7680
span.setAttributes({ 'network.peer.address': networkPeerAddress, 'network.peer.port': networkPeerPort });
7781
}

0 commit comments

Comments
 (0)