MCPcopy
hub / github.com/grafana/dskit / CAS

Method CAS

kv/consul/client.go:130–134  ·  view source on GitHub ↗

CAS atomically modifies a value in a callback. If value doesn't exist you'll get nil as an argument to your callback.

(ctx context.Context, key string, f func(in interface{}) (out interface{}, retry bool, err error))

Source from the content-addressed store, hash-verified

128// CAS atomically modifies a value in a callback.
129// If value doesn't exist you'll get nil as an argument to your callback.
130func (c *Client) CAS(ctx context.Context, key string, f func(in interface{}) (out interface{}, retry bool, err error)) error {
131 return instrument.CollectedRequest(ctx, "CAS loop", c.consulMetrics.consulRequestDuration, instrument.ErrorCode, func(ctx context.Context) error {
132 return c.cas(ctx, key, f)
133 })
134}
135
136func (c *Client) cas(ctx context.Context, key string, f func(in interface{}) (out interface{}, retry bool, err error)) error {
137 retries := c.cfg.MaxCasRetries

Callers

nothing calls this directly

Calls 2

casMethod · 0.95
CollectedRequestFunction · 0.92

Tested by

no test coverage detected