opentelemetry-js icon indicating copy to clipboard operation
opentelemetry-js copied to clipboard

OTLPExporterBase causes unhandled rejection on DNS resolution error

Open andsens opened this issue 1 year ago • 2 comments
trafficstars

What happened?

Steps to Reproduce

Without an opentelemetry agent running provide OTEL_EXPORTER_OTLP_ENDPOINT="http://opentelemetry-agent:4317" through the environment and register a trace provider.

I believe you will need to trace something as well, though the stacktrace is not very heavy on the details, so that's a guess.

Expected Result

The instrumentation logs an error about DNS resolution failing.

Actual Result

The instrumentation rejects with an unhandled Promise about DNS resolution failing.

Additional Details

OpenTelemetry Setup Code

const resource = otelResources.Resource.default().merge(
	new otelResources.Resource({
		[otelSemanticConventions.SEMRESATTRS_SERVICE_NAME]: serviceName,
		[otelSemanticConventions.SEMRESATTRS_SERVICE_VERSION]: serviceVersion,
		...options.defaultAttributes,
	}),
);
const tracerProvider = new otelSDKTraceNode.NodeTracerProvider({ resource });
tracerProvider.addSpanProcessor(
	new otelSDKTraceBase.BatchSpanProcessor(new otelExportTraceOTLPGRPC.OTLPTraceExporter()),
);
tracerProvider.register();

package.json

{
  "dependencies": {
    "@rushstack/eslint-patch": "1.7.2",
    "@opentelemetry/api": "1.9.0",
    "@opentelemetry/exporter-trace-otlp-grpc": "0.52.1",
    "@opentelemetry/instrumentation": "0.52.1",
    "@opentelemetry/resources": "1.25.1",
    "@opentelemetry/sdk-trace-node": "1.25.1",
    "@opentelemetry/semantic-conventions": "1.25.1"
  }
}

Relevant log output

Error: 14 UNAVAILABLE: Name resolution failed for target dns:opentelemetry-agent:4317
    at callErrorFromStatus (/service/node_modules/@grpc/grpc-js/src/call.ts:82:17)
    at Object.onReceiveStatus (/service/node_modules/@grpc/grpc-js/src/client.ts:360:55)
    at Object.onReceiveStatus (/service/node_modules/@grpc/grpc-js/src/client-interceptors.ts:458:34)
    at Object.onReceiveStatus (/service/node_modules/@grpc/grpc-js/src/client-interceptors.ts:419:48)
    at /service/node_modules/@grpc/grpc-js/src/resolving-call.ts:132:24
    at processTicksAndRejections (node:internal/process/task_queues:77:11)
for call at
    at ServiceClientImpl.makeUnaryRequest (/service/node_modules/@grpc/grpc-js/src/client.ts:325:42)
    at ServiceClientImpl.export (/service/node_modules/@grpc/grpc-js/src/make-client.ts:189:15)
    at /service/node_modules/@opentelemetry/otlp-grpc-exporter-base/src/grpc-exporter-transport.ts:160:26
    at new Promise (<anonymous>)
    at GrpcExporterTransport.send (/service/node_modules/@opentelemetry/otlp-grpc-exporter-base/src/grpc-exporter-transport.ts:145:12)
    at OTLPTraceExporter.send (/service/node_modules/@opentelemetry/otlp-grpc-exporter-base/src/OTLPGRPCExporterNodeBase.ts:129:37)
    at /service/node_modules/@opentelemetry/otlp-exporter-base/src/OTLPExporterBase.ts:105:14
    at new Promise (<anonymous>)
    at OTLPTraceExporter._export (/service/node_modules/@opentelemetry/otlp-exporter-base/src/OTLPExporterBase.ts:102:12)
    at OTLPTraceExporter.export (/service/node_modules/@opentelemetry/otlp-exporter-base/src/OTLPExporterBase.ts:92:10)

andsens avatar Aug 22 '24 08:08 andsens