@@ -237,16 +237,16 @@ func timeRangeIndices(indexName, indexDateLayout string, startTime time.Time, en
237
237
}
238
238
239
239
// GetTraces takes a traceID and returns a Trace associated with that traceID
240
- func (s * SpanReader ) GetTraces (ctx context.Context , query []dbmodel.TraceID ) ([]* dbmodel.Trace , error ) {
240
+ func (s * SpanReader ) GetTraces (ctx context.Context , query []dbmodel.TraceID ) ([]dbmodel.Trace , error ) {
241
241
ctx , span := s .tracer .Start (ctx , "GetTrace" )
242
242
defer span .End ()
243
243
currentTime := time .Now ()
244
244
// TODO: use start time & end time in "query" struct
245
245
return s .multiRead (ctx , query , currentTime .Add (- s .maxSpanAge ), currentTime )
246
246
}
247
247
248
- func (s * SpanReader ) collectSpans (esSpansRaw []* elastic.SearchHit ) ([]* dbmodel.Span , error ) {
249
- spans := make ([]* dbmodel.Span , len (esSpansRaw ))
248
+ func (s * SpanReader ) collectSpans (esSpansRaw []* elastic.SearchHit ) ([]dbmodel.Span , error ) {
249
+ spans := make ([]dbmodel.Span , len (esSpansRaw ))
250
250
251
251
for i , esSpanRaw := range esSpansRaw {
252
252
jsonSpan , err := s .unmarshalJSONSpan (esSpanRaw )
@@ -258,17 +258,17 @@ func (s *SpanReader) collectSpans(esSpansRaw []*elastic.SearchHit) ([]*dbmodel.S
258
258
return spans , nil
259
259
}
260
260
261
- func (* SpanReader ) unmarshalJSONSpan (esSpanRaw * elastic.SearchHit ) (* dbmodel.Span , error ) {
261
+ func (* SpanReader ) unmarshalJSONSpan (esSpanRaw * elastic.SearchHit ) (dbmodel.Span , error ) {
262
262
esSpanInByteArray := esSpanRaw .Source
263
263
264
264
var jsonSpan dbmodel.Span
265
265
266
266
d := json .NewDecoder (bytes .NewReader (* esSpanInByteArray ))
267
267
d .UseNumber ()
268
268
if err := d .Decode (& jsonSpan ); err != nil {
269
- return nil , err
269
+ return dbmodel. Span {} , err
270
270
}
271
- return & jsonSpan , nil
271
+ return jsonSpan , nil
272
272
}
273
273
274
274
// GetServices returns all services traced by Jaeger, ordered by frequency
@@ -330,7 +330,7 @@ func bucketToStringArray[T ~string](buckets []*elastic.AggregationBucketKeyItem)
330
330
}
331
331
332
332
// FindTraces retrieves traces that match the traceQuery
333
- func (s * SpanReader ) FindTraces (ctx context.Context , traceQuery * dbmodel.TraceQueryParameters ) ([]* dbmodel.Trace , error ) {
333
+ func (s * SpanReader ) FindTraces (ctx context.Context , traceQuery dbmodel.TraceQueryParameters ) ([]dbmodel.Trace , error ) {
334
334
ctx , span := s .tracer .Start (ctx , "FindTraces" )
335
335
defer span .End ()
336
336
@@ -342,7 +342,7 @@ func (s *SpanReader) FindTraces(ctx context.Context, traceQuery *dbmodel.TraceQu
342
342
}
343
343
344
344
// FindTraceIDs retrieves traces IDs that match the traceQuery
345
- func (s * SpanReader ) FindTraceIDs (ctx context.Context , traceQuery * dbmodel.TraceQueryParameters ) ([]dbmodel.TraceID , error ) {
345
+ func (s * SpanReader ) FindTraceIDs (ctx context.Context , traceQuery dbmodel.TraceQueryParameters ) ([]dbmodel.TraceID , error ) {
346
346
ctx , span := s .tracer .Start (ctx , "FindTraceIDs" )
347
347
defer span .End ()
348
348
@@ -361,7 +361,7 @@ func (s *SpanReader) FindTraceIDs(ctx context.Context, traceQuery *dbmodel.Trace
361
361
return esTraceIDs , nil
362
362
}
363
363
364
- func (s * SpanReader ) multiRead (ctx context.Context , traceIDs []dbmodel.TraceID , startTime , endTime time.Time ) ([]* dbmodel.Trace , error ) {
364
+ func (s * SpanReader ) multiRead (ctx context.Context , traceIDs []dbmodel.TraceID , startTime , endTime time.Time ) ([]dbmodel.Trace , error ) {
365
365
ctx , childSpan := s .tracer .Start (ctx , "multiRead" )
366
366
defer childSpan .End ()
367
367
@@ -373,8 +373,10 @@ func (s *SpanReader) multiRead(ctx context.Context, traceIDs []dbmodel.TraceID,
373
373
childSpan .SetAttributes (attribute .Key ("trace_ids" ).StringSlice (tracesIDs ))
374
374
}
375
375
376
+ traces := make ([]dbmodel.Trace , 0 , len (traceIDs ))
377
+
376
378
if len (traceIDs ) == 0 {
377
- return [] * dbmodel. Trace {} , nil
379
+ return traces , nil
378
380
}
379
381
380
382
// Add an hour in both directions so that traces that straddle two indexes are retrieved.
@@ -441,7 +443,8 @@ func (s *SpanReader) multiRead(ctx context.Context, traceIDs []dbmodel.TraceID,
441
443
if traceSpan , ok := tracesMap [lastSpan .TraceID ]; ok {
442
444
traceSpan .Spans = append (traceSpan .Spans , spans ... )
443
445
} else {
444
- tracesMap [lastSpan .TraceID ] = & dbmodel.Trace {Spans : spans }
446
+ traces = append (traces , dbmodel.Trace {Spans : spans })
447
+ tracesMap [lastSpan .TraceID ] = & traces [len (traces )- 1 ]
445
448
}
446
449
447
450
totalDocumentsFetched [lastSpan .TraceID ] += len (result .Hits .Hits )
@@ -451,11 +454,6 @@ func (s *SpanReader) multiRead(ctx context.Context, traceIDs []dbmodel.TraceID,
451
454
}
452
455
}
453
456
}
454
-
455
- var traces []* dbmodel.Trace
456
- for _ , t := range tracesMap {
457
- traces = append (traces , t )
458
- }
459
457
return traces , nil
460
458
}
461
459
@@ -472,10 +470,7 @@ func buildTraceByIDQuery(traceID dbmodel.TraceID) elastic.Query {
472
470
elastic .NewTermQuery (traceIDField , legacyTraceID ))
473
471
}
474
472
475
- func validateQuery (p * dbmodel.TraceQueryParameters ) error {
476
- if p == nil {
477
- return ErrMalformedRequestObject
478
- }
473
+ func validateQuery (p dbmodel.TraceQueryParameters ) error {
479
474
if p .ServiceName == "" && len (p .Tags ) > 0 {
480
475
return ErrServiceNameNotSet
481
476
}
@@ -491,7 +486,7 @@ func validateQuery(p *dbmodel.TraceQueryParameters) error {
491
486
return nil
492
487
}
493
488
494
- func (s * SpanReader ) findTraceIDs (ctx context.Context , traceQuery * dbmodel.TraceQueryParameters ) ([]dbmodel.TraceID , error ) {
489
+ func (s * SpanReader ) findTraceIDs (ctx context.Context , traceQuery dbmodel.TraceQueryParameters ) ([]dbmodel.TraceID , error ) {
495
490
ctx , childSpan := s .tracer .Start (ctx , "findTraceIDs" )
496
491
defer childSpan .End ()
497
492
// Below is the JSON body to our HTTP GET request to ElasticSearch. This function creates this.
@@ -594,7 +589,7 @@ func (*SpanReader) buildTraceIDSubAggregation() elastic.Aggregation {
594
589
Field (startTimeField )
595
590
}
596
591
597
- func (s * SpanReader ) buildFindTraceIDsQuery (traceQuery * dbmodel.TraceQueryParameters ) elastic.Query {
592
+ func (s * SpanReader ) buildFindTraceIDsQuery (traceQuery dbmodel.TraceQueryParameters ) elastic.Query {
598
593
boolQuery := elastic .NewBoolQuery ()
599
594
600
595
// add duration query
0 commit comments