Skip to content

1.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Jul 22:17
934d496

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.
  • Eliminated ASM dependency (#424) — hand-rolled class-file parsing replaces ASM for workflow-method hashing (app versioning).
  • 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).