MCPcopy
hub / github.com/grafana/tempo / Run

Method Run

cmd/tempo-cli/cmd-search.go:32–128  ·  view source on GitHub ↗
(opts *globalOptions)

Source from the content-addressed store, hash-verified

30}
31
32func (cmd *searchBlocksCmd) Run(opts *globalOptions) error {
33 r, _, _, err := loadBackend(&cmd.backendOptions, opts)
34 if err != nil {
35 return err
36 }
37
38 startTime, err := parseTime(cmd.Start)
39 if err != nil {
40 return err
41 }
42 endTime, err := parseTime(cmd.End)
43 if err != nil {
44 return err
45 }
46
47 searchReq := &tempopb.SearchRequest{
48 Tags: map[string]string{cmd.Name: cmd.Value},
49 Limit: limit,
50 }
51
52 ctx := context.Background()
53
54 blockIDs, _, err := r.Blocks(ctx, cmd.TenantID)
55 if err != nil {
56 return err
57 }
58
59 fmt.Println("Total Blocks:", len(blockIDs))
60
61 // Load in parallel
62 wg := boundedwaitgroup.New(20)
63 resultsCh := make(chan *backend.BlockMeta, len(blockIDs))
64 for _, id := range blockIDs {
65 wg.Add(1)
66
67 go func(id2 uuid.UUID) {
68 defer wg.Done()
69
70 // search here
71 meta, err := r.BlockMeta(ctx, id2, cmd.TenantID)
72 if errors.Is(err, backend.ErrDoesNotExist) {
73 return
74 }
75 if err != nil {
76 fmt.Println("Error reading block meta:", err)
77 return
78 }
79 if meta.StartTime.Unix() <= endTime.Unix() &&
80 meta.EndTime.Unix() >= startTime.Unix() {
81 resultsCh <- meta
82 }
83 }(id)
84 }
85
86 wg.Wait()
87 close(resultsCh)
88
89 blockmetas := []*backend.BlockMeta{}

Callers

nothing calls this directly

Calls 11

NewFunction · 0.92
OpenBlockFunction · 0.92
loadBackendFunction · 0.85
parseTimeFunction · 0.85
ApplyToOptionsMethod · 0.80
BlocksMethod · 0.65
AddMethod · 0.65
DoneMethod · 0.65
BlockMetaMethod · 0.65
WaitMethod · 0.65
SearchMethod · 0.65

Tested by

no test coverage detected