github honeycombio/refinery v3.1.0

7 hours ago

This release introduces concurrent collect loops (workers) for improved parallelism and throughput.
It also includes enhanced multi-deployment support for Redis-based clustering and various stability improvements. Details about the improvements are covered in RELEASE_NOTES.

💡 Enhancements

  • feat: add meta.refinery.final_sample_rate attribute by @TylerHelmuth in #1775
  • feat: set default value for SpanLimit to 32k by @VinozzZ in #1768
  • feat: support multi-deployment using the same redis instance in Pubsub by @VinozzZ in #1761
  • feat: set default number of workers to GOMAXPROCS by @robbkidd in #1719
  • feat: initial concurrent collect loops by @ianwilkes in #1670

🚀 Performance

  • perf: separate trace decision cache per worker by @VinozzZ in #1745
  • perf: use []string for missingFields instead of a map by @VinozzZ in #1750
  • perf: don't make another copy of Event in Span struct by @VinozzZ in #1747
  • perf: do not extract sampling fields for OTLP endpoint by @VinozzZ in #1748
  • perf: remove unecessary locks by @VinozzZ in #1743
  • perf: reduce lock contention for health check system by @VinozzZ in #1727
  • perf: reduce allocation in MemoizeFields for common cases by @VinozzZ in #1726
  • perf: replace runtime.ReadMemStats with runtime/metrics by @VinozzZ in #1724
  • perf: reduce otel metrics lock contention using sync.map by @VinozzZ in #1723
  • perf: reduce MultiMetrics lock contention using sync.map by @VinozzZ in #1712
  • perf: use thread-local metrics counter for processSpan by @VinozzZ in #1675
  • perf: CollectLoop-local samplers, with shared dynsamplers by @ianwilkes in #1673

🐛 Fixes

  • fix: logs for keep/drop sampling outcomes are now emitted at DEBUG instead of INFO level by @robbkidd in #1780
  • fix: track trace send reason metrics by @VinozzZ in #1765
  • fix: skip duplicated keys during memoization by @VinozzZ in #1764
  • fix: validation type for ClusterName by @VinozzZ in #1763
  • fix: missing denominators for stress relief calculation by @VinozzZ in #1762
  • fix: race condition in pubsub_local by @VinozzZ in #1751
  • fix: generate sampling key fields for OTLP by @VinozzZ in #1746
  • fix: more Collect Loop -> Worker renaming by @robbkidd in #1741
  • fix: collect_cache_entries tracks total cache size, new worker_cache_entries for tracking worker cache sizes by @VinozzZ in #1721
  • fix: quick and dirty concurrency safety for samplers by @ianwilkes in #1669

🛠 Maintenance

  • maint(deps): bump the minor-patch group across 1 directory with 27 updates by @dependabot in #1783
  • maint(doc): add warning for has-root-span usage with rules' scope by @VinozzZ in #1781
  • maint: update dynsampler-go to v0.6.4 by @VinozzZ in #1779
  • maint: remove unused internal metrics by @VinozzZ in #1767
  • maint: use runtime/metrics for reporting memory_inuse by @VinozzZ in #1728
  • maint: rename CollectLoop related code to improve readability by @VinozzZ in #1722
  • maint: assert RulesBasedSampler shares the same underlying dysamplers by @VinozzZ in #1718
  • maint: consolidate Peer mocks into one mock implementation by @VinozzZ in #1717
  • docs: update 3.0.0 RELNOTES with parent ID rule breaking change by @robbkidd in #1760
  • docs: add SpanLimit guidance to drop large traces rule example by @robbkidd in #1744
  • ci: latest/major/minor tags in public image registries will only move on stable releases by @robbkidd in #1774
  • ci: update dependencies license compliance check process by @robbkidd in #1755

Full Changelog: v3.0.1...v3.1.0

Don't miss a new refinery release

NewReleases is sending notifications on new releases.