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

drasi-project / drasi-core / 26309368977
71%

Build:
DEFAULT BRANCH: main
Ran 22 May 2026 08:08PM UTC
Jobs 2
Files 548
Run time 2min
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

22 May 2026 08:04PM UTC coverage: 71.211% (+0.01%) from 71.199%
26309368977

push

github

web-flow
feat(reactions): reaction recovery persistence (#401-#404) (#459)

* feat: implement reaction recovery and bootstrap (#397, #398, #399, #400)

Add reaction recovery infrastructure with checkpoint-based state tracking,
outbox gap detection, and configurable recovery policies (Strict, AutoReset,
AutoSkipGap).

Key changes:
- BootstrapContext with trait-based BootstrapBackend for in-process and FFI use
- Snapshot and outbox fetch APIs on Query trait (fetch_snapshot, fetch_outbox)
- QueryOutputState with im::HashMap for O(1) snapshot cloning and ring-buffer outbox
- ReactionCheckpoint persistence via StateStoreProvider
- Startup validation rules (durable store, policy compatibility)
- Bootstrap gate pattern: buffer live events while bootstrap runs
- Per-query recovery: config hash mismatch detection, outbox catchup
- Lifecycle supervisor: monitors forwarder tasks, transitions to Error on exit
- FFI bootstrap bridge: FfiBootstrapContext, vtable bootstrap_fn, host callbacks
- Reaction trait extensions: bootstrap(), needs_snapshot_on_fresh_start(),
  default_recovery_policy(), is_durable()
- End-to-end bootstrap test with snapshot consumption verification

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: address 14 review issues in reaction recovery system

Bootstrap gate & ordering (Critical):
- Replace Notify gate with watch<bool> channel to prevent missed wakeups
- Reorder subscribe_and_bootstrap: wire subscriptions BEFORE bootstrap
  so events buffer in broadcast channel during bootstrap
- Add sequence filtering in forwarders to skip stale events

Forwarder lifecycle (Critical):
- Store AbortHandles for both forwarder and supervisor tasks so
  stop_reaction properly cancels everything
- Supervisor checks current status before transitioning to Error,
  preventing override of intentional stop_reaction

FFI safety (High):
- Fix Arc leak on bootstrap thread panic by reclaiming before error
  propagation
- Parse earliest_available ... (continued)

541 of 779 new or added lines in 13 files covered. (69.45%)

1 existing line in 1 file now uncovered.

78648 of 110444 relevant lines covered (71.21%)

41.71 hits per line

Uncovered Changes

Lines Coverage ∆ File
79
28.18
components/indexes/rocksdb/src/live_results.rs
71
38.79
components/indexes/rocksdb/src/outbox.rs
50
66.1
-1.53% lib/src/queries/manager.rs
16
67.49
-4.42% components/indexes/rocksdb/src/checkpoint.rs
6
0.0
0.0% components/plugin-sdk/src/ffi/snapshot_fetcher_proxy.rs
6
90.73
3.6% lib/src/reactions/manager.rs
3
97.62
core/src/in_memory_index/in_memory_live_results_writer.rs
3
95.95
core/src/in_memory_index/in_memory_outbox_writer.rs
2
94.44
-2.03% core/src/in_memory_index/in_memory_checkpoint_store.rs
2
20.0
20.0% core/src/interface/checkpoint_store.rs

Coverage Regressions

Lines Coverage ∆ File
1
73.11
-0.38% components/sources/http/src/adaptive_batcher.rs
Jobs
ID Job ID Ran Files Coverage
1 core - 26309368977.1 22 May 2026 08:17PM UTC 479
73.66
GitHub Action Run
2 plugins - 26309368977.2 22 May 2026 08:08PM UTC 281
31.24
GitHub Action Run
Source Files on build 26309368977
  • Tree
  • List 548
  • Changed 21
  • Source Changed 12
  • Coverage Changed 21
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26309368977
  • e8c5d72b on github
  • Prev Build on main (#26309050785)
  • Next Build on main (#26310204192)
  • Delete
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