in pkg/plugin/cloudtrace/client.go [209:252]
func (c *Client) ListTraces(ctx context.Context, q *TracesQuery) ([]*cloudtracepb.Trace, error) {
// Never exceed the maximum page size
pageSize := int32(math.Min(float64(q.Limit), 1000))
req := cloudtracepb.ListTracesRequest{
ProjectId: q.ProjectID,
Filter: q.Filter,
StartTime: timestamppb.New(q.TimeRange.From),
EndTime: timestamppb.New(q.TimeRange.To),
OrderBy: "start desc",
PageSize: pageSize,
View: tracepb.ListTracesRequest_ROOTSPAN,
}
start := time.Now()
defer func() {
log.DefaultLogger.Info("Finished listing traces", "duration", time.Since(start).String())
}()
it := c.tClient.ListTraces(ctx, &req)
if it == nil {
return nil, errors.New("nil response")
}
var i int64
entries := []*cloudtracepb.Trace{}
for {
resp, err := it.Next()
if err == iterator.Done {
break
}
if err != nil {
log.DefaultLogger.Error("error getting page", "error", err)
break
}
entries = append(entries, resp)
i++
if i >= q.Limit {
break
}
}
return entries, nil
}