• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vnvo / deltaforge / 23816277104
45%

Build:
DEFAULT BRANCH: main
Ran 31 Mar 2026 07:48PM UTC
Jobs 1
Files 117
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 Mar 2026 07:46PM UTC coverage: 44.264% (+0.9%) from 43.321%
23816277104

push

github

web-flow
Dead letter queue with per-event failure routing (#63)

* feat: dead letter queue — per-event failure routing

DLQ routes poison events (serialization/routing failures) to a durable
queue backed by StorageBackend, allowing the pipeline to continue with
remaining events.

Core changes:
- JournalEntry + DlqMeta types with payload truncation
- DlqWriter on StorageBackend.queue_* with overflow policies
  (drop_oldest, reject, block with async Notify)
- Sink trait: send_batch returns BatchResult with per-event dlq_failures
- All sinks (Kafka, NATS, Redis, Filter) updated to collect per-event
  serialization/routing errors instead of failing the batch
- Coordinator routes BatchResult.dlq_failures to DlqWriter
- SinkError::is_dlq_eligible() for error classification
- JournalConfig + DlqStreamConfig + OverflowPolicy in pipeline config
- Metrics: dlq_events_total, dlq_entries, dlq_evicted/rejected_total,
  dlq_saturation_ratio, dlq_write_failures_total

Tests (12 new):
- DlqWriter: write/peek, ack, purge, drop_oldest, reject, block
- Coordinator: partial failures → DLQ + continue, all-fail, no-writer
- JournalEntry: truncation, DlqMeta roundtrip

* format and clippy fixes

* feat(dlq): REST API endpoints + PipelineManager wiring

REST: GET /pipelines/{name}/journal/dlq (peek with sink_id/error_kind
filters), GET .../count, POST .../ack, DELETE (purge).

PipelineManager creates DlqWriter when journal.enabled=true and passes
it to the coordinator builder. PipelineController trait extended with
dlq_peek/count/ack/purge default methods.

Fix: RwLock guard not held across await (clone Arc<DlqWriter> first).
Fix: bench pipeline_e2e mock sinks updated for BatchResult return type.

* formatting fixes

* docs: dead letter queue documentation

New DLQ page covering configuration, REST API with examples, overflow
policies, payload truncation, metrics, and limitations.

Updated guarantees page (DLQ no longer a limitation), configuration
reference (journal field), SUMMARY,... (continued)

696 of 1130 new or added lines in 29 files covered. (61.59%)

15 existing lines in 14 files now uncovered.

10521 of 23769 relevant lines covered (44.26%)

156.73 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
98.7
crates/deltaforge-core/src/journal.rs
1
52.62
0.6% crates/deltaforge-core/src/lib.rs
1
12.14
0.03% crates/sinks/src/nats.rs
1
8.45
0.02% crates/sinks/src/redis.rs
2
0.0
0.0% crates/chaos/src/main.rs
3
74.77
6.74% crates/runner/src/coordinator.rs
4
0.0
0.0% crates/chaos/src/scenarios/binlog_purge.rs
4
0.0
0.0% crates/chaos/src/scenarios/crash_recovery.rs
4
0.0
0.0% crates/chaos/src/scenarios/exactly_once.rs
4
0.0
0.0% crates/chaos/src/scenarios/failover.rs
4
0.0
0.0% crates/chaos/src/scenarios/network_partition.rs
4
0.0
0.0% crates/chaos/src/scenarios/pg_failover.rs
4
0.0
0.0% crates/chaos/src/scenarios/schema_drift.rs
4
0.0
0.0% crates/chaos/src/scenarios/sink_outage.rs
4
0.0
0.0% crates/chaos/src/scenarios/slot_dropped.rs
4
32.26
32.26% crates/deltaforge-core/src/errors.rs
7
0.0
0.0% crates/chaos/src/harness.rs
7
0.0
0.0% crates/chaos/src/scenarios/backlog_drain.rs
7
49.32
0.16% crates/deltaforge-config/src/lib.rs
19
14.4
-0.44% crates/sinks/src/kafka.rs
19
0.0
0.0% crates/sources/src/mysql/mod.rs
30
92.39
crates/runner/src/dlq.rs
38
0.0
0.0% crates/chaos/src/scenarios/soak.rs
45
0.0
0.0% crates/chaos/src/ui.rs
45
34.69
-3.18% crates/runner/src/pipeline_manager.rs
78
63.91
-19.62% crates/rest-api/src/pipelines.rs
90
0.0
crates/chaos/src/scenarios/dlq_poison.rs

Uncovered Existing Lines

Lines Coverage ∆ File
1
0.0
0.0% crates/chaos/src/scenarios/backlog_drain.rs
1
0.0
0.0% crates/chaos/src/scenarios/binlog_purge.rs
1
0.0
0.0% crates/chaos/src/scenarios/crash_recovery.rs
1
0.0
0.0% crates/chaos/src/scenarios/exactly_once.rs
1
0.0
0.0% crates/chaos/src/scenarios/failover.rs
1
0.0
0.0% crates/chaos/src/scenarios/network_partition.rs
1
0.0
0.0% crates/chaos/src/scenarios/pg_failover.rs
1
0.0
0.0% crates/chaos/src/scenarios/schema_drift.rs
1
0.0
0.0% crates/chaos/src/scenarios/sink_outage.rs
1
0.0
0.0% crates/chaos/src/scenarios/slot_dropped.rs
1
0.0
0.0% crates/chaos/src/scenarios/soak.rs
1
0.0
0.0% crates/chaos/src/ui.rs
1
74.77
6.74% crates/runner/src/coordinator.rs
2
14.4
-0.44% crates/sinks/src/kafka.rs
Jobs
ID Job ID Ran Files Coverage
1 23816277104.1 31 Mar 2026 07:48PM UTC 117
44.26
GitHub Action Run
Source Files on build 23816277104
  • Tree
  • List 117
  • Changed 27
  • Source Changed 26
  • Coverage Changed 27
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #23816277104
  • ba049d2c on github
  • Prev Build on main (#23781695725)
  • Next Build on main (#23824957467)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc