Skip to content

chore: merge main into release#30

Merged
catinspace-au merged 8 commits into
releasefrom
chore/merge-to-release
Mar 26, 2026
Merged

chore: merge main into release#30
catinspace-au merged 8 commits into
releasefrom
chore/merge-to-release

Conversation

@catinspace-au
Copy link
Copy Markdown
Collaborator

Automated Release Merge

Merging main into release (7 commits).

Commits

d6cdd2c chore: save session state [skip ci]
9376329 fix: OTel trace propagation, /readyz health wiring, description update
0e18ca9 chore: version 1.17.0-dev.16 [skip ci]
21efaa2 fix: add health registry, shutdown manager, and wire all modules
67ca272 chore: version 1.17.0-dev.15 [skip ci]
36c383d feat!: split Transport trait and add 4 new transports + factory
aa2afbc chore: save session state [skip ci]

catinspace-au and others added 8 commits March 26, 2026 14:53
BREAKING CHANGE: Transport trait split into TransportBase (close,
is_healthy, name), TransportSender (send), and TransportReceiver
(recv, commit, Token). Blanket Transport impl for types with both.

New transport backends:
- File: NDJSON with position tracking and commit persistence
- Pipe: stdin/stdout for Unix pipeline composition
- HTTP: POST to endpoint (send) + embedded axum server (receive)
- Redis/Valkey Streams: XADD/XREADGROUP/XACK with consumer groups

Transport factory:
- AnySender: enum dispatch for runtime transport selection
- AnySender::from_config(): create sender from config cascade
- RoutedSender: per-key dispatch for data originators (receiver/fetcher)

All transports auto-emit dfe_transport_* Prometheus metrics.
648 tests pass.
# [1.17.0-dev.15](v1.17.0-dev.14...v1.17.0-dev.15) (2026-03-26)

* feat!: split Transport trait and add 4 new transports + factory ([36c383d](36c383d))

### BREAKING CHANGES

* Transport trait split into TransportBase (close,
is_healthy, name), TransportSender (send), and TransportReceiver
(recv, commit, Token). Blanket Transport impl for types with both.

New transport backends:
- File: NDJSON with position tracking and commit persistence
- Pipe: stdin/stdout for Unix pipeline composition
- HTTP: POST to endpoint (send) + embedded axum server (receive)
- Redis/Valkey Streams: XADD/XREADGROUP/XACK with consumer groups

Transport factory:
- AnySender: enum dispatch for runtime transport selection
- AnySender::from_config(): create sender from config cascade
- RoutedSender: per-key dispatch for data originators (receiver/fetcher)

All transports auto-emit dfe_transport_* Prometheus metrics.
648 tests pass.
HealthRegistry: global singleton with HealthStatus (Healthy/Degraded/
Unhealthy). Modules register health check closures at construction.
is_healthy(), is_ready(), to_json() for aggregated status.

Shutdown: global CancellationToken via OnceLock. install_signal_handler()
listens for SIGTERM/SIGINT. Modules listen on token.cancelled().

Wiring:
- KafkaTransport, GrpcTransport: register with health, Arc<AtomicBool>
- CircuitBreaker: register with health, maps Open->Unhealthy
- HttpServer: register with health, use global shutdown token
- TieredSink drainer: listen on global shutdown token
- ConfigReloader: listen on global shutdown token

Logging + config cascade added to all new transports (file, pipe, HTTP,
Redis). 663 tests pass.
# [1.17.0-dev.16](v1.17.0-dev.15...v1.17.0-dev.16) (2026-03-26)

### Bug Fixes

* add health registry, shutdown manager, and wire all modules ([21efaa2](21efaa2))
OTel trace context (W3C traceparent) auto-propagated through gRPC
(PushRequest metadata), Kafka (message headers), and HTTP (request
headers). All gated behind #[cfg(feature = "otel")] — zero overhead
when disabled. Shared propagation helpers in transport/propagation.rs.

/readyz endpoint now aggregates from HealthRegistry when health feature
is enabled. /health/detailed returns per-component JSON status.
MetricsManager readiness also checks HealthRegistry.

Fix test ordering issue with HealthRegistry global state.
Update crate description. 671 tests pass.
# Conflicts:
#	CHANGELOG.md
#	Cargo.toml
#	VERSION
@catinspace-au catinspace-au merged commit d28f048 into release Mar 26, 2026
2 checks passed
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 1.20.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants