Skip to content

Add multi-endpoint recording support#793

Merged
thinkingfish merged 4 commits intoiopsystems:mainfrom
thinkingfish:feat/multi-endpoint-recorder
Apr 17, 2026
Merged

Add multi-endpoint recording support#793
thinkingfish merged 4 commits intoiopsystems:mainfrom
thinkingfish:feat/multi-endpoint-recorder

Conversation

@thinkingfish
Copy link
Copy Markdown
Member

Summary

  • Support concurrent scraping from N endpoints with mixed protocols (Rezolus msgpack + Prometheus text) in rezolus record
  • Three CLI modes: positional <URL> <OUTPUT> (backward compat), --endpoint url,source=name (repeatable), --config file.toml
  • Protocol auto-detection at startup, late-joiner retry for endpoints not yet available, per-source column metadata provenance (source/endpoint injected into every metric)
  • Combined output (default) merges all sources into one parquet file; --separate writes per-endpoint files
  • Per-source metadata tracks first_sample_ns/last_sample_ns timestamps and optional role

Key files

  • src/recorder/endpoint.rs — Protocol, EndpointConfig, EndpointState types
  • src/recorder/config.rs — TOML config parsing, unified RecordingConfig, CLI arg handling
  • src/recorder/mod.rs — Rewritten run() with concurrent fan-out, probe, provenance injection
  • src/recorder/prometheus.rs — PrometheusConverter provenance support

Test plan

  • cargo test — 103 tests pass
  • cargo fmt — clean
  • Manual: rezolus record <URL> <OUTPUT> backward compat
  • Manual: rezolus record --endpoint url1,source=a --endpoint url2,source=b,protocol=prometheus out.parquet
  • Manual: rezolus record --config recording.toml
  • Manual: --separate mode produces per-endpoint files
  • Manual: late-joiner (start endpoint after recording begins)

🤖 Generated with Claude Code

@thinkingfish thinkingfish force-pushed the feat/multi-endpoint-recorder branch from 80c143c to 5b03439 Compare April 15, 2026 02:13
Comment thread src/recorder/mod.rs Fixed
Comment thread src/recorder/mod.rs Fixed
Comment thread src/recorder/mod.rs Fixed
Comment thread src/recorder/mod.rs Fixed
Comment thread src/recorder/mod.rs Fixed
Comment thread src/recorder/mod.rs Fixed
@thinkingfish thinkingfish force-pushed the feat/multi-endpoint-recorder branch from 5b03439 to dae4ef2 Compare April 15, 2026 02:38
Comment thread src/parquet_tools/combine.rs Fixed
Comment thread src/parquet_tools/combine.rs Fixed
Comment thread src/parquet_tools/combine.rs Fixed
Comment thread src/parquet_tools/combine.rs Fixed
thinkingfish and others added 3 commits April 16, 2026 21:51
Design for extending `rezolus record` to scrape multiple endpoints
concurrently with mixed protocol support (msgpack + Prometheus),
combined/separate output modes, late-joiner handling, and per-source
column metadata provenance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Support concurrent scraping from multiple endpoints with mixed protocols
(Rezolus msgpack and Prometheus text). Adds three CLI modes: positional
URL (backward compat), --endpoint url,source=name (repeatable), and
--config file.toml. Includes protocol auto-detection, late-joiner retry,
per-source column metadata provenance, and combined/separate output modes.

Key changes:
- New endpoint.rs: Protocol, EndpointConfig, EndpointState types
- New config.rs: TOML config parsing, unified RecordingConfig
- Rewritten recorder run() with concurrent fan-out via join_all
- PrometheusConverter gains source/endpoint provenance injection
- inject_provenance() for msgpack snapshots (V1 and V2)
- Separate output mode (--separate) writes per-endpoint parquet files
- Combined output reuses parquet_tools::combine logic
- Per-source metadata: first/last sample timestamps, role

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@thinkingfish thinkingfish force-pushed the feat/multi-endpoint-recorder branch from adaf0f3 to 356b591 Compare April 17, 2026 04:53
Upstream added a bypass_time_check parameter to combine_and_write.
The recorder's combine_files path always validates, so pass false.
Also remove unused std::str::FromStr import.
@thinkingfish thinkingfish marked this pull request as ready for review April 17, 2026 05:11
@thinkingfish thinkingfish merged commit 956eaa5 into iopsystems:main Apr 17, 2026
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants