Skip to content

Update Python bindings to drasi-lib 0.9.3 - #3

Merged
danielgerlag merged 1 commit into
mainfrom
danielgerlag-update-drasi-bindings
Oct 1, 2026
Merged

danielgerlag merged 1 commit into
mainfrom
danielgerlag-update-drasi-bindings

Conversation

@danielgerlag

Copy link
Copy Markdown
Contributor

The Python host was pinned to drasi-lib 0.8.9. Published plugins are version-matched on major.minor, so the bindings need the latest compatible published set to load current plugins.

This takes the 0.9.3-compatible crate set and adapts the host to two behavior changes in that release:

  • Pins are exact: drasi-lib 0.9.3, drasi-core 0.5.10, host-sdk and plugin-sdk 0.11.3, redb 0.2.8, rocksdb index 0.6.4. Host version constants, docs, and the local plugin builder match those pins.
  • A durable reaction now needs a RocksDB index store as well as a redb state store. Registration without one raises DURABLE_REQUIRES_INDEX_STORE.
  • Reactions registered before start() are held and started after deferred queries. drasi-lib 0.9 will not subscribe to a stopped query.
  • auto_reset is accepted by reporting snapshot capability only for that policy. Bootstrap is still a no-op, so the current result set is not replayed to the callback.
  • The RocksDB CI job runs the hermetic suite so durable tests actually execute. They skip on the default build, which does not enable RocksDB.

Reaction::bootstrap does not replay the current result set for auto_reset. It only satisfies the engine flag. A real snapshot replay would be a follow-up.

Pins must match published plugins on major.minor, so this takes the
0.9.3-compatible crate set rather than a free bump. Durable reactions
now require a persistent index store, and reactions registered before
start() wait until deferred queries are running.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 1, 2026 20:52

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Reactions added while running can fail after restart when they depend on binding-managed deferred queries.

Review effort: Balanced
Findings: 1 High severity

Open (1)
What changed in this PR

Updates Python bindings for drasi-lib 0.9.3 and adapts durable-reaction lifecycle and storage behavior.

Changes:

  • Updates Drasi crate, SDK, plugin, and store versions.
  • Adds persistent-index validation and deferred reaction startup.
  • Updates tests, CI, examples, and documentation.
File Description
Cargo.toml Pins compatible crate versions.
Cargo.lock Locks updated dependency graph.
src/​lib.rs Updates reported host versions.
src/​stores.rs Detects configured persistent indexes.
src/​errors.rs Adds the missing-index error code.
src/​engine.rs Validates durability and defers reactions.
src/​components.rs Propagates recovery and bootstrap behavior.
tests/​unit/​test_registry_pins.py Updates expected pins.
tests/​e2e/​test_lifecycle.py Generalizes lifecycle documentation.
tests/​e2e/​test_durable_and_config.py Tests persistent-index requirements.
tests/​e2e/​test_concurrency.py Enables durable concurrency testing with RocksDB.
.github/​workflows/​ci.yml Runs hermetic tests with RocksDB.
scripts/​build_plugins.py Updates local plugin versions.
README.md Documents durable store configuration.
examples/​README.md Updates example versions and output.
docs/​plugins.md Updates plugin examples and host metadata.
website/​content/​docs/​guides/​python-reactions.md Documents durable recovery semantics.
website/​content/​docs/​guides/​plugins.md Updates plugin compatibility details.
website/​content/​docs/​guides/​error-handling.md Documents the new error code.
website/​content/​docs/​concepts/​_index.md Explains durable index requirements.
CHANGELOG.md Records compatibility and behavior changes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/engine.rs
Comment on lines +204 to +205
async fn hold_reaction_until_queries(&self, auto_start: bool) -> bool {
auto_start && !self.core.is_running().await
@danielgerlag
danielgerlag marked this pull request as ready for review October 1, 2026 21:06
@danielgerlag
danielgerlag merged commit bc35ff9 into main Oct 1, 2026
25 of 26 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