duroxide-pg

Crates.ioduroxide-pg
lib.rsduroxide-pg
version0.1.16
created_at2025-11-30 07:52:50.018981+00
updated_at2026-01-25 19:21:18.821444+00
descriptionA PostgreSQL-based provider implementation for Duroxide, a durable task orchestration framework
homepage
repositoryhttps://github.com/affandar/duroxide-pg
max_upload_size
id1957993
size328,953
Affan Dar (affandar)

documentation

README

Duroxide PostgreSQL Provider

A PostgreSQL-based provider implementation for Duroxide, a durable task orchestration framework for Rust.

Note: See CHANGELOG.md for version history and breaking changes.

Installation

Add to your Cargo.toml:

[dependencies]
duroxide-pg = "0.1"

Usage

use duroxide_pg::PostgresProvider;
use duroxide::Worker;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create a provider with the database URL
    let provider = PostgresProvider::new("postgres://user:password@localhost:5432/mydb").await?;

    // Use with a Duroxide worker
    let worker = Worker::new(provider);
    // ... register orchestrations and activities, then run
    
    Ok(())
}

Custom Schema

To isolate data in a specific PostgreSQL schema:

let provider = PostgresProvider::new_with_schema(
    "postgres://user:password@localhost:5432/mydb",
    Some("my_schema"),
).await?;

Configuration

Environment Variable Description Default
DUROXIDE_PG_POOL_MAX Maximum connection pool size 10

Features

  • Automatic schema migration on startup
  • Connection pooling via sqlx
  • Custom schema support for multi-tenant isolation
  • Full implementation of the Duroxide Provider and ProviderAdmin traits
  • Poison message detection with attempt count tracking
  • Lock renewal for long-running orchestrations and activities

Latest Release (0.1.16)

  • REGRESSION FIX: prune_executions_bulk now correctly prunes running instances with old executions
  • Fixed cleanup_schema() to drop all stored procedures (required for public schema cleanup)
  • 135 provider validation tests passing
  • See CHANGELOG.md for full version history

License

MIT License - see LICENSE for details.

Commit count: 73

cargo fmt