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

Method WriteVersioned

tempodb/backend/azure/azure.go:341–365  ·  view source on GitHub ↗
(ctx context.Context, name string, keypath backend.KeyPath, data io.Reader, size int64, version backend.Version)

Source from the content-addressed store, hash-verified

339}
340
341func (rw *Azure) WriteVersioned(ctx context.Context, name string, keypath backend.KeyPath, data io.Reader, size int64, version backend.Version) (backend.Version, error) {
342 // TODO use conditional if-match API
343 _, currentVersion, err := rw.ReadVersioned(ctx, name, keypath)
344 if err != nil && !errors.Is(err, backend.ErrDoesNotExist) {
345 return "", err
346 }
347
348 level.Info(log.Logger).Log("msg", "WriteVersioned - fetching data", "currentVersion", currentVersion, "err", err, "version", version)
349
350 // object does not exist - supplied version must be "0"
351 if errors.Is(err, backend.ErrDoesNotExist) && version != backend.VersionNew {
352 return "", backend.ErrVersionDoesNotMatch
353 }
354 if !errors.Is(err, backend.ErrDoesNotExist) && version != currentVersion {
355 return "", backend.ErrVersionDoesNotMatch
356 }
357
358 err = rw.Write(ctx, name, keypath, data, size, nil)
359 if err != nil {
360 return "", err
361 }
362
363 _, currentVersion, err = rw.ReadVersioned(ctx, name, keypath)
364 return currentVersion, err
365}
366
367func (rw *Azure) DeleteVersioned(ctx context.Context, name string, keypath backend.KeyPath, version backend.Version) error {
368 keypath = backend.KeyPathWithPrefix(keypath, rw.cfg.Prefix)

Callers

nothing calls this directly

Calls 3

ReadVersionedMethod · 0.95
WriteMethod · 0.95
LogMethod · 0.65

Tested by

no test coverage detected