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
This commit was created on GitHub.com and signed with GitHub’s verified signature.
New features
Workflow Attributes (#440) — arbitrary JSON-serializable Map<String,Object> attached to workflows at creation (withAttributes on WorkflowOptions / StartWorkflowOptions/enqueue options), updatable later via DBOS.updateWorkflowAttributes / DBOSClient.updateWorkflowAttributes, and filterable in listWorkflows via Postgres containment (@>) + GIN index.
Auth Context (#431) — authenticatedUser / assumedRole / authenticatedRoles now propagate automatically through child workflows, queues, and recovery; new DBOS.authenticatedUser()-style accessors and withAuthentication(...) builders on workflow/enqueue options.
Step shouldRetry support (#427) — steps can short-circuit retries on specific exceptions via an annotation class (@Step(shouldRetry = ...)) or a programmatic Predicate<Throwable> on StepOptions.
Tx step isolation + auto-retry (#426) — per-transactional-step isolation level configuration, plus automatic retry on serialization failures (40001) and deadlocks (40P01).
forkFromFailure (#425) — re-run a failed workflow from a specific step, reusing prior step outputs; shares a new bulkForkWorkflows helper with forkWorkflow. Minor breaking change: ForkOptions.timeout is now @Nullable Duration instead of Timeout.
Cancel children (#423) — cancelWorkflows and the conductor cancel message gained a cancelChildren option.
Listen/Notify for streams (#428) — StreamIterator now wakes on Postgres LISTEN/NOTIFY instead of polling every second (1s poll kept as fallback, e.g. for CRDB).
Conductor for cloud (#436) — support for DBOS__CONDUCTOR_APP_NAME/_KEY/_URL, a new /conductor admin endpoint, and parity fixes between admin-server and conductor /workflows//queues output types; admin server runs on port 3001 in DBOS Cloud.
DBOS_APP_NAME (#429) — in cloud mode, app name is read from DBOS_APP_NAME env var rather than DBOSConfig.
listWorkflows filters (#448) — added completedAfter/Before and dequeuedAfter/Before, wired through conductor and admin server; fixed conductor not returning errors on unknown request types.
Aggregates/metrics (#420, later partially reverted in #437) — get_workflow_aggregates update + new get_step_aggregates conductor endpoint; completedAt plumbed through.
Behavior/semantics fixes
Cancellation semantics realignment (#430) — cancellation checks added to recv/getEvent; aligned with TS/Python (WorkflowCancelled inside the workflow vs. AwaitedWorkflowCancelled for external callers); simplified SignalMap.
Queue flow-control overhaul (#418) — REPEATABLE READ isolation now used only when global flow control (concurrency/rate limit) is active; fixed rate-limit query missing its partial index; worker concurrency now checked in-memory instead of via DB round-trip; dequeue UPDATE guards on status = 'ENQUEUED'; consistent ORDER BY priority, created_at; extensive new queue test coverage.
Concurrent applySchedules race fix (#450) — replaced delete+insert with INSERT ... ON CONFLICT DO UPDATE so schedule identity no longer churns and concurrent applies can't collide; scheduler poller updated to detect definition changes via snapshot comparison instead of ID changes.
Interop fix (#435) — empty authenticatedUser/assumedRole strings normalized to null to match TS/Go behavior; plus naming/typing cleanup (*Ms suffixes dropped, stronger enum typing in aggregates/status APIs, WorkflowStatus.equals/hashCode fixed).
ExternalState.updateTime (#410, breaking, limited scope) — changed from BigDecimal to Instant, stored as fractional-ms NUMERIC(38,15).
getHostName crash fix (#441) — falls back to HOSTNAME env var, then "<unknown>", since it throws in DBOS Cloud.
Dependencies / build / infra
Jackson 3.1.x upgrade (#411) — removes jsr310 module (built-in now), drops JsonRuntimeException since parsing no longer throws checked exceptions.
Shared build logic (#442) — root build.gradle.kts shrunk from ~265 to ~40 lines via new build-logic convention plugins; dependency version bumps.
AOT CLI (#445) — CLI trimmed to just migrate/reset; adds native-image build support and CI to produce linux/macos/windows CLI binaries attached to releases.
Chaos tests (#433) — smarter dbRetry (retries on more connection/transient errors, unified 1s–60s backoff, no 20-retry cap), new Toxiproxy-based chaos test suite (CI-only).
Removed GraalVM/Microsoft required CI checks (#453); migrations updated to migration39 (#419).