MCPcopy Create free account
hub / github.com/cortexproject/cortex / fetch

Method fetch

pkg/chunk/cache/memcached.go:147–182  ·  view source on GitHub ↗
(ctx context.Context, keys []string)

Source from the content-addressed store, hash-verified

145}
146
147func (c *Memcached) fetch(ctx context.Context, keys []string) (found []string, bufs [][]byte, missed []string) {
148 var items map[string]*memcache.Item
149 const method = "Memcache.GetMulti"
150 err := instr.CollectedRequest(ctx, method, c.requestDuration, memcacheStatusCode, func(innerCtx context.Context) error {
151 log, _ := spanlogger.New(innerCtx, method)
152 defer log.Finish()
153 log.LogFields(otlog.Int("keys requested", len(keys)))
154
155 var err error
156 items, err = c.memcache.GetMulti(keys)
157
158 log.LogFields(otlog.Int("keys found", len(items)))
159
160 // Memcached returns partial results even on error.
161 if err != nil {
162 log.Error(err)
163 level.Error(log).Log("msg", "Failed to get keys from memcached", "err", err)
164 }
165 return err
166 })
167
168 if err != nil {
169 return found, bufs, keys
170 }
171
172 for _, key := range keys {
173 item, ok := items[key]
174 if ok {
175 found = append(found, key)
176 bufs = append(bufs, item.Value)
177 } else {
178 missed = append(missed, key)
179 }
180 }
181 return
182}
183
184func (c *Memcached) fetchKeysBatched(ctx context.Context, keys []string) (found []string, bufs [][]byte, missed []string) {
185 resultsCh := make(chan *result)

Callers 2

NewMemcachedFunction · 0.95
FetchMethod · 0.95

Calls 6

NewFunction · 0.92
FinishMethod · 0.80
LogFieldsMethod · 0.80
GetMultiMethod · 0.65
ErrorMethod · 0.45
LogMethod · 0.45

Tested by

no test coverage detected