From 65dacc0a3e0d9f1be35392254dfdd605809041e9 Mon Sep 17 00:00:00 2001 From: nugaon Date: Tue, 5 May 2026 18:48:11 +0200 Subject: [PATCH 1/2] fix: stewardship replica reupload --- pkg/steward/steward.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/steward/steward.go b/pkg/steward/steward.go index 463d389814e..6fa4ab37961 100644 --- a/pkg/steward/steward.go +++ b/pkg/steward/steward.go @@ -13,6 +13,7 @@ import ( "github.com/ethersphere/bee/v2/pkg/file/redundancy" "github.com/ethersphere/bee/v2/pkg/postage" + "github.com/ethersphere/bee/v2/pkg/replicas" "github.com/ethersphere/bee/v2/pkg/retrieval" "github.com/ethersphere/bee/v2/pkg/storage" "github.com/ethersphere/bee/v2/pkg/storer" @@ -77,6 +78,20 @@ func (s *steward) Reupload(ctx context.Context, root swarm.Address, stamper post ) } + if rLevel != redundancy.NONE { + rootChunk, err := getter.Get(ctx, root) + if err != nil { + return errors.Join(fmt.Errorf("get root chunk for dispersed replicas: %w", err), uploaderSession.Cleanup()) + } + stamp, err := stamper.Stamp(rootChunk.Address(), rootChunk.Address()) + if err != nil { + return errors.Join(fmt.Errorf("stamping root chunk for dispersed replicas: %w", err), uploaderSession.Cleanup()) + } + if err := replicas.NewPutter(uploaderSession, rLevel).Put(ctx, rootChunk.WithStamp(stamp)); err != nil { + return errors.Join(fmt.Errorf("re-uploading dispersed replicas: %w", err), uploaderSession.Cleanup()) + } + } + return uploaderSession.Done(root) } From 54830a5c658294284fc1a4641a81d28326425c68 Mon Sep 17 00:00:00 2001 From: nugaon Date: Wed, 6 May 2026 13:35:39 +0200 Subject: [PATCH 2/2] fix: fetch root dispersed replicas on reupload --- pkg/steward/steward.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/steward/steward.go b/pkg/steward/steward.go index 6fa4ab37961..af87b97a51e 100644 --- a/pkg/steward/steward.go +++ b/pkg/steward/steward.go @@ -79,7 +79,7 @@ func (s *steward) Reupload(ctx context.Context, root swarm.Address, stamper post } if rLevel != redundancy.NONE { - rootChunk, err := getter.Get(ctx, root) + rootChunk, err := replicas.NewGetter(getter, rLevel).Get(ctx, root) if err != nil { return errors.Join(fmt.Errorf("get root chunk for dispersed replicas: %w", err), uploaderSession.Cleanup()) }