private async _batchWriteSpans()

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};
    }
  }