Write implements backend.Writer
(ctx context.Context, name string, keypath backend.KeyPath, data io.Reader, _ int64, _ *backend.CacheInfo)
| 115 | |
| 116 | // Write implements backend.Writer |
| 117 | func (rw *readerWriter) Write(ctx context.Context, name string, keypath backend.KeyPath, data io.Reader, _ int64, _ *backend.CacheInfo) error { |
| 118 | keypath = backend.KeyPathWithPrefix(keypath, rw.cfg.Prefix) |
| 119 | derivedCtx, span := tracer.Start(ctx, "gcs.Write") |
| 120 | defer span.End() |
| 121 | |
| 122 | span.SetAttributes(attribute.String("object", name)) |
| 123 | |
| 124 | w := rw.writer(derivedCtx, backend.ObjectFileName(keypath, name), nil) |
| 125 | |
| 126 | written, err := io.Copy(w, data) |
| 127 | if err != nil { |
| 128 | w.Close() |
| 129 | span.RecordError(err) |
| 130 | return fmt.Errorf("failed to write: %w", err) |
| 131 | } |
| 132 | |
| 133 | err = w.Close() |
| 134 | if err != nil { |
| 135 | return fmt.Errorf("failed to close: %w", err) |
| 136 | } |
| 137 | |
| 138 | level.Debug(rw.logger).Log("msg", "object uploaded to gcs", "objectName", backend.ObjectFileName(keypath, name), "size", written) |
| 139 | |
| 140 | return nil |
| 141 | } |
| 142 | |
| 143 | // Append implements backend.Writer |
| 144 | func (rw *readerWriter) Append(ctx context.Context, name string, keypath backend.KeyPath, tracker backend.AppendTracker, buffer []byte) (backend.AppendTracker, error) { |
nothing calls this directly
no test coverage detected