summaryrefslogtreecommitdiff
path: root/internal/flamegraph
diff options
context:
space:
mode:
Diffstat (limited to 'internal/flamegraph')
-rw-r--r--internal/flamegraph/iordata.go14
1 files changed, 13 insertions, 1 deletions
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)
}