in packages/opentelemetry-cloud-trace-exporter/src/trace.ts [115:143]
private async _batchWriteSpans(spans: NamedSpans): Promise<ExportResult> {
diag.debug('Google Cloud Trace batch writing traces');
try {
this._traceServiceClient = await this._getClient();
} catch (e) {
const error = asError(e);
error.message = `failed to create client: ${error.message}`;
diag.error(error.message);
return {code: ExportResultCode.FAILED, error};
}
const metadata = new grpc.Metadata();
metadata.add(OT_REQUEST_HEADER, '1');
metadata.add('user-agent', TRACE_USER_AGENT);
const batchWriteSpans = promisify(
this._traceServiceClient.BatchWriteSpans
).bind(this._traceServiceClient);
try {
await batchWriteSpans(spans, metadata);
diag.debug('batchWriteSpans successfully');
return {code: ExportResultCode.SUCCESS};
} catch (e) {
const error = asError(e);
error.message = `batchWriteSpans error: ${error.message}`;
diag.error(error.message);
return {code: ExportResultCode.FAILED, error};
}
}