Releases: parca-dev/parca
v0.19.0
v0.19.0 is the biggest and most exciting Parca release yet!
Highlights:
- A complete re-design of the UI. ✨
- All APIs are now served in Apache Arrow format. This completes the migration to being fully Apache Arrow based for ingestion and querying. 📈
- Queries can now filter by arbitrary profile labels (trace ID, customer ID, or whatever else is added to profiling data). 🔍
- Icicle graphs can now group by profile labels (such as thread ID or name). 📊
Aside from that, there are countless performance improvements and bug fixes.
Full Changelog:
- ui-perf: Protobuf long type handled as
Bigintinstead ofstringon the UI by @manojVivek in #2934 - ui: Redundant query request fix by @manojVivek in #3331
- fix(server): handle gRPC-Web requests over HTTP2 by @maxbrunet in #3352
- ui: Flamegraph crash fix by @manojVivek in #3362
- ui: Fixes the bug where flamegraph goes blank for some instrumented profiles by @manojVivek in #3363
- Allow filtering data by pprof labels by @brancz in #3365
- ui: Handling 0 as a divisor in BigInt divide util by @manojVivek in #3374
- ui/shared/profile/IcicleGraphArrow: Create arrow-based IcicleGraph by @metalmatze in #3326
- ui: Making a default query on initial page load by @manojVivek in #2609
- pkg/debuginfo: Improve debuginfod client by @brancz in #3413
- pkg/query: TestGenerateFlamegraphArrowWithInlined by @metalmatze in #3415
- ui: Passing MetricsGraph variables through Parca Context by @manojVivek in #3439
- parca: add --storage-snapshot-trigger-size by @asubiotto in #3432
- pkg/query: Support unsymbolized profiles with arrow fg by @metalmatze in #3433
- pkg/query: Correctly sum up total cumulative value by @metalmatze in #3440
- pkg/query/flamegraph_arrow: Cast strings to bytes by @metalmatze in #3441
- debuginfo: Add traces by @kakkoyun in #3396
- pkg/debuginfo: Allow user to force a debuginfo upload by @brancz in #3450
- ui: Metrics graph compare fix by @manojVivek in #3455
- Dependency inject the memory.Allocator for rendering by @thorfour in #3461
- ui: Arrow Flamegraph shows pprof labels by @metalmatze in #3460
- ui: value formatter crash fix by @manojVivek in #3467
- Add SortBy and GroupBy actions for Icicle Graphs by @metalmatze in #3479
- Symbolize without intermediate format directly in Apache Arrow format by @brancz in #3519
- pkg/config: Allow configuring to keep only certain sample types by @brancz in #3540
- Fix for panic when building from dictionaries by @thorfour in #3543
- Update badges by @kakkoyun in #3560
- ui: Callgraph undefined diff handled in tooltip by @manojVivek in #3559
- pkg/query: Replace remaining slices.Clone by @brancz in #3565
- pkg/query: Add fast map of strings to json marshaling by @brancz in #3564
- pkg/query: Fix cases where dicts are empty by @brancz in #3580
- ui: UI Build failure fix by @manojVivek in #3591
- flamegraph_arrow: Inject artifical label node by @metalmatze in #3516
- *: Allow uploading debuginfo sources by @brancz in #3590
- Refactor the flamegraphBuilder by @metalmatze in #3594
- pkg/query/flamegraph_arrow: Cast bytes to string when accessing maps keys by @metalmatze in #3597
- feat(snap): add config options to send profiles to a remote store by @jnsgruk in #3572
- ui/packages/profile: Disable automatic retries for merge queries by @metalmatze in #3514
- pkg/query/flamegraph_arrow: Expose diff values, dont set to null by @metalmatze in #3624
- *: Allow normalizing server side by @brancz in #3625
- ci: fix snap test - s/port/http-address/g by @jnsgruk in #3622
- pkg/debuginfo: Save sources upload without extension by @brancz in #3631
- index.tsx: fix typo by @javierhonduco in #3637
- pkg/query/flamegraph_arrow: Add tracing by @metalmatze in #3635
- pkg/query/flamegraph_arrow: Properly calculate height by @metalmatze in #3632
- pkg/query: Improve flamegraph performance through dictionary unification by @brancz in #3651
- ui: Reverting prettier-plugin-tailwindcss upgrade by @manojVivek in #3658
- add startline to function when symbolizing elf by @albertlockett in #3648
- Improve flamegraph rendering performance by @brancz in #3661
- ui: Sources Panel UI improvements by @manojVivek in #3657
- Add source report: View sources and show profiling data inline by @brancz in #3666
- Move table to using arrow by @metalmatze in #3659
- ui: Disabling sources view by default by @manojVivek in #3668
- ui: Read source UI improvements by @manojVivek in #3670
- Use checked allocator by @thorfour in #3673
- pkg/query: Fix how inlined functions are determined to be root by @brancz in #3684
- ui/packages/profile/Table: Check functionname for empty string by @metalmatze in #3687
- Implementing redesign by @monicawoj in #3548
- pkg/query: Small arrow flamegraph cleanups by @brancz in #3685
- ui: Fix to show the loader on top of the source pane by @manojVivek in #3686
- pkg/query: Reduce copy children cpu by @brancz in #3695
- ui: Fix unexpectedly unfocusing matchers input by @brancz in #3701
- fix profile view header bug and button spacing by @monicawoj in #3705
- go.mod: Update frostdb and arrow by @brancz in #3706
- pkg/query: Ignore staticcheck lint by @brancz in #3707
- ui: Minor UI fixes by @manojVivek in #3714
- ui: Source View - Scroll to line fix by @manojVivek in #3716
- ui: Parca minor style tweaks for Input and Select component by @manojVivek in #3717
- pkg/query: Reduce dependency on sample labels by @brancz in #3718
- pkg/query: Use hash of labels instead of marshaling labels to json by @brancz in #3719
- General styling and dark mode improvements by @monicawoj in #3720
- Fix double free by @thorfour in #3726
- ui: Reading string from Arrow ArrayBuffers by @manojVivek in #3727
- pkg/parca: Add --http-read-timeout and --http-write-timeout options by @quite4work in #3689
- Fix Clear Selection button in table by @monicawoj in #3728
- fix memory leak by @thorfour in #3733
- pkg/query/flamegraph_arrow: Trim using breadth-first-search #3722 by @thorfour in #3730
- ui: Minor UI fixes by @manojVivek in #3735
- ui: Flamegraph - passing width from the parent instead of detecting from within by @manojVivek in #3736
- ui/shared/profile: Pass down arrow response object by @metalmatze in #3738
- pkg/query: Use maps instead of slices for children for O(1) access by @brancz in #3743
- fix(ui): remove unused tableFromIPC import by @maxbrunet in #3746
- ci: yarn cache config tweaks by @manojVivek in #3739
- pkg/query/flamegraph_arrow: Return empty record if no samples by @metalmatze in #3740
- pkg/query/flamegraph_arrow: Remove locationFolded column by @metalmatze in #3752
- Disable P...
v0.18.0
We're happy to release Parca v0.18.0!
This release comes packed with performance improvements, enhancements and so many fixes to the UI and CI!
- Parca will now automatically use the system settings for light or dark themes.
- gRPC Prometheus histograms are now exposed as native histograms giving them a much higher fidelity.
- If running with a custom path prefix, all API endpoints will now be served under this prefix.
Happy profiling!
What's Changed
Enhancements
- ui: Improve dark styling for targets page and Pill component by @metalmatze in #2894
- ui: DateTimePicker adds seconds and uses yyyy-MM-dd HH:mm:ss by @metalmatze in #2920
- ui: Fetch dark mode settings from system settings by @yomete in #3016
- pkg/parcacol: Reduce allocs in sampleKey by @marselester in #3061
- pkg/metastore: Reduce allocs in MakeLocationID by @marselester in #3064
- pkg: Hidden flag to disable address normalization for debugging by @marselester in #2955
- Arrow v12 by @thorfour in #3138
- build(container): add metadata labels by @maxbrunet in #3139
- chore(container): add commit timestamp to image tag by @maxbrunet in #3095
- pkg: Use native histograms for gRPC request/responses by @metalmatze in #3123
- perf(grpc): use optimized code from vtprotobuf by @maxbrunet in #3019
- pkg/metastore: Reduce allocs in kv.go by @marselester in #3136
- pkg/scrape: apply optimizations from upstream prometheus by @maxbrunet in #3176
- debuginfo/store: Use tracer.Start instead of SpanFromContext by @kakkoyun in #3270
- ui: Automatically use system settings for Parca's theme by @yomete in #3276
Bug fixes
- pkg/debuginfo: Set debuginfod user-agent by @brancz in #2924
- pkg/server: serve everything under path prefix when set by @maxbrunet in #3186
- pkg/config: fix reloading config from Kubernetes ConfigMap by @maxbrunet in #3230
- ui: Fix circumstances where there is only a single label by @brancz in #2922
- ui: fix dropdown component by @monicawoj in #2947
- ui: Fix link to release page by @ilpianista in #3024
- ui(ci): ensure yarn lockfile is the source of truth by @maxbrunet in #3038
- ui: Remove useEffect fn responsible for resetting current icicle path by @yomete in #3173
- ui: Trigger profile view update on expression change by @brancz in #3183
- ui: Fixes the flame graph tooltip overflow when multiple visualizations are enabled by @manojVivek in #3198
- ui: list active targets only by @maxbrunet in #3196
- ui: fix profile type dropdown overflow by @monicawoj in #3209
- ui: fix click, drag, and keydown behavior by @monicawoj in #3208
- ui: corrected the key for profile-selector by @themohammadsa in #3210
- ui: modified height of profile-selector by @themohammadsa in #3216
- ui: fix tooltip freeze bug by @monicawoj in #3235
- ui: Fix Callgraph crash by @monicawoj in #3267
- bah humbug; forgot to remove panic by @thorfour in #2938
Docker images
docker pull ghcr.io/parca-dev/parca:v0.18.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
New Contributors
- @ilpianista made their first contribution in #3024
- @susarlanikhilesh made their first contribution in #3107
- @themohammadsa made their first contribution in #3210
Full Changelog: v0.17.0...v0.18.0
v0.17.0
Features
- EXPERIMENTAL arrow ingestion: create the arrow record from the sorted buffer by @thorfour in #2696
- introduce deterministic metrics graph coloring by @monicawoj in #2826
Enhancements
- ui: Flamegraph tooltip perf improvement by @manojVivek in #2692
- ui: Improve showing filtered and trimmed nodes in ProfileIcicleGraph by @metalmatze in #2758
- Show step duration in metrics graph tooltip by @monicawoj in #2785
- Callgraph makeover + fixes by @monicawoj in #2651
- Trim flame graph nodes relative to node's parent by @metalmatze in #2815
- Show absolute and relative percentages in tooltip by @metalmatze in #2766
- Dockerfile: Downloading grpc-health-probe with retries by @manojVivek in #2703
- pkg/parcacol: Support ingesting uncompressed pprof by @brancz in #2751
- Bump frost by @thorfour in #2811
- proto/parca/share: Add total and filtered to QueryResponse by @metalmatze in #2866
- Optimize render flamegraph by @thorfour in #2879
Fixes
- Shareability fixes by @monicawoj in #2677
- Fix archive filename template by @kakkoyun in #2679
- deploy: Update config after flag changes by @kakkoyun in #2683
- fix "Add panel" and visualization type selectors by @monicawoj in #2767
- fix profile selector by @monicawoj in #2812
- ui: Type fix and version synced by @manojVivek in #2853
- pkg/debuginfod: Fix caching and follow redirects of debuginfod servers by @brancz in #2847
Full Changelog: v0.16.0...v0.17.0
Docker images
docker pull ghcr.io/parca-dev/parca:v0.17.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.16.2
Bug fixes
- ui: User preferences icon and release notes viewer bugfix by @manojVivek in #2694
Full Changelog: v0.16.1...v0.16.2
v0.16.1
Bug fixes
- Fix link sharing and updating queries when changing time selection. @monicawoj in #2677
Full Changelog: v0.16.0...v0.16.1
v0.16.0
This release is a major milestone for the Parca project. We have removed the Merge button, as we are now comfortable with the performance of these queries being run by default when querying data. We now felt comfortable after months of work improving the performance of the storage.
Many many more awesome changes, below is a more exhaustive changelog.
Happy profiling!
What's Changed
Enhancements
- Various components: Merges with Step Duration instead of Single Profile requests. @monicawoj and @metalmatze in #2516
- api: Skip returning data to the frontend that will never be possible to be visualized in an Icicle graph. @manojVivek in #2299
- api: Ensure pprof download is compatible with Go PGO. @brancz in #2520
- ui: Add Github Star button and Release Notes Viewer which show the release notes within Parca UI. @manojVivek in #2366
- ui: Persist even more of what is on-screen into the URL for shareability. @monicawoj in #2115
- ui: Visualization Panels drag n drop feature. @monicawoj in #2403
- ui: Binary based colored stack. @manojVivek in #2381
- ui: Icicle graph - Hiding the mappingPrefix when there is only one mapping. @manojVivek in #2564
- ui: Added screen with info when no data is received on the server. @manojVivek in #2567
- ui: Add a tooltip when a MetricsGraph tooltip label is hovered over. @yomete in #2571
- ui: Flamegraph tooltip improvements by @manojVivek in #2600
- storage: Improve performance through schema changes. @asubiotto in #2391
- symbolization: Add priority for symtab search and support plt symbol. @zdyj3170101136 in #2491
- symbolization: Use symbols liner either HasSymtab or HasDynsym. @zdyj3170101136 in #2637
Bug fixes
- ui: Fix displaying targets error and handle scraper-only mode correctly. @brancz in #2325
- ui: Fix false positive Profile has no samples message in visualisations. @yomete in #2511
- ui: Add a button to clear search string after clicking on a table row. @yomete in #2501
- ui: Fixed the unnecessary re-rendering of flamegraph. @manojVivek in #2644
- scrape: Handle HTTP redirects with specific error correctly. @ShubhamPalriwala in #2270
- debuginfo: Fix instantiation of upstream debuginfod servers. @brancz in #2497
- api: Translate empty
""matcher values to NULL. @metalmatze in #2616
New Contributors
- @ShubhamPalriwala made their first contribution in #2270
- @zdyj3170101136 made their first contribution in #2491
- @Franqsanz made their first contribution in #2602
Full Changelog: v0.15.0...v0.16.0
v0.15.0
Breaking changes
This release has a breaking change in the debuginfo upload protocol, which is only compatible with Parca Agent v0.11.0 or higher (more details in #2248).
Changelog
Changes
Enhancements
- ft:
Filter by functionfunctionality added to ProfileView by @manojVivek in #2062 #2156 #2236 - pkg/debuginfo: Always attempt to reupload corrupted files by @brancz in #2101
- pkg/debuginfo: Better errors in uploads by @brancz in #2113
- pkg/scrape: Allow profiles to be treated as already normalized by @brancz in #2124
- ui: UI user preferences by @manojVivek in #2158
- ui: Suggestion list scrolls with active suggestion by @manojVivek in #2164
- ui: Query data caching on the Frontend by @manojVivek in #2173
- ui: Add a reset zoom button for the call graph by @yomete in #2249
- ui: Flamegraph tooltip performance fix by @manojVivek in #2265
- pkg/debuginfo: Allow uploads to be done via signed URLs by @brancz in #2248
- grafana-pugin: Grafana plugin updated to use
flamegraph_tablereport by @manojVivek in #2271 - pkg/debuginfo: Validate size of upload is set by @brancz in #2282
- ui: Using a virtual table component to improve
TopTableperformance andcompareoption added to benchmark runner by @manojVivek in #2225 - parcacol: change stacktrace column to plain encoding by @asubiotto in #2283
- Use scrape interval correctly by @fabxc in #2220
- pkg/symbolizer: Improved caching in symbolization by @brancz in #2311
- ui/packages/app/web: Hide agent or scraper target sections if non-existing by @metalmatze in #2227
- pkg/profilestore: Reduce allocs in writeSeries by @marselester in #2176
- pkg/parcacol: Improve sparse labelset ingestion by @metalmatze in #2201
- pkg/parcacol: Group all profiles of a write request into one buffer by @brancz in #2202
- symbolizer: Log addresses in hexadecimal by @javierhonduco in #2226
- querydiff: perform the profile selections concurrently by @thorfour in #2242
Bug fixes
- fix(deploy): fix local storage by @maxbrunet in #2089
- ui: Fix escaped characters bug by @yomete in #2198
- ui: URL encode label-values in single profile URL params by @brancz in #2199
- fix query bar spacing bug by @monicawoj in #2247
New Contributors
Full Changelog: v0.14.0...v0.15.0
v0.14.0
Highlights
This release features a few small improvements and bug fixes but the three main topics are:
- Massively improved API response size and latency allowing to merge ever more data at low latency.
- Improved autocomplete based on an Earley parser built using nearley.js.
- Various improvements to the callgraph visualization (still behind a feature flag but it's progressing nicely and we hope to release it without a feature flag soon).
Enhancements
- Drastically reduce query response size by deduplicating objects and strings by @metalmatze and @brancz in #1976 #2065 #2064 #2063 #2059 #2057 #2055
- ui: Synchronize clicking on Top table and Icicle graph by @yomete in #1999
- ui: Add label-value autocompletion based on parser by @brancz in #2045
- While still behind a feature flag, there were various improvements to the callgraph visualization by @monicawoj and @manojVivek #1972, #1688, #2049
Bug fixes
- config: Ensure path_prefix comes with default pprof_config by @maxbrunet in #1959
- ui: Date picker timezone fix and minor UX improvement by @manojVivek in #2030
- API: Don't return empty label-values by @brancz in #2035
- symbolization: Fix handling of stripped Go binaries by @brancz in #2066
New Contributors
- @cuishuang made their first contribution in #2031
Full Changelog: v0.13.0...v0.14.0
v0.13.0
Highlights
- Create a Grafana plugin by @manojVivek in #1918
- Publish releases as snap packages by @jnsgruk in #1488
- Callgraph visualization and API by @monicawoj & @manojVivek in #1132 & #1487
- Show agents on Targets page by @heylongdacoder & @metalmatze in #1819 & #1934
- Tons of updates with fixes and improvements to FrostDB
New Contributors
- @jnsgruk made their first contribution in #1431
- @philipgough made their first contribution in #1455
- @boranx made their first contribution in #1611
- @heylongdacoder made their first contribution in #1658
- @TomHellier made their first contribution in #1679
- @stefanvanburen made their first contribution in #1675
- @danielqsj made their first contribution in #1730
What's Changed
- Create an initial ADOPTERS.md by @metalmatze in #1378
- Merge Release 0.12 to main by @kakkoyun in #1387
- ui/packages/shared: Sort ProfileTypes in Select dropdown by @metalmatze in #1401
- pkg/profilestore: Return grpc InvalidArgument if profile is not unzippable by @metalmatze in #1396
- *: Allow using persistence with WAL and object storage by @brancz in #1403
- ui: Resetting the icicle graph selection when a new profile is selected by @manojVivek in #1411
- pkg/query: Add benchmark for profile types queries by @brancz in #1412
- pkg/parcacol: Improve encodings and compression by @brancz in #1414
- grpc/ui: Metadata support for the Share Profile request by @manojVivek in #1416
- area/ui: Use batch to prevent multiple rerenders by @yomete in #1418
- ui: 'd3' related deps cleanup by @manojVivek in #1422
- *: Update frostdb and adapt query interface changes by @brancz in #1428
- ci/ui: Using a separate token for UI package publish by @manojVivek in #1430
- fix: stop error on profile with no location id by @jnsgruk in #1431
- docs: add jnsgruk as a contributor for code by @allcontributors in #1436
- misc: Local dev fixes by @manojVivek in #1438
- *: Add more distributed tracing for querying data by @brancz in #1441
- Improve normalization: dedup samples and locations by @brancz in #1450
- *: Denormalize location lines by @brancz in #1471
- pkg/parcacol: Ensure process labels don't overlap with profile labels by @brancz in #1469
- badger: Retry large txn as multiple txns by @philipgough in #1455
- docs: add PhilipGough as a contributor for code by @allcontributors in #1477
- Profile view refactoring - Separated data fetching and rendering logics. by @manojVivek in #1474
- *: Allow paginating unsymbolized locations by @brancz in #1480
- ci: fix Go arm64 download for new minor releases by @maxbrunet in #1492
- doc: add instructions for snapcraft tokens by @jnsgruk in #1505
- ci: tweak conditional for publishing snap to edge by @jnsgruk in #1506
- ci: Fix snap action trigger by @kakkoyun in #1509
- ci: fix snapcraft upload by @jnsgruk in #1510
- fix: lint all code by @maxbrunet in #1511
- ci: cancel previous in-progress workflows by @maxbrunet in #1514
- docs: add maxbrunet as a contributor for infra by @allcontributors in #1521
- .github: Create CODEOWNERS by @kakkoyun in #1518
- ci: set up pre-commit by @maxbrunet in #1495
- ci: fix eslint plugins by @maxbrunet in #1533
- Shutdown persistence by @thorfour in #1540
- pkg/parcacol: Refactor column store specifics out of API by @brancz in #1554
- pkg/parcacol: Export error fields by @brancz in #1560
- ci: fix CodeQL analysis by @maxbrunet in #1564
- Bump FrostDB by @thorfour in #1563
- fix(ui): run eslint --fix by @maxbrunet in #1542
- pkg/parcacol: Use LZ4 compression by @metalmatze in #1571
- fix(ui): address all problems reported by ESLint by @maxbrunet in #1573
- ui: Fix flickering on Parca UI by @yomete in #1575
- scripts/local-tracings: Update otel-collector config by @metalmatze in #1595
- fix(ui): enforce @typescript-eslint/explicit-function-return-type by @maxbrunet in #1578
- doc: Added doc for the UI Feature flags by @manojVivek in #1608
- ui: Fixed the unnecessary re-render of MetrixGraph when a timestamp is selected by @manojVivek in #1600
- proto/gen: Proto gen files for query functionality in sharing service by @manojVivek in #1612
- pkg/debuginfo: Add more tracing for debuginfo requests by @brancz in #1609
- bug: exit when store-address is set and the mode is not scraper-only by @boranx in #1611
- docs: add boranx as a contributor for code by @allcontributors in #1624
- ui: Refactoring ProfileTypeSelector into a standalone component and Proto files generation by @manojVivek in #1628
- proto/gen: Share profile query proto by @manojVivek in #1643
- ci: fix version parsing for container builds by @jnsgruk in #1638
- Pass tracer into FrostDB and update callback functions by @metalmatze in #1603
- ci: fix pre-commit on main branch by @maxbrunet in #1646
- symbolizer: Add metrics by @marselester in #1640
- pkg/profilestore: reject requests that have duplicate label names by @heylongdacoder in #1658
- Fix eslint errors by @monicawoj in #1613
- pkg/scrape: fix manager reload potential deadlock by @heylongdacoder in #1678
- docs: add heylongdacoder as a contributor for code by @allcontributors in #1681
- pkg/symbol: Prevent redundant ELF file openings by @marselester in #1665
- bump frostdb by @thorfour in #1682
- ui: Refactoring downloadPProf out of
ProfileViewto parent and passed in as props by @manojVivek in #1677 - ui: Exporting
Callgraphas a dynamically imported component using React.Lazy by @manojVivek in #1686 - pkg/symbol: Add docs by @marselester in #1691
- #1656 - add pathprefix to api grpcmux by @TomHellier in #1679
- fix(ui): type all the things (strict mode) by @maxbrunet in #1632
- ui: Flickering loader bugfix by @manojVivek in #1705
- ui: Profile type selector enhancement for flexible well known profile types matching by @manojVivek in #1706
- Run
buf mod updateby @stefanvanburen in #1675 - ci(pre-commit): run on all files when config changes by @maxbrunet in #1683
- ui: Improve querying experience by @yomete in #1645
- Don't use a path prefix when in development mode by @yomete in #1712
- pkg/metastore,pkg/debuginfo bump retries and maxmsgsize by @s-urbaniak in #1724
- fix: set the granule size option in FrostDB by @thorfour in #1726
- fix ingest validatePprofProfile log by @danielqsj in #1730
- bump frostdb for dist...
v0.12.1
Changelog
- 9eca442: Fix cross-platform container builds (@kakkoyun)
- 6a0adf8: Fix health check binary download (@kakkoyun)
- c475f74: Run actions on releases branches (@kakkoyun)
Docker images
docker pull ghcr.io/parca-dev/parca:v0.12.1
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.