in src/agent/protocol/grpc/clients/TraceReportClient.ts [53:93]
private reportFunction(callback?: any) {
emitter.emit('segments-sent'); // reset limiter in SpanContext
try {
if (this.buffer.length === 0) {
if (callback) callback();
return;
}
const stream = this.reporterClient.collect(
AuthInterceptor(),
{ deadline: Date.now() + config.traceTimeout },
(error, _) => {
if (error) {
logger.error('Failed to report trace data', error);
}
if (callback) callback();
},
);
try {
for (const segment of this.buffer) {
if (segment) {
if (logger._isDebugEnabled) {
logger.debug('Sending segment ', { segment });
}
stream.write(new SegmentObjectAdapter(segment));
}
}
} finally {
this.buffer.length = 0;
}
stream.end();
} finally {
this.timeout = setTimeout(this.reportFunction.bind(this), 1000).unref();
}
}