in server/datasource/etcd/kv/kv_dao.go [512:547]
func (s *Dao) listData(ctx context.Context, project, domain string, options ...datasource.FindOption) (*model.KVResponse, datasource.FindOptions, error) {
opts := datasource.NewDefaultFindOpts()
for _, o := range options {
o(&opts)
}
ctx, cancel := context.WithTimeout(ctx, opts.Timeout)
defer cancel()
regex, err := toRegex(opts)
if err != nil {
return nil, opts, err
}
if Enabled() {
result, useCache, err := Search(ctx, &CacheSearchReq{
Domain: domain,
Project: project,
Opts: &opts,
Regex: regex,
})
if useCache && err == nil {
return result, opts, nil
}
if useCache && err != nil {
openlog.Error("using cache to search kv failed: " + err.Error())
}
}
result, err := matchLabelsSearch(ctx, domain, project, regex, opts)
if err != nil {
openlog.Error("list kv failed: " + err.Error())
return nil, opts, err
}
return result, opts, nil
}