Commit Graph

237 Commits

Author SHA1 Message Date
abelanger5 1ea4dfc5de feat: deduplicated enqueue (#735)
* wip

* wip: functional query

* feat: expose affinity config

* feat: add weight to proto

* feat: upsert affinity state on worker start

* fix: linting

* feat: add upsert proto

* feat: upsert handler

* feat: revise model

* fix: labels

* feat: functional desired worker

* wip: ui

* feat: add state to step run events

* fix: filter empty keys

* fix: labels as badges

* feat: empty state and descriptive text

* chore: add todo

* chore: whitespace

* chore: cleanup

* chore: cleanup

* chore: fix hash

* chore: squash migrations

* fix: fair worker assignment

* fix: remaining slots on valid desired workers

* wip: sticky

* fix: count slots

* chore: rm log line

* feat: expose sticky config

* wip: sticky dag

* feat: expose desired worker id to trigger

* feat: trigger on desired worker

* feat: typescript docs

* feat: sticky python

* feat: py sticky children

* wip: py affinity

* serverless note

* feat: complete python examples

* linting

* feat: deduplicated enqueue

* fix: address changes from PR review

* chore: generate

---------

Co-authored-by: gabriel ruttner <gabriel.ruttner@gmail.com>
2024-07-26 16:47:46 +00:00
abelanger5 77193df928 feat: expose additional fields on assigned action (#738) 2024-07-26 09:17:05 -07:00
Gabe Ruttner ee68786d69 feat: sticky workers (#695)
* wip

* wip: functional query

* feat: expose affinity config

* feat: add weight to proto

* feat: upsert affinity state on worker start

* fix: linting

* feat: add upsert proto

* feat: upsert handler

* feat: revise model

* fix: labels

* feat: functional desired worker

* wip: ui

* feat: add state to step run events

* fix: filter empty keys

* fix: labels as badges

* feat: empty state and descriptive text

* chore: add todo

* chore: whitespace

* chore: cleanup

* chore: cleanup

* chore: fix hash

* chore: squash migrations

* fix: fair worker assignment

* fix: remaining slots on valid desired workers

* wip: sticky

* fix: count slots

* chore: rm log line

* feat: expose sticky config

* wip: sticky dag

* feat: expose desired worker id to trigger

* feat: trigger on desired worker

* feat: typescript docs

* feat: sticky python

* feat: py sticky children

* wip: py affinity

* serverless note

* feat: complete python examples

* linting

* fix: doc link

* chore: rm debug log

* fix: simplify list labels

* fix: typo
2024-07-22 17:20:23 -04:00
Gabe Ruttner ad29edb44f fix: partitioned semaphore resolver (#731)
* fix: partition and improve query

* feat: paginate until done

* chore: address comments

* fix: write partitions
2024-07-18 11:06:25 -04:00
abelanger5 a5724fc4f9 feat: replay workflow runs (#732)
* feat: replay workflow runs

* address pr review changes
2024-07-18 08:05:15 -07:00
Gabe Ruttner b7cec9ec53 feat: soft delete (#717)
* feat: soft delete workflows and versions

* feat: filter soft deletes wf and wfr

* feat: filter events and step runs

* fix: query

* fix: query

* chore: generate

* wip

* chore: squash migrations

* chore: separate retention into new service

* feat: regularly clean up

* chore: migrations

* fix: tests

* fix: queries

* fix: ambiguous

* fix: refs

* fix: ambiguous id

* fix: remove update from

* fix: soft delete

* fix: cleanup retention scheduler

* fix: has more query

* chore: gen

* fix: query

* fix: table
2024-07-18 09:06:05 -04:00
abelanger5 5d87f380ef feat: managed worker pools (#725)
* change api extension spec to register custom populators

* fix: support only bearer auth

* fix: correct authn logic

* fix: indexes on workflow runs, events

* feat: managed worker pools

* chore: lint fix

* hide workers view when not enabled

* support internal api tokens, minor improvements

* fix: actually write internal

* fix breaking changes

* don't allow revoking internal tokens

* fix: linting and remove metrics view

* fix: token

* address review and add feat flags
2024-07-16 13:33:46 +00:00
Gabe Ruttner c935a38708 fix: revert failed assigned grpc stream and write event (#726)
* fix: revert and write event

* fix: write critical event

* fix: unassign repository method

* fix: remove unneeded event
2024-07-15 18:05:49 -04:00
Gabe Ruttner d866f8167d fix: add job run lookup data to data query (#722) 2024-07-15 09:17:42 -04:00
Gabe Ruttner f4f752b5d2 fix: large step run payloads (#719)
* wip: just needs working transformation

* fix: refactor data into separate query
2024-07-14 10:27:25 -04:00
abelanger5 fee4c63319 fix: infinite meta loading loop (#718)
* fix: infinite meta loading loop

* fix: workflow run id parsing
2024-07-12 14:39:01 -04:00
Gabe Ruttner af705a0aea fix: resolve unresolved failed steps (#700)
* feat: resolve unresolved failed steps

* fix: poll active queues

* chore: comment temp unused
2024-07-12 14:14:29 -04:00
abelanger5 8f8f3ad287 fix: reduce max throughput of requeue (#713)
* fix: reduce max throughput of requeue

* fix: reassign query

* fix: move step run timeout to partition model

* fix: partitioning queries and index

* better logs on requeue

* fix: inactive rebalance and get step run for engine query

* fix: correct inactive queries
2024-07-12 14:03:55 -04:00
abelanger5 a96738539e fix: simplify reassign query (#712)
* fix: simplify reassign query

* chore: lint and rehash
2024-07-10 19:38:02 -04:00
Gabe Ruttner 1e20bf946a fix: improved assign, reassign, and requeue (#702)
* fix: improved queries

* fix: 1s timeout

* fix: indexes

* fix: increase timeout to 4s

* fix: migration

* merge in db changes

* chore: squash migrations

* chore: re-hash

* chore: remove comment

* chore: rm unused query

* fix: state

* fix: check valid workers before commit

* fix: query

* chore: gen
2024-07-10 12:45:08 -04:00
Gabe Ruttner 7dc274bbd6 fix: remove expired crons (#697)
Co-authored-by: abelanger5 <belanger@sas.upenn.edu>
2024-07-10 11:01:40 -04:00
abelanger5 f36e66cd28 feat: configurable data retention period (#693)
* feat: data retention for tenants

* chore: generate and docs

* chore: lint
2024-07-06 14:31:12 +00:00
abelanger5 b96cee1615 chore: better logging in dispatcher (#692) 2024-07-04 16:21:26 -04:00
Luca Steeb 62e02495c9 fix(webhooks): remove unused workflows field (#665) 2024-07-02 15:24:23 +01:00
Gabe Ruttner 8a8a033af6 feat: variable token expiration (#670)
* feat: variable token expiration

* fix: typo

* fix: long tokens for webhook workers

* fix: format
2024-07-01 15:47:32 +00:00
Luca Steeb 1002e74695 fix(webhooks): set content-type in webhook requests (#656) 2024-06-26 19:02:05 -04:00
abelanger5 f2c6bc1f44 feat: tenant partitioning (#649)
* feat: tenant partitioning

* fix: rebalance inactive partitions, split into separate partitioner

* fix: shutdown partitioner scheduler properly

* update config options

* fix: config options linting
2024-06-26 21:06:51 +00:00
Gabe Ruttner a8d42819ea feat: check security service (#639)
* feat: check security service

* feat: propegate version

* feat: with ident

* fix: lint

* chore: generate

* fix: change domain

* fix: panic recover

* fix: migrations

* fix: hash

* fix: dont check in tests
2024-06-26 16:26:29 -04:00
Luca Steeb a51681ddc6 fix(webhooks): use PUT for healthcheck (#644) 2024-06-26 10:39:11 -04:00
Luca Steeb 1490d88954 feat: webhook workers (#542)
Adds serverless support via the concept of webhook workers. Allows any webhook to be registered as a serverless endpoint for executing a step.
2024-06-25 17:06:43 -04:00
abelanger5 5538196169 fix: correct lengths on random.Generate (#638) 2024-06-25 15:12:59 -04:00
Gabe Ruttner 697757879f feat: billing (#624)
* feat: init lago client

* feat: billable meter

* feat: db persistence

* wip: expose sub

* feat: rename page

* wip: billing section

* wip: lago integration

* feat: separate plan and period

* wip: webhook

* feat: improve empty state

* feat: update limits on plan changes

* feat: can change plans

* feat: change plan loading state

* feat: yearly filter

* feat: billing clarification

* fix: treatment

* feat: filter plans

* feat: prevent non-owner from changing plan

* fix: loading state

* fix: jit portal link

* fix: rm import

* fix: build errors

* fix: default to free

* fix: wrong files

* fix: select or insert customer

* fix: note

* feat: upgrade dependent on payment method state

* fix: dedupe

* chore: remove github-app from core

* chore: port to cloud

* chore: port to cloud

* chore: port to cloud

* chore: port to cloud

* chore: port to cloud

* add new components, repository callbacks

* chore: rm unused packages

* chore: fix generation

* chore: gen

* fix: cloud api references

* debug

* debug

* fix: actually set plans

* chore: rm debug

* fix: build

* feat: callbacks

* fix: add generated code

* chore: group cloud components

* chore: group by feature

* feat: alert change

* feat: confirm

* fix: confirm modal

* fix: ui

* fix: remove arrears

* fix: open in same tab

* fix: wan alert

* fix: call the callback

* fix: callback obj

* fix: disable if no cloud meta

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2024-06-25 13:57:16 -04:00
Luca Steeb b6dcb4e7e9 refactor(random): refactor random string generation (#633) 2024-06-24 23:44:03 +01:00
abelanger5 37c0f6549c feat: add endpoint to REST API for creating an event, add UI for creating an event (#616)
* feat: add create event to rest api

* fix: ingestor usage

* feat: add create event to the UI

* fix: address PR review
2024-06-19 19:53:27 +00:00
abelanger5 7c3ddfca32 feat: api server extensions (#614)
* feat: allow extending the api server

* chore: remove internal packages to pkg

* chore: update db_gen.go

* fix: expose auth

* fix: move logger to pkg

* fix: don't generate gitignore for prisma client

* fix: allow extensions to register their own api spec

* feat: expose pool on server config

* fix: nil pointer exception on empty opts

* fix: run.go file
2024-06-19 09:36:13 -04:00
abelanger5 d48209ca1b fix: remove grpc_broadcast_address claim validation (#610) 2024-06-18 18:14:27 +00:00
abelanger5 4328207701 fix: add delay to requeue and reassign to allow workers to reconnect (#598)
* fix: add delay to requeue and reassign to allow workers to reconnect

* address changes from review
2024-06-17 13:32:50 +00:00
abelanger5 5434332115 fix: clarify that empty strings are not valid returns (#597) 2024-06-17 09:21:13 -04:00
abelanger5 d76e9e17eb fix: reset step run inputs on replay (#596) 2024-06-17 09:15:41 -04:00
abelanger5 31b2fa15cf fix: don't requeue step runs immediately (#582) 2024-06-12 09:49:45 -04:00
Gabe Ruttner 6145dbc88d fix: empty message (#581) 2024-06-12 06:27:36 -07:00
Gabe Ruttner 1878bd22b0 fix: group queries (#574)
* fix: missing queued from count

* fix: update group key queries

* fix: arb limit

* fix: status to pending

* revert
2024-06-12 06:18:03 -07:00
Gabe Ruttner 8fc412c3b3 fix: limit env var bindings (#578) 2024-06-11 13:47:40 +00:00
Gabe Ruttner 731f6f1f9c fix: sort by createdAt then id (#569) 2024-06-11 08:53:46 -04:00
Gabe Ruttner 43fa6f161f fix: only join latest workflow version (#568)
* fix: only join latest workflow version

* fix: optimized query
2024-06-10 15:28:12 +00:00
Gabe Ruttner bbc4e58dd9 feat: limits (#559)
* feat: workflow run limits

* fix: resource exhausted 429

* feat: event limit

* feat: worker limit

* fix: sensible error

* fix: pb

* feat: expose limits api

* feat: default limits

* feat: add enable alert option

* feat: slack and email alerts

* fix: cron interval

* feat: make metered util

* wip: schedules and crons

* chore: squash migration

* fix: select or insert

* fix: remove unfinished meter

* chore: atlas migration

* fix: template format

* fix: shared ErrResourceExhausted

* feat: cache

* fix: limit can be nil

* fix: clarification

* fix: close meter ticker

* fix: friendly error for child workflows
2024-06-07 10:57:57 -07:00
Gabe Ruttner e09ee98df5 feat: expose retry count (#524)
* feat: expose retry count

* feat: expose retry count go

* docs: accessing retry count

* fix: import

* fix: tests

* fix: docs formatting

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
Co-authored-by: abelanger5 <belanger@sas.upenn.edu>
2024-06-07 15:27:38 +00:00
abelanger5 b0b2e26952 feat: hatchet-lite (#560)
* feat: hatchet-lite mvp

* fix: init shadow db

* fix: install atlas

* fix: correct env

* fix: wait for db ready

* fix: remove name flag

* fix: add hatchet-lite to build
2024-06-06 14:03:53 -04:00
Gabe Ruttner d233ae3b6a fix: keep semaphore table (#553) 2024-06-04 12:18:37 -04:00
Gabe Ruttner 8b1417b1d8 feat: worker semaphore v2 (#540)
* wip: semaphore slot table

* wip: acquire and release semaphore

* Fix deadlock/pool exhaustion

* fix: update skip locked cte

* feat: release resolver

* wip: migration

* chore: migrate running steps to semaphore

* feat: add next alert column

* feat: add notification templates

* feat: add poll token ticker

* fix: expiring 7 days

* fix: no expired tokens

* fix: subject string

* fix: message string

* fix: slack format

* feat: add config columns

* feat: expose api

* feat: update alerter opts

* feat: update ui

* chore: ui tweaks

* fix: ui tweaks

* fix: migration with loop

* chore: generate

* chore: remove unused fn

* feat: add worker id index on slot

* chore: rm unused fn

* fix: typo

* feat: optimized query

* chore: generate all

* chore: collapse migration

---------

Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2024-06-04 07:56:29 -07:00
Gabe Ruttner 207f1bbb08 feat: default email alert group (#547)
* feat: add next alert column

* feat: add notification templates

* feat: add poll token ticker

* fix: expiring 7 days

* fix: no expired tokens

* fix: subject string

* fix: message string

* fix: slack format

* feat: add config columns

* feat: expose api

* feat: update alerter opts

* feat: update ui

* chore: ui tweaks

* fix: ui tweaks

* Update internal/repository/tenant_alerting.go

Co-authored-by: abelanger5 <belanger@sas.upenn.edu>

* chore: comment

* fix: split emails

* fix: commit context

---------

Co-authored-by: abelanger5 <belanger@sas.upenn.edu>
2024-06-03 12:30:46 -04:00
Gabe Ruttner 01512a6493 Feat expiring token email and slack alerts (#546)
* feat: add next alert column

* feat: add notification templates

* feat: add poll token ticker

* fix: expiring 7 days

* fix: no expired tokens

* fix: subject string

* fix: message string

* fix: slack format

* fix: increase interval
2024-05-31 20:38:11 +00:00
abelanger5 db30bb0b4e fix: reject heartbeats when dispatcher disconnects, step runs (#545) 2024-05-31 08:47:35 -04:00
abelanger5 3ef1f802c7 fix: hangup subscriber when workflow run is finished (#543)
* fix: better handling for subscribe to workflow run events

* fix: remove debug latency
2024-05-30 21:31:11 -04:00
abelanger5 4585066349 fix: set tx isolation level to serializable for step run assignments (#535)
* fix: use serializable isolation level in step run assignment

* chore: better error log
2024-05-28 18:23:31 -04:00