diff --git a/object/object_manager.go b/object/object_manager.go index 2825d066c..34cf6149b 100644 --- a/object/object_manager.go +++ b/object/object_manager.go @@ -57,6 +57,7 @@ func (om *Manager) NewWriter(ctx context.Context, opt WriterOptions) Writer { repo: om, splitter: om.newSplitter(), description: opt.Description, + prefix: opt.Prefix, } if opt.splitter != nil { diff --git a/object/object_writer.go b/object/object_writer.go index 96b938f02..c802e65e1 100644 --- a/object/object_writer.go +++ b/object/object_writer.go @@ -48,6 +48,7 @@ type objectWriter struct { ctx context.Context repo *Manager + prefix string buffer bytes.Buffer totalLength int64 @@ -97,7 +98,7 @@ func (w *objectWriter) flushBuffer() error { w.buffer.Reset() do := func() { - blockID, err := w.repo.blockMgr.WriteBlock(w.ctx, b2.Bytes(), "") + blockID, err := w.repo.blockMgr.WriteBlock(w.ctx, b2.Bytes(), w.prefix) w.repo.trace("OBJECT_WRITER(%q) stored %v (%v bytes)", w.description, blockID, length) if err != nil { w.err.add(fmt.Errorf("error when flushing chunk %d of %s: %v", chunkID, w.description, err)) @@ -149,6 +150,7 @@ func (w *objectWriter) Result() (ID, error) { repo: w.repo, description: "LIST(" + w.description + ")", splitter: w.repo.newSplitter(), + prefix: w.prefix, } jw := jsonstream.NewWriter(iw, indirectStreamType) @@ -170,6 +172,7 @@ func (w *objectWriter) Result() (ID, error) { // WriterOptions can be passed to Repository.NewWriter() type WriterOptions struct { Description string + Prefix string // empty string or a single-character ('g'..'z') splitter objectSplitter } diff --git a/snapshot/upload.go b/snapshot/upload.go index 8a13f93b8..c5ab78a9a 100644 --- a/snapshot/upload.go +++ b/snapshot/upload.go @@ -245,6 +245,7 @@ func (u *Uploader) uploadFile(ctx context.Context, file fs.File) (*dir.Entry, er func (u *Uploader) uploadDir(ctx context.Context, rootDir fs.Directory) (*dir.Entry, object.ID, error) { mw := u.repo.Objects.NewWriter(ctx, object.WriterOptions{ Description: "HASHCACHE:" + rootDir.Metadata().Name, + Prefix: "h", }) defer mw.Close() //nolint:errcheck u.cacheWriter = hashcache.NewWriter(mw) @@ -552,6 +553,7 @@ func uploadDirInternal( writer := u.repo.Objects.NewWriter(ctx, object.WriterOptions{ Description: "DIR:" + dirRelativePath, + Prefix: "k", }) dw := dir.NewWriter(writer)