From 66850d3350faae19a495a6668035239b6df7c0a8 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 24 Feb 2026 21:33:15 +0200 Subject: flamegraph: stream gob decode in loadFromFile --- internal/flamegraph/iordata.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'internal/flamegraph') diff --git a/internal/flamegraph/iordata.go b/internal/flamegraph/iordata.go index 71de6ec..af4ad9d 100644 --- a/internal/flamegraph/iordata.go +++ b/internal/flamegraph/iordata.go @@ -140,11 +140,23 @@ func (iod *iorData) loadFromFile(filename string) error { decoder := zstd.NewReader(file) defer decoder.Close() + var records map[recordKey]Counter + if err := gob.NewDecoder(decoder).Decode(&records); err == nil && len(records) > 0 { + iod.records = records + return nil + } + + // Fallback path for legacy payloads and empty-map ambiguity. + if _, err := file.Seek(0, io.SeekStart); err != nil { + return err + } + decoder = zstd.NewReader(file) + defer decoder.Close() + var buffer bytes.Buffer if _, err = io.Copy(&buffer, decoder); err != nil { return err } - return iod.deserialize(&buffer) } -- cgit v1.2.3