Skip to content

Commit 2f9eb59

Browse files
committed
Ensure we handle the scenario where there is currently no active span for e.g. #2124
1 parent 318113e commit 2f9eb59

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/payment/index.js

+13-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,20 @@ const grpc = require('@grpc/grpc-js')
44
const protoLoader = require('@grpc/proto-loader')
55
const health = require('grpc-js-health-check')
66
const opentelemetry = require('@opentelemetry/api')
7+
const tracer = opentelemetry.trace.getTracer(process.env.OTEL_SERVICE_NAME);
78

89
const charge = require('./charge')
910
const logger = require('./logger')
1011

1112
async function chargeServiceHandler(call, callback) {
12-
const span = opentelemetry.trace.getActiveSpan();
13+
// Check if we have an active span if not start a new one
14+
let span = opentelemetry.trace.getActiveSpan();
15+
let startedSpan = false;
16+
if (!span)
17+
{
18+
span = tracer.startSpan('chargeServiceHandler');
19+
startedSpan = true;
20+
}
1321

1422
try {
1523
const amount = call.request.amount
@@ -26,7 +34,10 @@ async function chargeServiceHandler(call, callback) {
2634

2735
span.recordException(err)
2836
span.setStatus({ code: opentelemetry.SpanStatusCode.ERROR })
29-
37+
// Make sure we cleanup by closing the span if we started it.
38+
if (startedSpan) {
39+
span.end();
40+
}
3041
callback(err)
3142
}
3243
}

0 commit comments

Comments
 (0)