544 Commits

Author SHA1 Message Date
Gabe Ruttner 2fdc47a6af feat: multiple slot types (#2927)
* feat: adds support for multiple slot types, primarily motivated by durable slots

---------

Co-authored-by: mrkaye97 <mrkaye97@gmail.com>
2026-02-17 05:43:47 -08:00
Gabe Ruttner 7875d78057 Feat: Official Ruby SDK (#3004)
* feat: initial ruby sdk

* fix: run listener

* fix: scope

* feat: rest feature clients

* fix: bugs

* fix: concurrent register

* fix: tests and ergonomics

* docs: all of them

* chore: lint

* feat: add RBS

* feat: add GitHub Actions workflow for Ruby SDK with linting, testing, and publishing steps

* chore: lint

* refactor: simplify load path setup for Hatchet REST client and remove symlink creation

* fix: cert path

* fix: test

* fix: blocking

* fix: ensure Hatchet client is only initialized once across examples

* fix: tests

* remove: unused example

* fix: bubble up errors

* test: skip flaky for now

* remove: lifespans

* fix: durable context bugs

* fix: bulk replay

* fix: tests

* cleanup: generate tooling

* fix: integration test

* chore: lint

* release: 0.1.0

* chore: remove python comments

* refactor: remove OpenTelemetry configuration and related unused options

* fix: default no healthcheck

* chore: lockfile

* feat: register as ruby

* chore: lint

* chore: update py/ts apis to include ruby

* chore: docs pass

* chore: lint

* chore: generate

* chore: cleanup

* chore: generate examples

* tests: add e2e tests

* tests: cache examples dependencies

* fix: namespace

* fix: namespace

* fix: namespaces

* chore:lint

* fix: improve cancellation workflow polling logic and add error handling

* revert: py/ts versions
2026-02-15 14:32:15 -08:00
matt ac98a33992 Fix: Remove null bytes from error message to prevent db crash (#3010)
* fix: replace null byte in error message

* fix: rm space
2026-02-12 18:07:28 -05:00
abelanger5 851fbaf214 feat: reduced cold starts for new workers and queues (#2969)
* feat: reduced cold starts for new workers and queues

* address changes from pr review

* fix: data race

* set logs to debug on the harness

* debug for queue level as well

* debug lines for queuer

* fix: add queue notifier to v0 workflow registration

* revert: lease manager interval

* revert log level changes

* add more debug, revert reverts

* more debug

* add debug to lease manager

* do it, try it

* fix: call upsertQueue as part of workflow version put

* change log level to error again

* pr review changes
2026-02-11 13:12:10 -08:00
Greg Furman 80dc9786fd chore: run go-fmt (#2984) 2026-02-10 17:34:36 -05:00
Mohammed Nafees 5db655e9aa Do not replay invalid tasks (#2976)
* filter valid tasks when replaying

* renamings

* query optim

* slice len

* fix method signature

* PR comments

* rename var

* PR comments
2026-02-10 13:08:38 -05:00
Gabe Ruttner 4054d170d8 chore: proto naming conventions (#2913)
* fix: add type override in sqlc.yaml

* chore: gen sqlc

* chore: big find and replace

* chore: more

* fix: clean up bunch of outdated `.Valid` refs

* refactor: remove `sqlchelpers.uuidFromStr()` in favor of `uuid.MustParse()`

* refactor: remove uuidToStr

* fix: lint

* fix: use pointers for null uuids

* chore: clean up more null pointers

* chore: clean up a bunch more

* fix: couple more

* fix: some types on the api

* fix: incorrectly non-null param

* fix: more nullable params

* fix: more refs

* refactor: start replacing tenant id strings with uuids

* refactor: more tenant id uuid casting

* refactor: fix a bunch more

* refactor: more

* refactor: more

* refactor: is that all of them?!

* fix: panic

* fix: rm scans

* fix: unwind some broken things

* chore: tests

* fix: rebase issues

* fix: more tests

* fix: nil checks

* Refactor: Make all UUIDs into `uuid.UUID` (#2897)

* refactor: remove a bunch more string uuids

* refactor: pointers and lists

* refactor: fix all the refs

* refactor: fix a few more

* fix: config loader

* fix: revert some changes

* fix: tests

* fix: test

* chore: proto

* fix: durable listener

* fix: some more string types

* fix: python health worker sleep

* fix: remove a bunch of `MustParse`s from the various gRPC servers

* fix: rm more uuid.MustParse calls

* fix: rm mustparse from api

* fix: test

* fix: merge issues

* fix: handle a bunch more uses of `MustParse` everywhere

* fix: nil id for worker label

* fix: more casting in the oss

* fix: more id parsing

* fix: stringify jwt opt

* fix: couple more bugs in untyped calls

* fix: more types

* fix: broken test

* refactor: implement `GetKeyUuid`

* cleanup

* gen

* missed name

* slot naming consistency

* snake_case

* lint

* regenerate python

* typescript sdk

* deprecated getters

* lint

* fix tests

* version bumps

* chore: regen sqlc

* chore: replace pgtype.UUID again

* fix: bunch more type errors

* no compat

* fix: remove isort

* note

* Update sdks/python/CHANGELOG.md

Co-authored-by: matt <mrkaye97@gmail.com>

* feedback

* fix: no isort in ci

* tui

* ts lint

* lint

* weird undefined

* fix test

* last changes

* lint

* fix: ts child spawning

* consistent naming

* map fields

---------

Co-authored-by: mrkaye97 <mrkaye97@gmail.com>
2026-02-05 10:35:13 -08:00
matt 9781e06c55 Fix: Check uuid.Nil when creating or groups too (#2958)
* fix: also check uuid.Nil 🤦

* fix: weird diff
2026-02-05 12:05:00 -05:00
matt 91c280295e Fix: Always generate UUID for OrGroup (#2955)
* fix: null uuid for or group

* fix: engine side

* fix: two more
2026-02-05 10:50:03 -05:00
matt 961682d704 Hotfix: More panics (#2945)
* fix: check if dispatcher id is nil

* explicit nil check

* proposal: extra return out of `GetDispatcherIdsForWorkers`
2026-02-04 19:08:17 -05:00
matt a782d9fd01 Hotfix: UUID Panics (#2944)
* fix: panic

* fix: more panic risks

* fix: two more possible panics
2026-02-04 15:11:08 -05:00
matt a52a2b4b90 Fix: Resource ID type (#2929)
* fix: resource id

* fix: userId

* fix: make resourceId string

* chore: minor cleanup

* chore: naming

* fix: user id type casts

* fix: debug message

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-04 10:09:33 -05:00
abelanger5 2ddcbd2672 refactor: use typed maps (#2928)
* refactor: use typed maps

* self-review comments
2026-02-03 19:35:09 -05:00
abelanger5 53097b054a fix: startup for optimistic scheduler (#2924) 2026-02-03 14:30:49 -05:00
matt 058968c06b Refactor: Attempt II at removing pgtype.UUID everywhere + convert string UUIDs into uuid.UUID (#2894)
* fix: add type override in sqlc.yaml

* chore: gen sqlc

* chore: big find and replace

* chore: more

* fix: clean up bunch of outdated `.Valid` refs

* refactor: remove `sqlchelpers.uuidFromStr()` in favor of `uuid.MustParse()`

* refactor: remove uuidToStr

* fix: lint

* fix: use pointers for null uuids

* chore: clean up more null pointers

* chore: clean up a bunch more

* fix: couple more

* fix: some types on the api

* fix: incorrectly non-null param

* fix: more nullable params

* fix: more refs

* refactor: start replacing tenant id strings with uuids

* refactor: more tenant id uuid casting

* refactor: fix a bunch more

* refactor: more

* refactor: more

* refactor: is that all of them?!

* fix: panic

* fix: rm scans

* fix: unwind some broken things

* chore: tests

* fix: rebase issues

* fix: more tests

* fix: nil checks

* Refactor: Make all UUIDs into `uuid.UUID` (#2897)

* refactor: remove a bunch more string uuids

* refactor: pointers and lists

* refactor: fix all the refs

* refactor: fix a few more

* fix: config loader

* fix: revert some changes

* fix: tests

* fix: test

* chore: proto

* fix: durable listener

* fix: some more string types

* fix: python health worker sleep

* fix: remove a bunch of `MustParse`s from the various gRPC servers

* fix: rm more uuid.MustParse calls

* fix: rm mustparse from api

* fix: test

* fix: merge issues

* fix: handle a bunch more uses of `MustParse` everywhere

* fix: nil id for worker label

* fix: more casting in the oss

* fix: more id parsing

* fix: stringify jwt opt

* fix: couple more bugs in untyped calls

* fix: more types

* fix: broken test

* refactor: implement `GetKeyUuid`

* chore: regen sqlc

* chore: replace pgtype.UUID again

* fix: bunch more type errors

* fix: panic
2026-02-03 11:02:59 -05:00
abelanger5 d56dee4266 feat: durable user event log (#2861)
* placeholder

* feat: db tables for user events (#2862)

* feat: db tables for user events

* move event payloads to payloads table, fix env var loading

* fix: address pr review comments

* missed save

* feat: optimistic scheduling (#2867)

* feat: db tables for user events

* move event payloads to payloads table, fix env var loading

* refactor: small changes to prepare optimistic txs

* feat: optimistic scheduling

* address pr review comments

* rm comments

* fix: rampup test race condition

* fix: goleak

* feat: grpc-side triggers

* fix: config and sem logic

* fix: respect optimistic scheduling env var

* add optimistic to testing matrix, remove pg-only mode

* fix cleanup of pubbuffers

* merge migrations

* last testing fixes
2026-02-02 18:04:02 -05:00
Gabe Ruttner 8186db18a4 fix: only fetch finalized workflow runs (#2896)
* only fetch finalized

* further optimization

* configurable buffer
2026-01-31 16:32:47 -05:00
abelanger5 04953129a4 fix: compute payload size correctly for pg_notify (#2873) 2026-01-31 16:31:49 -05:00
matt a3fe89ef03 Feat: Workflow input JSON schema in trigger preview (#2851)
* feat: add input json schema to workflow version

* feat: add json schema to putworkflow proto

* feat: wire up writes of the json schema

* chore: gen python

* feat: send json schema from the python code

* feat: wiring

* feat: pass json schema into code editor

* feat: pass prop

* fix: clean up validation stuff

* feat: allow zod `input` as optional ts field

* fix: try except logic hack

* fix: rename input -> inputValidator for consistency

* chore: gen api

* fix: improve hack slightly

* chore: changelogs, versions

* feat: zod example

* chore: rework api a bit

* fix: tsc, allow schema to update

* fix: improve loading state

* fix: api cleanup, sqlc cleanup

* fix: initial mount

* chore: lint

* chore: lint

* chore: tsc

* fix: lint

* fix: unwind unneeded change

* [Python] Feat: Default additional metadata (#2876)

* Add doc about autoscaling workers (#2864)

* add doc for autoscaling workers

* oldest also in running stats

* chore(deps): bump google.golang.org/api from 0.262.0 to 0.263.0 (#2869)

Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.262.0 to 0.263.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.262.0...v0.263.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.263.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump github.com/getsentry/sentry-go from 0.41.0 to 0.42.0 (#2870)

Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.41.0 to 0.42.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: github.com/getsentry/sentry-go
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump hatchet-sdk in /examples/python/quickstart (#2871)

Bumps hatchet-sdk from 1.22.10 to 1.22.11.

---
updated-dependencies:
- dependency-name: hatchet-sdk
  dependency-version: 1.22.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: default additional meta

* feat: wiring

* chore: changelog, version

* fix: copy

* feat: add default meta to stubs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mohammed Nafees <hello@mnafees.me>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: migration ver

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Mohammed Nafees <hello@mnafees.me>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-29 11:38:25 -05:00
Gabe Ruttner a8afa07dcf fix: validate json at edges and dont retry on invalid (#2882)
* drop and validate at edges

* rm submod

* use enum

* lint
2026-01-29 08:04:55 -08:00
matt 3c416ee949 Feat: OTel Collector (#2863)
* feat: initial otel collector work

* chore: vendor otel protos

* feat: add rate limiter for otelcol

* fix: clean up naming

* feat: shell implementation

* feat: add buf + generate protos

* fix: naming

* fix: naming

* chore: simplify a bit

* fix: rename logger

* fix: naming cleanup

* fix: rm unused var

* fix: rm unused struct

* chore: rm vendored stuff, don't need it apparently
2026-01-28 14:10:15 -05:00
abelanger5 a6e88074de refactor: have log line lookups use external id (#2822)
* fix: modify log line query to use external id

* pass in task external id
2026-01-20 11:17:06 -05:00
Mohammed Nafees 6eba6fa91f Billing changes (#2643)
* make changes for billing

* progress around redesign

* meter callback

* modify limits

* upcoming subscription

* fix lint

* fix payment methods

* fix build

* PR comments

* address PR comments

* update cloud contracts

* fix migration name

* fix json serialization error

* loader and fixed for managed compute

* PR comments

* upgrade Go version

* fix migration name

* fix CI

* fix lint CI

* golangci-lint fix

* dedicated subscription
2026-01-19 12:15:11 +01:00
matt ebe2f9acfd Feat: Add additional meta to the run detail getter (#2770)
* feat: add additional meta to proto

* feat: propagate metadata

* feat: expand test

* fix: wiring

* chore: version

* chore: lint
2026-01-12 13:46:16 -05:00
abelanger5 96ac9d294d fix: regression on v0 PutWorkflow for scheduling timeout (#2779) 2026-01-12 13:42:51 -05:00
matt 73229b0e21 Feat: Run detail getter on the engine (#2725)
* feat: initial rpc

* chore: gen python

* feat: add more fields

* chore: gen again

* fix: finish cleaning up python

* feat: start wiring up api

* fix: panic

* feat: start implementing getters

* fix: improve api

* feat: expand return type a bit

* feat: more wiring

* feat: more wiring

* fix: finish wiring up input reads

* fix: admin client cleanup

* fix: ordering

* fix: add all_finished param

* feat: wire up all finished

* fix: propagate allfinished

* fix: propagate external ids

* chore: gen protos again

* fix: one more thing

* chore: rename

* chore: rename

* chore: fix typing

* fix: cleanup

* feat: add queued default

* fix: wiring

* feat: running check

* fix: query

* chore: rm print

* fix: edge case handling

* feat: python test

* feat: add `done` field

* feat: pass `done` through

* fix: test done flag

* fix: cleanup

* fix: handle cancelled

* refactor: clean up implementations of status handling

* fix: feedback

* fix: done logic

* fix: export run status

* fix: couple small bugs

* fix: handle done

* fix: properly extract input

* fix: bug with sequential dags

* refactor: improve performance of lookup query slightly

* refactor: add helpers on V1StepRunData for getting input + parsing bytes

* refactor: create listutils internal package

* refactor: status derivation

* fix: rm unused method

* fix: sqlcv1 import

* fix: error log

* fix: 404 on not found

* feat: changelog, async method
2026-01-08 12:44:01 -05:00
matt 3bd605d4ed Fix: Chunk and recursively retry too-large message sends (#2761)
* feat: recursively split payload list into chunks

* fix: use slices.Chunk and run sequentially

* fix: return error if only one payload

* fix: log error

* fix: couple edge cases
2026-01-08 11:10:06 -05:00
Andrei Gaspar 4dda2b2884 Send create:user Event from OAuth Flow (#2683)
* feat: Send create:user event from OAuth flow

* feat: Implement user and tenant creation events in callbacks

* move callback into cb.Do

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2026-01-06 14:06:38 -05:00
abelanger5 9f463e92d6 refactor: move v1 packages, remove webhook worker references (#2749)
* chore: move v1 packages, remove webhook worker references

* chore: move msgqueue

* fix: relative paths in sqlc.yaml
2026-01-02 11:42:40 -05:00
abelanger5 f82d3bd071 refactor: consolidate repository methods (#2730)
* refactor: remove v0 paths from codebase

* remove uiVersion references

* refactor: remove v0-exclusive database queries

* remove webhook test

* chore: move api token repository

* chore: move dispatcher repository to v1

* chore: move health repository to v1

* chore: remove event repository

* remove some unused repositories

* chore: move mq implementation to v1

* chore: consolidate rate limit implementations

* chore: move security check to v1 repository

* chore: move slack to v1 repository

* chore: move sns implementation to v1 repository

* clean up step repository

* chore: move tenant invite to v1 repository

* chore: move limits, workers, tenant alerts to v1 repository

* chore: move user, tenant, userSession to v1 repository

* chore: move ticker to v1 repository

* chore: move scheduled workflows to v1 repository

* chore: remove workflows

* fix: remove pointer for limits config file

* propagate cache value to api token

* propagate cache durations
2025-12-31 16:35:46 -05:00
matt 39f5481410 hotfix: handle panic (#2732) 2025-12-31 08:39:31 -07:00
abelanger5 f57ebf7546 refactor: remove v0-exclusive database queries (#2729)
* refactor: remove v0 paths from codebase

* remove uiVersion references

* refactor: remove v0-exclusive database queries

* remove webhook test
2025-12-31 09:36:12 -05:00
abelanger5 dd9c36c315 refactor: remove v0 paths from codebase (#2728)
* refactor: remove v0 paths from codebase

* remove uiVersion references
2025-12-30 09:57:00 -05:00
Mohammed Nafees 58758d35b2 Publish COULD_NOT_SEND_TO_WORKER OLAP event due to worker backlog (#2710)
* could not send to worker OLAP event

* fix lint and PR comments

* submodule GHA

* remove submodule

* no gitsubmodule

* fix migration

* revert sdk workflows

* revert sdk workflows

* revert sdk workflows
2025-12-26 09:35:15 -07:00
Mohammed Nafees a13c74bd1d Reuse timers for delayed semaphore release in MQ buffers (#2691)
* reuse msg buffer semaphore timer

* goroutine

* comments
2025-12-25 12:01:12 +01:00
Mohammed Nafees 88e7a60b83 msgqueue msg IDs as constants for ease of navigation and readability (#2692) 2025-12-25 11:56:07 +01:00
matt 6013cadda7 Chore: Remove annoying payload fallback error logs (#2675)
* chore: remove annoying warnings

* fix: re-add dual write thing

* fix: add back fallbacks, only remove logs

* fix: one more
2025-12-23 14:25:33 -05:00
matt b65c6de53f Feat: Hatchet Metrics Monitoring, I (#2699)
* Revert "Revert "Feat: Hatchet Metrics Monitoring, I (#2480)" (#2698)"

This reverts commit b87150767a.

* go mod tidy

---------

Co-authored-by: Mohammed Nafees <hello@mnafees.me>
2025-12-23 20:14:14 +01:00
matt 90b724d1e8 Fix: Dead alert links (#2688)
* fix: tenanted routes in alerts

* fix: janky fe-side redirects

* chore: rm log

* chore: lint

* chore: review
2025-12-23 07:44:13 -05:00
matt b87150767a Revert "Feat: Hatchet Metrics Monitoring, I (#2480)" (#2698)
This reverts commit fdc075ec6f.
2025-12-22 16:26:14 -05:00
matt fdc075ec6f Feat: Hatchet Metrics Monitoring, I (#2480)
* feat: queries + task methods for oldest running task and oldest task

* feat: worker slot and sdk metrics

* feat: wal metrics

* repository stub

* feat: add meter provider thingy

* pg queries

* fix: add task

* feat: repo methods for worker metrics

* feat: active workers query, fix where clauses

* fix: aliasing

* fix: sql, cleanup

* chore: cast

* feat: olap queries

* feat: olap queries

* feat: finish wiring up olap status update metrics

* chore: lint

* chore: lint

* fix: dupes, other code review comments

* send metrics to OTel collector

* last autovac

* flag

* logging updates

* address PR comments

---------

Co-authored-by: gabriel ruttner <gabriel.ruttner@gmail.com>
Co-authored-by: Mohammed Nafees <hello@mnafees.me>
2025-12-23 01:04:02 +05:30
matt 0a947924fa Feat: Parallelize replication from PG -> External (#2637)
* feat: chunking query

* feat: first pass at range chunking

* fix: bug bashing

* fix: function geq

* fix: use maps.Copy

* fix: olap func

* feat: olap side

* refactor: external id

* fix: order by

* feat: wire up env vars

* fix: pass var through

* fix: naming

* fix: append to returnErr properly

* fix: use eg.Go
2025-12-10 17:11:03 -05:00
matt 9e14814acb Feat: OLAP Payload Cutover Job (#2618)
* feat: migration

* feat: queries

* feat: overwrite queries

* fix: bug

* feat: first pass

* fix: more olap job wiring

* fix: signature

* fix: refs to a bunch of funcs

* feat: job

* fix: table names

* fix: span name

* chore: lint

* fix: redundant error check

* fix: naming

* fix: handle nil external id

* fix: order payload partitions descending

* fix: param for limiting which partitions get processed

* fix: olap
2025-12-09 12:33:07 -05:00
matt 35d1cff963 refactor: simplify external store signature (#2616) 2025-12-08 14:53:52 -05:00
matt bede3efe0d Feat: Process all old partitions in a loop (#2613)
* feat: process old partitions in a loop

* fix: param

* fix: query return

* feat: add spans

* fix: naming
2025-12-08 11:00:24 -05:00
matt 18940869ae Feat: Job for payload cutovers to external (#2586)
* feat: initial payload cutover job

* refactor: fix a couple things

* feat: start wiring up writes

* feat: only run job if external store is enabled

* fix: add some notes, add loop

* feat: function for reading out payloads

* fix: date handling, logging

* feat: remove wal and immediate offloads

* feat: advisory lock

* feat: partition swap logic

* fix: rm debug

* fix: add todo

* fix: sql cleanup

* fix: sql cleanup, ii

* chore: nuke a bunch of WAL stuff

* chore: more wal

* feat: trigger for crud opts

* feat: drop trigger + function in swapover

* feat: move autovac to later

* feat: use unlogged table initially

* feat: update migration

* fix: drop trigger

* fix: use insert + on conflict

* fix: types

* refactor: clean up a bit

* fix: panic

* fix: detach partition before dropping

* feat: configurable batch size

* feat: offset tracking in the db

* feat: explicitly lock

* fix: down migration

* fix: bug

* fix: offset handling

* fix: try explicit ordering of the insert

* fix: lock location

* fix: do less stuff after locking

* fix: ordering

* fix: dont drop and recreate if temp table exists

* fix: explicitly track completed status

* fix: table name

* fix: dont use unlogged table

* fix: rm todos

* chore: lint

* feat: configurable delay

* fix: use date as pk instead of varchar

* fix: daily job

* fix: hack check constraint to speed up partition attach

* fix: syntax

* fix: syntax

* fix: drop constraint after attaching

* fix: syntax

* fix: drop triggers properly

* fix: factor out insert logic

* refactor: factor out loop logic

* refactor: factor out job preparation work

* fix: ordering

* fix: run the job more often

* fix: use `WithSingletonMode`

* fix: singleton mode sig

* fix: env var cleanup

* fix: overwrite sig

* fix: re-enable immediate offloads with a flag

* fix: order, offload at logic

* feat: add count query to compare

* fix: row-level triggers, partition time bug

* fix: rm todo

* fix: for true

* fix: handle lock not acquired

* fix: handle error

* fix: comment
2025-12-05 10:54:26 -05:00
abelanger5 9dabe7d902 feat: dlq for dispatcher queues (#2600)
* feat: dlq for dispatcher queues

* reduce dispatcher message ttl to 20 seconds

* rename dispatcher queue for clarity

* add error logs when dead lettering

* address comment
2025-12-04 14:19:01 -05:00
abelanger5 d071a1c36b fix: prevent large worker gRPC stream backlogs (#2597)
* fix: prevent large worker backlogs

* add config value

* add doc for troubleshooting
2025-12-03 17:15:43 -05:00
abelanger5 3cbda9120a fix: load shed on slow worker backlogs (#2595) 2025-12-02 13:05:33 -05:00
abelanger5 3f5c243325 fix: move check for large payloads to after json.Marshal (#2594) 2025-12-02 11:45:37 -05:00