Mohammed Nafees
cf5c5989ff
add vars to tune concurrency poller ( #2428 )
2025-10-23 11:36:12 -04:00
abelanger5
1f35782b59
fix: move err check to before len check ( #2437 )
2025-10-21 19:24:19 -04:00
matt
c6e154fd03
Feat: OLAP Payloads ( #2410 )
...
* feat: olap payloads table
* feat: olap queue messages for payload puts
* feat: wire up writes on task write
* driveby: add + ignore psql-connect
* fix: down migration
* fix: use external id for pk
* fix: insert query
* fix: more external ids
* fix: bit more cleanup
* feat: dags
* fix: the rest of the refs
* fix: placeholder uuid
* fix: write external ids
* feat: wire up messages over the queue
* fix: panic
* Revert "fix: panic"
This reverts commit c0adccf2ea .
* Revert "feat: wire up messages over the queue"
This reverts commit 36f425f3c1 .
* fix: rm unused method
* fix: rm more
* fix: rm cruft
* feat: wire up failures
* feat: start wiring up completed events
* fix: more wiring
* fix: finish wiring up completed event payloads
* fix: lint
* feat: start wiring up external ids in the core
* feat: olap pub
* fix: add returning
* fix: wiring
* debug: log lines for pubs
* fix: external id writes
* Revert "debug: log lines for pubs"
This reverts commit fe430840bd .
* fix: rm sample
* debug: rm pub buffer param
* Revert "debug: rm pub buffer param"
This reverts commit b42a5cacbb .
* debug: stuck queries
* debug: more logs
* debug: yet more logs
* fix: rename BulkRetrieve -> Retrieve
* chore: lint
* fix: naming
* fix: conn leak in putpayloads
* fix: revert debug
* Revert "debug: more logs"
This reverts commit 95da7de64f .
* Revert "debug: stuck queries"
This reverts commit 8fda64adc4 .
* feat: improve getters, olap getter
* fix: key type
* feat: first pass at pulling olap payloads from the payload store
* fix: start fixing bugs
* fix: start reworking `includePayloads` param
* fix: include payloads wiring
* feat: analyze for payloads
* fix: simplify writes more + write event payloads
* feat: read out event payloads
* feat: env vars for dual writes
* refactor: clean up task prop drilling a bit
* feat: add include payloads params to python for tests
* fix: tx commit
* fix: dual writes
* fix: not null constraint
* fix: one more
* debug: logging
* fix: more debugging, tweak function sig
* fix: function sig
* fix: refs
* debug: more logging
* debug: more logging
* debug: fix condition
* debug: overwrite properly
* fix: revert debug
* fix: rm more drilling
* fix: comments
* fix: partitioning jobs
* chore: ver
* fix: bug, docs
* hack: dummy id and inserted at for payload offloads
* fix: bug
* fix: no need to handle offloads for task event data
* hack: jitter + current ts
* fix: short circuit
* fix: offload payloads in a tx
* fix: uncomment sampling
* fix: don't offload if external store is disabled
* chore: gen sqlc
* fix: migration
* fix: start reworking types
* fix: couple more
* fix: rm unused code
* fix: drill includePayloads down again
* fix: silence annoying error in some cases
* fix: always store payloads
* debug: use workflow run id for input
* fix: improve logging
* debug: logging on retrieve
* debug: task input
* fix: use correct field
* debug: write even null payloads to limit errors
* debug: hide error lines
* fix: quieting more errors
* fix: duplicate example names, remove print lines
* debug: add logging for olap event writes
* hack: immediate event offloads and cutovers
* fix: rm log line
* fix: import
* fix: short circuit events
* fix: duped names
2025-10-20 09:09:49 -04:00
Mohammed Nafees
8f57989730
fix race condition in child spawn ( #2429 )
2025-10-17 16:56:41 +02:00
Mohammed Nafees
e2b1f1353e
Fix OTel span attribute naming convention ( #2409 )
...
* rename spans according to convention
* low cardinality
2025-10-16 18:43:40 +02:00
Mohammed Nafees
d9268c7270
Cleanup job for old and invalid entries ( #2378 )
...
* auto run table cleanup
* batched cleanup of tables
* address PR comments
* fix timeout
* update queries
* fix shouldContinue
* also call cleanup for v1_workflow_concurrency_slot
* fix comment
* comment fix
2025-10-16 16:51:08 +02:00
matt
aa38c6d2df
fix: payload fallback for child runs ( #2421 )
2025-10-15 16:16:51 -04:00
abelanger5
b16be655be
feat: stateful polling intervals ( #2417 )
...
* initial pass on stateful intervals
* pr review comments + add evict expired idempotency keys
* fix: goroutine leak and name vars better
* fix some cleanup logic
2025-10-15 11:40:22 -04:00
matt
5b5adcb8ed
Feat: Scheduled run detail view, bulk cancel / replay with pagination helper ( #2416 )
...
* feat: endpoint for listing external ids
* feat: wire up external id list
* chore: regen api
* feat: py sdk wrapper
* fix: since type
* fix: log
* fix: improve defaults for statuses
* feat: docs
* feat: docs
* fix: rm extra file
* feat: add id column to scheduled runs
* feat: side panel for scheduled runs
* fix: side panel header pinned
* fix: border + padding
* chore: gen
* chore: lint
* chore: changelog, version
* fix: spacing of cols
* fix: empty webhook resource limit
* fix: tsc
* fix: sort organizations and tenants alphabetically
2025-10-15 11:36:45 -04:00
Mohammed Nafees
a750ce950d
Introduce vars to tune ANALYZE job gocron run intervals ( #2407 )
...
* introduce cars to tune ANALYZE job gocron run intervals
* update config doc
* fix assignment
2025-10-10 11:02:10 +02:00
Mohammed Nafees
0695db820c
Use UTC for all pgx connections and check for database TZ ( #2398 )
...
* set utc for all pgx sessions
* helper func
* also accept IANA Etc/UTC
2025-10-09 10:54:27 +02:00
matt
d677cb2b08
feat: gzip compression for large payloads, persistent OLAP writes ( #2368 )
...
* debug: remove event pub
* add additional spans to publish message
* debug: don't publish payloads
* fix: persistent messages on olap
* add back other payloads
* remove pub buffers temporarily
* fix: correct queue
* hacky partitioning
* add back pub buffers to scheduler
* don't send no worker events
* add attributes for queue name and message id to publish
* add back pub buffers to grpc api
* remove pubs again, no worker writes though
* task processing queue hashes
* remove payloads again
* gzip compression over 5kb
* add back task controller payloads
* add back no worker requeueing event, with expirable lru cache
* add back pub buffers
* remove hash partitioned queues
* small fixes
* ignore lru cache top fn
* config vars for compression, disable by default
---------
Co-authored-by: Alexander Belanger <alexander@hatchet.run >
2025-10-08 11:44:04 -04:00
matt
c48a3211b5
Feat: Immediate Payload Offloads ( #2375 )
...
* feat: modify operations
* feat: attempt 1 at doing the cutover + the offload in the same query
* fix: operation write
* debug: add some print lines
* fix: check constraint
* fix: select records to offload properly
* fix: fn
* feat: add second table to hold queued cutovers
* fix: start reworking queries
* fix: select
* fix: missing cols
* fix: for update
* fix: query name for finalize
* feat: cut over query finalizer
* feat: query for writes into cutover queue
* feat: add query for cut over polling
* feat: add cutover job
* fix: rm operations
* feat: write cutover queue items at the same time as setting payload keys
* fix: simplify into single query
* fix: revert debug
* chore: lint
* fix: don't remove operation column yet
* feat: refactor into struct of opts and make job intervals configurable
* fix: add analyze for payload table
* fix: schema copy paste
* fix: drop fk
* feat: add an index to help with poll performance for a short while
* fix: simplify poll ordering
* fix: simplify more
* fix: ctx
Co-authored-by: Mohammed Nafees <hello@mnafees.me >
* Feat: Task Event and DAG Payloads (#2370 )
* feat: initial work on task event payloads
* fix: iterator
* feat: wire up task events
* fix: backwards compat
* fix: migrations
* fix: duplication
* fix: col
* fix: add timestamptz col
* fix: overwrite
* fix: rm debugging
* fix: revert debugging
* fix: rm unused cols
* fix: spelling
* fix: use `current_timestamp` as default
* feat: dual writes for payloads
* fix: improve debug lines
* debug: add log
* debug: always write
* fix: make annoying log debug level
* fix: rm debug lines
* fix: add comment
* feat: dag payloads
* fix: index
* fix: migration ver
* fix: error msg
Co-authored-by: abelanger5 <belanger@sas.upenn.edu >
* fix: create, then set default
* fix: inserted at copy paste
* fix: n+1 query
* fix: another n+1 query
* fix: rm unused singleton retrieve
---------
Co-authored-by: abelanger5 <belanger@sas.upenn.edu >
---------
Co-authored-by: Mohammed Nafees <hello@mnafees.me >
Co-authored-by: abelanger5 <belanger@sas.upenn.edu >
2025-10-08 11:22:34 -04:00
matt
8fd90a29a6
Feat: Pausable Crons ( #2395 )
...
* feat: update query, patch route
* feat: api for update
* fix: simplify ui a bit
* feat: wire up fe
* feat: improve copy, spinners
* fix: invert naming to avoid horrible double negative
* fix: improve handling of optional types
* fix: last bits of naming
* feat: persist enabled flag across workflow versions properly
* fix: update spinner
2025-10-08 11:12:14 -04:00
matt
dfc5074057
Fix: Payload fallbacks, WAL conflict handling, WAL eviction ( #2372 )
...
* fix: improve error handling
* fix: add default operation
* fix: dont write operation
* fix: refactor offload to always evict
* fix: err check
* fix: err
2025-10-03 14:50:46 -04:00
Mohammed Nafees
ed40a82dbb
Include tenant_id in OTel spans wherever possible ( #2382 )
2025-10-03 18:16:16 +02:00
matt
bb1de91254
fix: run analyze every 3 hours ( #2380 )
2025-10-03 09:49:35 -04:00
icbd
c8bd3cf93c
Add ApplyNamespace for BulkRunWorkflow ( #2374 )
2025-10-02 13:33:46 +02:00
matt
202d6b0184
Candidate Fix: WAL Write Dupes ( #2369 )
...
* fix: wal dupes
* fix: make unique key align with payload pk
2025-09-30 17:11:35 -04:00
matt
4730273bce
Fix: Relax check constraint to allow null payloads ( #2366 )
...
* fix: relax check constraint
* fix: tweak logs
* fix: constraint in schema
2025-09-30 12:24:38 -04:00
abelanger5
2edeeb10ea
feat: max channels for rabbitmq ( #2365 )
...
* feat: max conns for rabbitmq
* rename conns -> chans
2025-09-30 08:49:45 -04:00
Mohammed Nafees
806931f8c6
ignore tenants with deletedAt non null ( #2364 )
2025-09-30 08:01:23 -04:00
abelanger5
43eb47b881
fix(go-sdk): async start step run action event ( #2351 )
...
* fix(go-sdk): async start step run action event
* use inner ctx
2025-09-26 14:03:37 -04:00
matt
c1e5fa828b
FE Polish, VI: Make badges dynamically sized, use slate instead of fuchsia for queued, display ms on dates ( #2352 )
...
* fix: rm w-full from badges
* fix: use slate instead of fuchsia for queued
* fix: use `date-funs` to parse + display dates
* fix: worker styling
* debug: redocly
* debug: redocly
* debug: redocly
* debug: redocly
* debug: redocly
* debug: redocly
* feat: direct workflow id getter
* fix: dedupe
* fix: return workflow type
* chore: lint
* chore: lint
* fix: overflow
* fix: include tenant in query for safety
2025-09-26 13:59:06 -04:00
matt
126ff3771b
Fix: Rename metrics queries, always refetch queue metrics, change default refetch interval, configurable WAL poll limit ( #2346 )
...
* fix: improve query naming + change refetch interval for queue metrics
* fix: only enable queue metrics query when it's open
* feat: change default
* fix: change storage key to clear cache
* fix: queue metrics loading state
* feat: introduce poll limit with default of 1000
* feat: set WAL poll limit
* debug: log line to test
* fix: export helper
* fix: rm debug
2025-09-25 20:44:39 -04:00
abelanger5
3fe1cdde37
fix: improve DAG status updates ( #2343 )
...
* fix: improve DAG status updates
* fix: error msg
2025-09-25 12:22:35 -04:00
matt
d6afe55338
FE Polish V: Searchable workflows, additional metadata tab ( #2342 )
...
* feat: search for workflows
* fix: allow fts for workflow name
* feat: add back metadata tab to details
* feat: dynamic copy
* chore: lint
2025-09-25 10:58:48 -04:00
matt
ee17433ac9
Fix: Event getter backwards compat ( #2337 )
...
* feat: query for getting event in v1
* feat: extend populator to fetch v1 event
* fix: rm debug
* fix: simplify join
* fix: ctx
2025-09-24 17:10:20 -04:00
matt
df1dab945b
Hotfix: Stable ordering for flattened tasks + child tasks ( #2334 )
...
* fix: stable ordering with flattened tasks / child tasks
* fix: `Equal` method
2025-09-24 12:46:27 -04:00
matt
63c644577a
Feat: Add error level logs if we fall back to the task input for monitoring ( #2328 )
...
* feat: logs on fallback to input from task
* drive-by: couple more status badge colors
* fix: durable sleep matches
2025-09-23 15:48:30 -04:00
Mohammed Nafees
cf21550502
Update docs to use Go SDK v1 ( #2313 )
...
* SDK fixes
* go docs generate
* simple changes
* more docs changes
* bulk docs done
* cancellation example
* concurrency example
* conditional example
* cron example
* dag example
* durable event example
* durable sleep example
* on failure example
* priority example
* rate limit example
* retries example
* run-no-wait example
* on event example
* run with results example
* running your task example
* scheduled runs example
* streaming example
* workers example
* timeouts example
* sticky example
* docker go
* fix lint and build
* update migration doc
* fix lint
* fix some docs
* fix docker mdx
* remove local lint
* go stub example
* make changes
* child spawning
* migration code examples
* fix child workflow example
2025-09-23 19:19:27 +02:00
abelanger5
06c4bb4f24
feat: support dynamic rate limit durations ( #2320 )
2025-09-21 17:01:11 -04:00
abelanger5
7088925ea6
fix: skip locked on queue updates ( #2321 )
2025-09-21 17:01:02 -04:00
matt
30e0c0b89e
Fix: Payload WAL dupes ( #2319 )
...
* fix: payload wal
* fix: spacing
2025-09-18 21:54:23 -04:00
matt
8b8ded655d
Fix: Update payload properly on replay ( #2317 )
...
* fix: overwrite payloads when task is in an initially e.g. cancelled state
* fix: add distinct to payload writes to limit conflict resolution
* feat: first pass at test
* fix: tenant in warning
* fix: lint, more assertions
* fix: bug
* fix: my pet peeve
2025-09-18 20:42:39 -04:00
matt
1108cf29d3
Fix: Payloads OLAP backwards compat ( #2316 )
...
* fix: backwards compat
* fix: copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Revert "fix: copilot"
This reverts commit 47f4f8f64d .
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-09-18 11:53:16 -04:00
matt
3ebf76b638
Fix: Event filtering edge case ( #2311 )
...
* fix: bugs in python tests + extend them to assert more
* fix: bug
* chore: lint
* fix: typo
* fix: longer timeout
* debug: more iterations
* debug: try fixing test again
* fix: allocate memory initially
2025-09-18 09:48:01 -04:00
Mohammed Nafees
da6c23ede4
Allow RabbitMQ to be used with Hatchet Lite ( #2128 )
...
* allow rabbitmq to be used with lite
* fix docker image
* fix env vars
* WIP
* fix mq kind selection
* lite specific env vars
* failure check
* changes to logic
* fix failing tests
* fix e2e test
2025-09-16 22:34:53 +02:00
Mohammed Nafees
c1ebeb518a
Fix GetDetails in Runs feature client of Go SDK v1 ( #2297 )
...
* fix GetDetails underlying API call
* use Get instead
2025-09-16 12:52:31 -04:00
matt
bdedab653a
Fix: WAL partition poll function type ( #2301 )
...
* fix: type
* fix: cast to int32
* debug: add logging
* debug: more logs
* Revert "debug: more logs"
This reverts commit 2ff8033f89 .
* Revert "debug: add logging"
This reverts commit a7aaa05b9c .
* fix: rm unnecessary generic
* feat: span attrs + names
* fix: span naming, more details
2025-09-16 12:44:55 -04:00
matt
8ae760dd15
fix: revert partition pruning ( #2295 )
2025-09-12 17:33:13 -04:00
Mohammed Nafees
47a065df83
Add panic handler to Go SDK ( #2293 )
2025-09-12 19:49:51 +02:00
matt
c759da79aa
Feat: Partition pruning for ListTaskParentOutputs, lookup index for v1_payload_wal ( #2294 )
...
* fix: small query rework, partition pruning for `ListTaskParentOutputs`
* feat: migration for adding index
* fix: copilot comments
2025-09-12 13:18:08 -04:00
matt
92843bb277
Feat: Payload Store Repository ( #2047 )
...
* feat: add table for storing payloads
* feat: add payload type enum
* feat: gen sqlc
* feat: initial sql impl
* feat: add payload store repo to shared
* feat: add overwrite
* fix: impl
* feat: bulk op
* feat: initial wiring of inputs for task triggers
* feat: wire up dag matches
* feat: create V1TaskWithPayload and use it everywhere
* fix: couple bugs
* fix: clean up types
* fix: overwrite
* fix: rm input from replay
* fix: move payload store to shared repo
* fix: schema
* refactor: repo setup
* refactor: repos
* fix: gen
* chore: lint
* fix: rename
* feat: naming, write dag inputs
* fix: more naming, trigger bug
* fix: dual writes for now
* fix: pass in tx
* feat: initial work on offloader
* feat: improve external offloader
* fix: some refs
* add withExternalHandler
* fix: improve impl of external store
* feat: implement offloading, fix other impls
* feat: add query to update JSON
* fix: implement offloading + updating records in payloads table
* feat: add WAL table
* feat: add queries for polling WAL and evicting
* feat: wire up writes into WAL
* fix: get job working
* refactor: improve types
* fix: infinite loop
* feat: improve offloading logic to run in two separate txes
* refactor: rework how overrides work
* fix: lint
* fix: migration number
* fix: migration
* fix: migration version
* fix: revert back to reading payloads out
* fix: fall back to previous input, part i
* fix: input fallback
* fix: add back input to replay
* fix: input fallback in dispatcher
* fix: nil check
* feat: advisory locks, part i
* fix: no skip locked
* feat: hash partitioned wal table
* fix: modify queries a bit, tweak crud enum
* fix: pk order, function to find tenants
* feat: wal processing
* fix: only write wal if an external store is enabled, fix offloading logic
* fix: spacing
* feat: schema cleanup
* fix: rm external store loc name
* fix: set content to null when offloading
* fix: cleanup, naming
* fix: pass overwrite payload store along
* debug: add some logging
* Revert "debug: add some logging"
This reverts commit 43e71eadf1 .
* fix: typo
* fx: add offloatAt to store opts for offloading
* fix: handle leasing with advisory lock
* fix: struct def
* fix: requeue on payloads not found
* fix: rm hack for triggers
* fix: revert empty input on write
* fix: write input
* feat: env var for enabling / disabling dual writes
* feat: wire up dual writes
* fix: comments
* feat: generics!
* fix: panic from type cast
* fix: migration
* fix: generic
* fix: hack for T key in map
* fix: cleanup
2025-09-12 09:53:01 -04:00
matt
f385964fcc
Fix: Scheduled runs race w/ idempotency key check ( #2077 )
...
* feat: create table for storing key
* feat: is_filled col
* feat: idempotency repo
* fix: handle filling
* fix: improve queries
* feat: check if was created already before triggering
* fix: handle partitions
* feat: improve schema
* feat: initial idempotency key claiming impl
* fix: db
* fix: sql fmt
* feat: crazy query
* fix: downstream
* fix: queries
* fix: query bug
* fix: migration rename
* fix: couple small issues
* feat: eviction job
* fix: copilot comments
* fix: index name
* fix: rm comment
2025-09-12 07:54:42 -04:00
matt
ced1ad43aa
Feat: Filters UI, Events page refactor, Misc. other fixes ( #2276 )
...
* feat: initial filters page work
* feat: cols
* feat: start implementing filters in the hook
* fix: rm some effects
* fix: filter pagination
* fix: placeholder data, query key
* refactor: factor out popover + columns
* fix: tsc
* fix: empty state
* fix: move filters tab down
* fix: remove run id from scheduled runs table
* fix: rm unused
* fix: rm tmp change
* fix: rm one more
* fix: lint
* fix: colname
* feat: declarative checkmark, col key to name mapping
* fix: add more col key to name mappings
* fix: rm log
* fix: rm id checkboxes for events and filters
* refactor: start fixing event cols
* refactor: events hook
* fix: event id
* fix: clickable id
* fix: unwind example
* feat: delete mutation
* feat: form + schema
* feat: update + create mutations
* feat: filter detail
* feat: filter create
* feat: modify cols
* feat: filter detail side panel
* fix: json fallback
* fix: cursors, etc
* fix: cursor
* fix: invalidate
* fix: modal copy
* chore: lint
* fix: openapi spec
2025-09-11 13:41:12 -04:00
Gabe Ruttner
9459dad14d
Feat improve auth error handling ( #1893 )
...
* common errors
* rate limits
* add IP extractor to api server
* use echo rate limit middleware func
* use rate limit for webhooks as well
---------
Co-authored-by: Mohammed Nafees <hello@mnafees.me >
2025-09-11 18:30:07 +02:00
Mohammed Nafees
ebb49cb1a0
error out instead of panic ( #2274 )
2025-09-09 17:48:55 +02:00
matt
cf59a7bcd9
Feat: Worker slot Prom metrics ( #2195 )
...
* feat: add slots to prom metrics
* feat: available
* fix: extension instead
* fix: docs
* fix: rm unused query changes
* fix: rm unused struct
* fix: labels
* feat: improve total slots
* fix: pr feedback
* fix: docs
* Revert "fix: docs"
This reverts commit 7fe105da92 .
* fix: derive total slots
2025-09-08 14:07:44 -04:00
Mohammed Nafees
9b0ec2618e
Go SDK v1 feature client changes ( #2160 )
...
* feature client changes
* remove code duplication
* func name should make sense
* add simple compile gh workflow
2025-09-08 17:10:24 +02:00