diff --git a/core/exchange.go b/core/exchange.go index 3f55bbf990..bcf29842e3 100644 --- a/core/exchange.go +++ b/core/exchange.go @@ -6,6 +6,7 @@ import ( "fmt" "time" + "github.com/tendermint/tendermint/types" "golang.org/x/sync/errgroup" libhead "github.com/celestiaorg/go-header" @@ -177,7 +178,11 @@ func (ce *Exchange) getExtendedHeaderByHeight(ctx context.Context, height *int64 if err != nil { return nil, fmt.Errorf("extending block data for height %d: %w", b.Header.Height, err) } - // create extended header + + // TODO(@Wondertan): This is a hack to deref Data, allowing GC to pick it up. + // The better footgun-less solution is to change core.ResultSignedBlock fields to be pointers instead of values. + b.Data = types.Data{} + eh, err := ce.construct(&b.Header, &b.Commit, &b.ValidatorSet, eds) if err != nil { panic(fmt.Errorf("constructing extended header for height %d: %w", b.Header.Height, err)) diff --git a/core/exchange_test.go b/core/exchange_test.go index c0b925b51d..072493d4f3 100644 --- a/core/exchange_test.go +++ b/core/exchange_test.go @@ -135,7 +135,7 @@ func fillBlocks( default: } - _, err := cctx.FillBlock(16, cfg.Genesis.Accounts()[0].Name, flags.BroadcastBlock) + _, err := cctx.FillBlock(16, cfg.Genesis.Accounts()[0].Name, flags.BroadcastAsync) require.NoError(t, err) } }