func()

in store/reader.go [53:89]


func (r *kustoSpanReader) GetTrace(ctx context.Context, traceID model.TraceID) (*model.Trace, error) {
	kustoStmt := kql.New("").AddTable(r.tableName).AddLiteral(getTraceQuery)
	kustoStmtParams := kql.NewParameters().AddString("ParamTraceID", traceID.String())

	clientRequestId := GetClientId()
	// Append a client request id as well to the request
	iter, err := r.client.Query(ctx, r.database, kustoStmt, append(r.defaultReadOptions,
		kusto.ClientRequestID(clientRequestId), kusto.QueryParameters(kustoStmtParams))...)
	if err != nil {
		r.logger.Error("Failed running GetTrace query. TraceID: %s. ClientRequestId : %s", traceID.String(), clientRequestId)
		return nil, err
	}
	defer iter.Stop()

	var spans []*model.Span
	err = iter.DoOnRowOrError(
		func(row *table.Row, e *errors.Error) error {
			if e != nil {
				return e
			}
			rec := kustoSpan{}
			if err := row.ToStruct(&rec); err != nil {
				return err
			}
			var span *model.Span
			span, err = transformKustoSpanToModelSpan(&rec, r.logger)
			if err != nil {
				r.logger.Error(fmt.Sprintf("Error in transformKustoSpanToModelSpan. TraceId: %s SpanId: %s", rec.TraceID, rec.SpanID), err)
				return err
			}
			spans = append(spans, span)
			return nil
		},
	)
	trace := model.Trace{Spans: spans}
	return &trace, err
}