Releases: quiknode-labs/shredstream-proxy
Releases · quiknode-labs/shredstream-proxy
Release list
v0.3.0+qn
0.3.0+qn (2026-06-12)
Features
- measure first-seen vs duplicate-arrival lag per source pair (dup_lag) (eda6120)
- measure first-seen vs duplicate-arrival lag per source pair (dup_lag) (27ddabf)
Bug Fixes
- harden dup_lag rotation against idle gaps and concurrent first-seen (47a51b2)
- make dup_lag shard flip exclusive against observers (d9e75a6)
- rotate dup_lag shards on every arrival, not only sampled ones (e7f3945)
This PR was generated with Release Please. See documentation.
v0.2.14+qn
0.2.14+qn (2026-05-29)
Bug Fixes
- scope heartbeat loop / grpc client to the shredstream client loop (#36) (efbf5ce)
- switch release-please to simple type (workspace inheritance) (ac8d276)
- switch release-please to simple type to support workspace inheritance (472da2e)
Continuous Integration
- add release-please versioning pipeline (cdc3309)
This PR was generated with Release Please. See documentation.
v0.2.14-rc
Add listen_port and device tags to receiver_stats metric The `shredstream_proxy-receiver_stats` metric currently keys solely on source IP. When the proxy listens on UDP :20000 for Jito BE / mesh unicast AND on UDP :7733 for DZ multicast via `doublezero1`, packets from a source IP that arrives on both paths collapse into a single metric row, making it impossible to measure DZ multicast's contribution separately. This change adds two InfluxDB tags to each receiver_stats row: - `listen_port` — the local UDP port the packet arrived on (e.g. `20000` for unicast, `7733` for multicast) - `device` — `"unicast"` for non-multicast sockets, or the configured `--multicast-device` (e.g. `doublezero1`) for the multicast socket `(listen_port, device)` is constant per send_thread (one socket per thread), so we capture `listen_port` from `socket.local_addr()` at thread setup and derive the `device` tag from port + ShredMetrics fields at report time. Device is not stored in the DashMap key to avoid per-packet Arc cloning. A startup `info!` log per socket prints the (listen_port, device) mapping so operators can confirm the labels before querying InfluxDB. Backward-compatible: queries that aggregate only by `addr` continue to work. Cardinality increase is trivial (~2x ports × ~2 device values). Also fixes a pre-existing macOS-only flake in `test_2shreds_3destinations` by using `127.0.0.1` instead of `0.0.0.0` for the test listeners (UDP send-to-`0.0.0.0` doesn't loopback to a `0.0.0.0`-bound listener on macOS, only on Linux). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>