Skip to content

Hatchet v0.98.9

Latest

Choose a tag to compare

@github-actions github-actions released this 29 Jul 12:40
60a9e11

Hatchet v0.98.9 is a feature release. It adds idempotency keys for tasks and workflows, and an embedded engine the Go SDK can run in-process, alongside a new default for concurrency scheduling and a batch of dashboard and hardening fixes.

Highlights

  • Tasks can declare a slot cost, so a task that needs more memory or CPU consumes more than one worker slot. See Task Slot Cost.
  • Engine rows in the run trace view now carry a badge with their workflow, task, or event name, and the retry number on retried tasks, so repeated spans such as hatchet.engine.workflow_run are distinguishable at a glance.
  • CLI commands that take --profile now use the configured default or only profile without prompting, and hatchet server start sets its new profile as the default when none is configured. In sessions without a terminal, such as CI, a selection that would still need a prompt fails with an error that explains how to proceed.
  • Tasks and workflows can declare an idempotency key, so duplicate triggers no longer produce duplicate runs. Keys are held for a TTL or until the claiming run reaches a terminal status, in all four SDKs. Note, that idempotency is currently in beta and may be subject to change. See Idempotency Key Expression for more information.
  • The Go SDK can run a full engine in-process given only a Postgres connection string, via hatchet.WithEmbeddedPostgres(databaseURL).
  • Concurrency strategies are now evaluated against the in-memory index by default rather than querying Postgres on every scheduling pass, where SERVER_CONCURRENCY_IN_MEMORY_INDEX_ENABLED now defaults to true.
  • Best-effort pub/sub is now configured independently of the durable queue and can run on Postgres while durable messages stay on RabbitMQ. Existing deployments need no new configuration, see Task Queue Configuration for full list of options.
  • Rate limits can be managed from the CLI with hatchet rate-limits, and interactively from the TUI.
  • The CLI now reports anonymized usage data on invocation. See Anonymous Telemetry for more information.
  • Added worker label filters, and reverted Monaco editor bundle to once again be fetched from a CDN.
  • Sensitive request data and RabbitMQ credentials are now kept out of logs, and rate limiting is re-enabled on incoming webhook requests.

What's Changed

Added

Changed

  • msgqueue: Split best-effort pub/sub from the durable queue v0.98.9 by @abelanger5 in #4480
  • engine: Clean up a handful of empty raw json blobs we don't need anymore v0.96.1 by @mrkaye97 in #4488
  • Bulk write meter tenant resources v0.95.4 by @grutt in #4468

Fixed

  • Prevent missing limits from overwriting existing limits v0.98.9 by @igor-kupczynski in #4549
  • Cleanup redundant batch cleanup mechanisms, improve ListDistinctBatchResources query v0.98.8 by @juliusgeo in #4542
  • Add index for ListBatchedQueueItemsForStep, add FOR UPDATE OF qi to moveQueueItemsToBatchedQueue v0.98.7 by @juliusgeo in #4519
  • ReserveTaskBatchRun does not need to lock v1_task_runtime v0.98.6 by @juliusgeo in #4516
  • Loadtest--increase number of emit workers to support higher events numbers v0.98.5 by @juliusgeo in #4515
  • Serialize sends on shared listener gRPC streams v0.98.5 by @igor-kupczynski in #4491
  • Indicate env in load test slack messages v0.98.4 by @juliusgeo in #4511
  • Namespace on external not matching expected in load test v0.98.3 by @juliusgeo in #4509
  • Batch migration ordering v0.98.2 by @juliusgeo in #4507
  • Hijack the multiplexed listener's LISTEN connection out of the pool v0.96.1 by @abelanger5 in #4486
  • frontend: Harden exchange-token routing against transient control-plane failures v0.96.1 by @igor-kupczynski in #4472
  • Remove SAML from the enterprise plan card v0.96.0 by @BloggerBust in #4470
  • Fix all old golintci-lint errors, add check for un-generated files, regened all proto/rest files for SDKs v0.96.0 by @juliusgeo in #4457
  • sdks/go: Recover durable waits after reconnect v0.95.4 by @igor-kupczynski in #4448
  • Non tty profile selection v0.95.4 by @BloggerBust in #4453
  • engine: Scheduled workflow idempotency insert conflict v0.95.2 by @mrkaye97 in #4454
  • Usability issues on the backend for managing invites v0.95.2 by @abelanger5 in #4315
  • Trace row labels v0.95.2 by @BloggerBust in #4443
  • Cancel in progress has incorrect ordering with new in-memory index v0.95.1 by @abelanger5 in #4442
  • Event key placeholder / empty state v0.94.14 by @mrkaye97 in #4410
  • dashboard: Add copy to run page on redirect from trigger v0.94.14 by @mrkaye97 in #4423
  • Improve cookie secret validation v0.94.14 by @juliusgeo in #4424
  • Migration number v0.94.14 by @mrkaye97 in #4437
  • dashboard: Bundle Monaco editor instead of fetching from CDN v0.94.14 by @koushik717 in #4247
  • api: Use the AND operator with the gin index when there's only one k-v pair set v0.94.13 by @mrkaye97 in #4436
  • Avoid nested RabbitMQ pub channel acquire on tenant register v0.94.13 by @grutt in #4433
  • Query optimization v0.94.13 by @grutt in #4138
  • Update trigger for runs status and update schema for consistency v0.94.12 by @abelanger5 in #4426
  • Force gin for olap lists v0.94.11 by @grutt in #4403
  • Avoid logging sensitive request data v0.94.11 by @igor-kupczynski in #4422
  • Redact RabbitMQ credentials in dial failure logs v0.94.11 by @igor-kupczynski in #4418
  • api: Re-enable rate limiting for incoming webhook requests v0.94.11 by @mrkaye97 in #4411

New Contributors


🪓 New to Hatchet? See Get started quickly or the full documentation.