From 15ecc3bd2d5a275bba90b36bb9ad3e579f9abe8b Mon Sep 17 00:00:00 2001 From: Neelesh Salian Date: Mon, 28 Sep 2026 14:40:27 -0700 Subject: [PATCH] fix(puffin): surface LZ4 content-checksum error regardless of JSON decoder read-ahead --- puffin/puffin_reader.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/puffin/puffin_reader.go b/puffin/puffin_reader.go index ab2c6c0e6..323e02773 100644 --- a/puffin/puffin_reader.go +++ b/puffin/puffin_reader.go @@ -502,6 +502,10 @@ func (r *Reader) readFooter() error { return fmt.Errorf("puffin: read buffered footer JSON: %w", err) } if len(bytes.TrimSpace(buffered)) > 0 { + if compressedFooter != nil && compressedFooter.err != nil { + return fmt.Errorf("puffin: read compressed footer: %w", compressedFooter.err) + } + return errors.New("puffin: unexpected content after footer JSON") } } @@ -510,6 +514,10 @@ func (r *Reader) readFooter() error { // content deliberately, even though some other Iceberg implementations // accept padding or additional values inside the footer payload. if decoder.More() { + if compressedFooter != nil && compressedFooter.err != nil { + return fmt.Errorf("puffin: read compressed footer: %w", compressedFooter.err) + } + return errors.New("puffin: unexpected content after footer JSON") } if _, err := decoder.Token(); !errors.Is(err, io.EOF) {