Skip to content

Commit c84d434

Browse files
authored
fix: provide putter to loadsave (#5003)
1 parent 7711ec8 commit c84d434

File tree

8 files changed

+16
-13
lines changed

8 files changed

+16
-13
lines changed

pkg/api/accesscontrol.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func (s *Service) actDecryptionHandler() func(h http.Handler) http.Handler {
126126
cache = *headers.Cache
127127
}
128128
ctx := r.Context()
129-
ls := loadsave.NewReadonly(s.storer.Download(cache), redundancy.DefaultLevel)
129+
ls := loadsave.NewReadonly(s.storer.Download(cache), s.storer.Cache(), redundancy.DefaultLevel)
130130
reference, err := s.accesscontrol.DownloadHandler(ctx, ls, paths.Address, headers.Publisher, *headers.HistoryAddress, timestamp)
131131
if err != nil {
132132
logger.Debug("access control download failed", "error", err)
@@ -206,7 +206,7 @@ func (s *Service) actListGranteesHandler(w http.ResponseWriter, r *http.Request)
206206
cache = *headers.Cache
207207
}
208208
publisher := &s.publicKey
209-
ls := loadsave.NewReadonly(s.storer.Download(cache), redundancy.DefaultLevel)
209+
ls := loadsave.NewReadonly(s.storer.Download(cache), s.storer.Cache(), redundancy.DefaultLevel)
210210
grantees, err := s.accesscontrol.Get(r.Context(), ls, publisher, paths.GranteesAddress)
211211
if err != nil {
212212
logger.Debug("could not get grantees", "error", err)

pkg/api/bzz.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -382,10 +382,10 @@ func (s *Service) serveReference(logger log.Logger, address swarm.Address, pathV
382382
rLevel = *headers.RLevel
383383
}
384384

385-
ls := loadsave.NewReadonly(s.storer.Download(cache), rLevel)
385+
ctx := r.Context()
386+
ls := loadsave.NewReadonly(s.storer.Download(cache), s.storer.Cache(), redundancy.DefaultLevel)
386387
feedDereferenced := false
387388

388-
ctx := r.Context()
389389
ctx, err := getter.SetConfigInContext(ctx, headers.Strategy, headers.FallbackMode, headers.ChunkRetrievalTimeout, logger)
390390
if err != nil {
391391
logger.Error(err, err.Error())
@@ -435,7 +435,7 @@ FETCH:
435435
}
436436
address = wc.Address()
437437
// modify ls and init with non-existing wrapped chunk
438-
ls = loadsave.NewReadonlyWithRootCh(s.storer.Download(cache), wc, rLevel)
438+
ls = loadsave.NewReadonlyWithRootCh(s.storer.Download(cache), s.storer.Cache(), wc, rLevel)
439439

440440
feedDereferenced = true
441441
curBytes, err := cur.MarshalBinary()

pkg/api/dirs_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ func TestDirs(t *testing.T) {
283283
// verify manifest content
284284
verifyManifest, err := manifest.NewDefaultManifestReference(
285285
resp.Reference,
286-
loadsave.NewReadonly(storer.ChunkStore(), redundancy.DefaultLevel),
286+
loadsave.NewReadonly(storer.ChunkStore(), storer.Cache(), redundancy.DefaultLevel),
287287
)
288288
if err != nil {
289289
t.Fatal(err)

pkg/api/feed_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ func TestFeed_Post(t *testing.T) {
246246
}),
247247
)
248248

249-
ls := loadsave.NewReadonly(mockStorer.ChunkStore(), redundancy.DefaultLevel)
249+
ls := loadsave.NewReadonly(mockStorer.ChunkStore(), mockStorer.Cache(), redundancy.DefaultLevel)
250250
i, err := manifest.NewMantarayManifestReference(expReference, ls)
251251
if err != nil {
252252
t.Fatal(err)

pkg/file/loadsave/loadsave.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,20 @@ func New(getter storage.Getter, putter storage.Putter, pipelineFn func() pipelin
4646

4747
// NewReadonly returns a new read-only load-saver
4848
// which will error on write.
49-
func NewReadonly(getter storage.Getter, rLevel redundancy.Level) file.LoadSaver {
49+
func NewReadonly(getter storage.Getter, putter storage.Putter, rLevel redundancy.Level) file.LoadSaver {
5050
return &loadSave{
5151
getter: getter,
52+
putter: putter,
5253
rLevel: rLevel,
5354
}
5455
}
5556

5657
// NewReadonlyWithRootCh returns a new read-only load-saver
5758
// which will error on write.
58-
func NewReadonlyWithRootCh(getter storage.Getter, rootCh swarm.Chunk, rLevel redundancy.Level) file.LoadSaver {
59+
func NewReadonlyWithRootCh(getter storage.Getter, putter storage.Putter, rootCh swarm.Chunk, rLevel redundancy.Level) file.LoadSaver {
5960
return &loadSave{
6061
getter: getter,
62+
putter: putter,
6163
rootCh: rootCh,
6264
rLevel: rLevel,
6365
}

pkg/file/loadsave/loadsave_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func TestReadonlyLoadSave(t *testing.T) {
5252

5353
store := inmemchunkstore.New()
5454
factory := pipelineFn(store)
55-
ls := loadsave.NewReadonly(store, redundancy.DefaultLevel)
55+
ls := loadsave.NewReadonly(store, store, redundancy.DefaultLevel)
5656
_, err := ls.Save(context.Background(), data)
5757
if !errors.Is(err, loadsave.ErrReadonlyLoadSave) {
5858
t.Fatal("expected error but got none")

pkg/node/bootstrap.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ func bootstrapNode(
211211
ctx, cancel := context.WithTimeout(ctx, timeout)
212212
defer cancel()
213213

214-
snapshotRootCh, err = getLatestSnapshot(ctx, localStore.Download(true), snapshotFeed)
214+
snapshotRootCh, err = getLatestSnapshot(ctx, localStore.Download(true), localStore.Cache(), snapshotFeed)
215215
if err != nil {
216216
logger.Warning("bootstrap: fetching snapshot failed", "error", err)
217217
continue
@@ -278,9 +278,10 @@ func waitPeers(kad *kademlia.Kad) error {
278278
func getLatestSnapshot(
279279
ctx context.Context,
280280
st storage.Getter,
281+
putter storage.Putter,
281282
address swarm.Address,
282283
) (swarm.Chunk, error) {
283-
ls := loadsave.NewReadonly(st, redundancy.DefaultLevel)
284+
ls := loadsave.NewReadonly(st, putter, redundancy.DefaultLevel)
284285
feedFactory := factory.New(st)
285286

286287
m, err := manifest.NewDefaultManifestReference(

pkg/traversal/traversal.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func (s *service) Traverse(ctx context.Context, addr swarm.Address, iterFn swarm
7777
// then the reference is likely a manifest reference. This is because manifest holds metadata
7878
// that points to the actual data file, and this metadata is assumed to be small - Less than or equal to swarm.ChunkSize.
7979
if j.Size() <= swarm.ChunkSize {
80-
ls := loadsave.NewReadonly(s.getter, s.rLevel)
80+
ls := loadsave.NewReadonly(s.getter, s.putter, s.rLevel)
8181
switch mf, err := manifest.NewDefaultManifestReference(addr, ls); {
8282
case errors.Is(err, manifest.ErrInvalidManifestType):
8383
break

0 commit comments

Comments
 (0)