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
}