You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Each step result is checkpointed in Postgres. If the task retries, completed steps are loaded from the checkpoint table and are not re-executed.
168
+
`step`, `sleep_for`/`sleep_until`, and `await_event`/`await_event_with_options` checkpoint their state in Postgres. If a task retries or resumes, completed checkpoints are loaded and not re-executed.
169
+
170
+
Keep checkpoint names and control flow deterministic. Repeated names in one execution are suffixed automatically (`name`, `name#2`, `name#3`, ...).
Retry, cancellation, idempotency, event wakeups, leases, and cleanup remain database-owned.
104
228
105
-
## Current status
229
+
## Configuration
106
230
107
-
Experimental community SDK. The core typed API, worker, step/sleep/event helpers, cancellation mapping, idempotent spawn support, cleanup, and unknown-task deferral are implemented.
231
+
`Client::from_env()` and `Client::from_env_queue()` resolve the database connection in this order:
108
232
109
-
Next hardening targets:
233
+
1.`ABSURD_DATABASE_URL`
234
+
2.`DATABASE_URL`
235
+
3.`PGDATABASE`
236
+
4.`postgresql://localhost/absurd`
110
237
111
-
- Integration tests ported from the Python and Go SDKs.
112
-
- Task-result polling APIs when targeting Absurd SQL versions that expose `get_task_result`.
113
-
- Optional spawn/execution middleware for tracing/header propagation.
114
-
- Broader TLS/pool configuration.
115
-
116
-
Environment resolution uses `ABSURD_DATABASE_URL`, then `DATABASE_URL`, then `PGDATABASE`, then `postgresql://localhost/absurd`.
238
+
A `PGDATABASE` value that is not a URL or keyword connection string is treated as a database name (`dbname=...`). Built-in URL constructors currently use `NoTls`; use `Client::from_pool` to provide a custom `deadpool_postgres::Pool`.
Database integration tests are ignored by default because they require a Postgres database initialized with Absurd SQL:
252
+
253
+
```sh
254
+
ABSURD_DATABASE_URL=postgresql://localhost/absurd_test cargo test --test integration -- --ignored
255
+
```
256
+
131
257
`Cargo.lock` is intentionally not committed because this is a library crate; CI resolves the current compatible dependency graph and Dependabot tracks manifest/action updates.
0 commit comments