Skip to content

Releases: affandar/duroxide

v0.1.9

05 Jan 03:56

Choose a tag to compare

v0.1.9 (2026-01-05)

New Features

Management API for Instance Deletion and Pruning

This release introduces comprehensive instance lifecycle management APIs:

Client API

  • delete_instance(id, force) - Delete single instance with cascading
  • delete_instance_bulk(filter) - Bulk delete with filters (IDs, timestamp, limit)
  • prune_executions(id, options) - Prune old executions from long-running instances
  • prune_executions_bulk(filter, options) - Bulk prune across multiple instances
  • get_instance_tree(id) - Inspect instance hierarchy before deletion

Provider API (ProviderAdmin trait)

  • delete_instance(id, force) - Provider-level single deletion
  • delete_instance_bulk(filter) - Provider-level bulk deletion
  • delete_instances_atomic(ids) - Atomic batch deletion for cascading
  • prune_executions(id, options) - Provider-level pruning
  • prune_executions_bulk(filter, options) - Provider-level bulk pruning
  • get_instance_tree(id) - Provider-level tree traversal
  • list_children(id) - List direct child sub-orchestrations
  • get_parent_id(id) - Get parent instance ID

Safety Guarantees

  • Running instances protected (skip or error based on API)
  • Current execution never pruned
  • Sub-orchestrations cannot be deleted directly (must delete root)
  • Atomic cascading deletes (all-or-nothing)
  • Force delete available for stuck instances

Testing

  • 102 new provider validation tests (deletion, bulk deletion, pruning)
  • Integration tests for all Client methods
  • Cascading delete tests (parent→children)
  • Filter combination tests (IDs, timestamps, limits)
  • Safety tests (running protection, current execution protection)

Documentation

  • Provider implementation guide with contracts
  • Provider testing guide updates
  • Continue-as-new docs with pruning section
  • README instance management section
  • Enhanced management-api-deletion proposal with force delete semantics

Other

  • Updated release checklist prompt
  • README latest release link updated

v0.1.1: Long Polling Support

11 Dec 02:01

Choose a tag to compare

What's Changed

This release adds long polling support to the Provider interface and makes continue_as_new() awaitable.

Breaking Changes

  • Provider trait: Added poll_timeout: Duration parameter to fetch_orchestration_item and fetch_work_item
  • RuntimeOptions: Renamed dispatcher_idle_sleep to dispatcher_min_poll_interval, added dispatcher_long_poll_timeout
  • continue_as_new(): Now returns an awaitable future (use: return ctx.continue_as_new(input).await)

New Features

  • Long polling support for providers (Redis, Azure Service Bus, etc.)
  • dispatcher_long_poll_timeout configuration (default: 5 minutes)
  • Long polling validation tests in provider_validations module

Migration Guide

See CHANGELOG.md for detailed migration instructions.

Full Changelog: v0.1.0...v0.1.1