repository: randomly distribute blobs over two pack files

This commit is contained in:
Michael Eischer
2025-03-22 19:43:07 +01:00
parent c617364d15
commit 62453f9356
5 changed files with 182 additions and 120 deletions

View File

@@ -42,10 +42,11 @@ type Repository struct {
opts Options
packerWg *errgroup.Group
uploader *packerUploader
treePM *packerManager
dataPM *packerManager
packerWg *errgroup.Group
uploader *packerUploader
treePM *packerManager
dataPM *packerManager
packerCount int
allocEnc sync.Once
allocDec sync.Once
@@ -125,9 +126,10 @@ func New(be backend.Backend, opts Options) (*Repository, error) {
}
repo := &Repository{
be: be,
opts: opts,
idx: index.NewMasterIndex(),
be: be,
opts: opts,
idx: index.NewMasterIndex(),
packerCount: defaultPackerCount,
}
return repo, nil
@@ -553,8 +555,8 @@ func (r *Repository) StartPackUploader(ctx context.Context, wg *errgroup.Group)
innerWg, ctx := errgroup.WithContext(ctx)
r.packerWg = innerWg
r.uploader = newPackerUploader(ctx, innerWg, r, r.Connections())
r.treePM = newPackerManager(r.key, restic.TreeBlob, r.packSize(), r.uploader.QueuePacker)
r.dataPM = newPackerManager(r.key, restic.DataBlob, r.packSize(), r.uploader.QueuePacker)
r.treePM = newPackerManager(r.key, restic.TreeBlob, r.packSize(), r.packerCount, r.uploader.QueuePacker)
r.dataPM = newPackerManager(r.key, restic.DataBlob, r.packSize(), r.packerCount, r.uploader.QueuePacker)
wg.Go(func() error {
return innerWg.Wait()