From a33795b39fa2166ec92df61cf51a9aa3a61d6697 Mon Sep 17 00:00:00 2001 From: Sergey Gorbunov Date: Fri, 14 Feb 2025 13:59:17 +0300 Subject: [PATCH 1/2] gateway/blocks-backend: GetBlock should not perform IPLD decoding #673 --- gateway/backend_blocks.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/gateway/backend_blocks.go b/gateway/backend_blocks.go index 79cf99607..c2fde00fe 100644 --- a/gateway/backend_blocks.go +++ b/gateway/backend_blocks.go @@ -29,6 +29,7 @@ import ( "github.com/ipld/go-car/v2/storage" dagpb "github.com/ipld/go-codec-dagpb" "github.com/ipld/go-ipld-prime" + // Ensure basic codecs are registered. _ "github.com/ipld/go-ipld-prime/codec/cbor" _ "github.com/ipld/go-ipld-prime/codec/dagcbor" @@ -210,12 +211,25 @@ func (bb *BlocksBackend) GetAll(ctx context.Context, path path.ImmutablePath) (C } func (bb *BlocksBackend) GetBlock(ctx context.Context, path path.ImmutablePath) (ContentPathMetadata, files.File, error) { - md, nd, err := bb.getNode(ctx, path) + roots, lastSeg, remainder, err := bb.getPathRoots(ctx, path) + if err != nil { + return ContentPathMetadata{}, nil, err + } + + md := ContentPathMetadata{ + PathSegmentRoots: roots, + LastSegment: lastSeg, + LastSegmentRemainder: remainder, + } + + lastRoot := lastSeg.RootCid() + + b, err := bb.blockService.GetBlock(ctx, lastRoot) if err != nil { return md, nil, err } - return md, files.NewBytesFile(nd.RawData()), nil + return md, files.NewBytesFile(b.RawData()), nil } func (bb *BlocksBackend) Head(ctx context.Context, path path.ImmutablePath) (ContentPathMetadata, *HeadResponse, error) { From b76f2d05ce14c0e4551219ca8c075b150c4768f8 Mon Sep 17 00:00:00 2001 From: Sergey Gorbunov Date: Fri, 14 Feb 2025 14:11:59 +0300 Subject: [PATCH 2/2] Add changelog entry. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a197d0418..0b423bb30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ The following emojis are used to highlight certain changes: - Fix memory leaks due to not cleaning up wantlists [#829](https://github.com/ipfs/boxo/pull/829), [#833](https://github.com/ipfs/boxo/pull/833) - `ipns`: Improved interop with legacy clients by restoring support for `[]byte` CID in `Value` field. `Value()` will convert it to a valid `path.Path`. Empty `Value()` will produce `NoopPath` (`/ipfs/bafkqaaa`) to avoid breaking existing code that expects a valid record to always produce a valid content path. [#830](https://github.com/ipfs/boxo/pull/830) +- `gateway/blocks-backend`: Removed IPLD decoding in GetBlock funciton in gateway's BlocksBackend. Now it's querying the blockService directly instead of dagService. [#845](https://github.com/ipfs/boxo/pull/845) ## [v0.27.3]