Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
6584839
fix: more tests
mrkaye97 Jan 30, 2026
f7d56fc
lint
grutt Feb 2, 2026
7bc6f1e
lint
grutt Feb 2, 2026
b1fb028
init
grutt Feb 3, 2026
1c488e6
dynamic slot types
grutt Feb 3, 2026
1980b70
with sdks
grutt Feb 3, 2026
556a64b
lint docs
grutt Feb 3, 2026
18d586b
naming
grutt Feb 3, 2026
a47ab41
cleanup
grutt Feb 3, 2026
d8bfcfe
consistency
grutt Feb 3, 2026
0214225
cleanup
grutt Feb 3, 2026
eab6c3d
rm
grutt Feb 3, 2026
c953028
count
grutt Feb 3, 2026
c49e599
lint
grutt Feb 3, 2026
b8ed6b8
lint
grutt Feb 3, 2026
866456a
lint
grutt Feb 3, 2026
d8b7b80
last lint...
grutt Feb 3, 2026
6d99401
manual isort
grutt Feb 4, 2026
00448a3
consistency
grutt Feb 4, 2026
592c20a
cleanup
grutt Feb 4, 2026
ddd46cf
remove public params
grutt Feb 4, 2026
eb1fb00
remove unused cols
grutt Feb 4, 2026
d8ea590
fix lockfile
grutt Feb 4, 2026
b60049a
build
grutt Feb 4, 2026
c60af74
sort
grutt Feb 4, 2026
19810ef
ratelimit race
grutt Feb 4, 2026
921c249
py test
grutt Feb 4, 2026
5d4f152
cleanup
grutt Feb 4, 2026
6966e0a
naming
grutt Feb 4, 2026
d14701d
feedback
grutt Feb 4, 2026
e767985
last changes
grutt Feb 4, 2026
1abb563
lint
grutt Feb 4, 2026
5cacf7a
map fields
grutt Feb 5, 2026
ac942a7
chore: generate, lint
grutt Feb 6, 2026
98aee05
chore: rename migration
grutt Feb 6, 2026
f650be6
generate py
grutt Feb 6, 2026
bc7de09
generate ts
grutt Feb 6, 2026
91bcf97
lint
grutt Feb 6, 2026
db97f0c
fix test
grutt Feb 6, 2026
964d5e6
fix: flaky test
grutt Feb 6, 2026
4bfe0cc
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 6, 2026
a2242a1
generate
grutt Feb 6, 2026
40c4e20
chore: clean up schema
grutt Feb 6, 2026
43ff71d
chore: remove unused durable slots param
grutt Feb 7, 2026
77be9b1
fix: tenant scope queries
grutt Feb 7, 2026
17faada
chore: upsert to create
grutt Feb 7, 2026
269872e
chore: propagate contexts
grutt Feb 7, 2026
c88fc89
chore: sqlc helper
grutt Feb 7, 2026
8eef84e
fix: validate slots gt 0
grutt Feb 7, 2026
19575fb
chore: remove complexity
grutt Feb 7, 2026
ee2f1df
fix: tests
grutt Feb 7, 2026
fc3cf4c
ops: deadlock load test
grutt Feb 7, 2026
7d8fc87
fix: migration
grutt Feb 7, 2026
18eebc8
fix: tests
grutt Feb 7, 2026
0514831
fix: sdk mapping
grutt Feb 7, 2026
d29eeb6
revert: tenant filter
grutt Feb 7, 2026
1b0a201
chore: ci verify sed patch
grutt Feb 7, 2026
c88e85f
chore: pick a better example that uses sync
grutt Feb 7, 2026
65d785b
test: configurable overhead for deadlock load test
grutt Feb 7, 2026
dc742fe
chore: optimizations
grutt Feb 8, 2026
7a8f398
refactor: improve load test event pushing and timeout handling
grutt Feb 8, 2026
1f8931a
chore: remove deadlock worktree subproject
grutt Feb 8, 2026
7f90763
feat: multi-step migration
grutt Feb 8, 2026
a31b7ca
chore: remove unneeded cte order, align sql template
grutt Feb 8, 2026
eff0b91
fix: python type checking
grutt Feb 8, 2026
946fc74
revert: py whitespace for some reason...
grutt Feb 8, 2026
c18751c
feat: simplify slots queries
grutt Feb 8, 2026
e16bcee
chore: move queries
grutt Feb 8, 2026
a405969
fix: add py type hints this back in...
grutt Feb 8, 2026
c62a521
chore: review feedback
grutt Feb 9, 2026
af97173
flyby: drop unused webhook
grutt Feb 9, 2026
518fb0f
chore: tenant scope worker
grutt Feb 9, 2026
405c220
fix: migration
grutt Feb 9, 2026
a0d7390
chore: remove test hooks
grutt Feb 9, 2026
866bd78
fix: backwards compatible hash
grutt Feb 9, 2026
984e358
refactor: improve slot handling
grutt Feb 9, 2026
f2b69ab
chore: remove isort configuration and related linting step
grutt Feb 9, 2026
36978a8
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 9, 2026
25d0f15
chore: remove dev code
grutt Feb 9, 2026
8705ef6
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 10, 2026
db146b3
chore: lint
grutt Feb 10, 2026
990e44c
chore: don't drop old maxRuns column
grutt Feb 10, 2026
67cccb5
chore: var naming
grutt Feb 11, 2026
d79d7cd
refactor: go single worker per worker
grutt Feb 11, 2026
c4dc58c
refactor: update actionWithSlots to return error
grutt Feb 11, 2026
803695c
fix: deadlock risk
grutt Feb 11, 2026
c83b21d
fix: available slot count
grutt Feb 11, 2026
ba5d269
feat: load online migration
grutt Feb 11, 2026
4dbfb78
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 11, 2026
17cf59b
chore: lint
grutt Feb 11, 2026
dc8eb97
fix: tests
grutt Feb 11, 2026
38b958a
chore: bump migrations
grutt Feb 11, 2026
e86c5f1
test: use pgmq
grutt Feb 11, 2026
016fde8
fix: tests
grutt Feb 11, 2026
4b4d0eb
fix: flaky test
grutt Feb 11, 2026
10db10a
revert: tenant scoped query
grutt Feb 11, 2026
8b5749c
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 11, 2026
6f0f437
fix: tests
grutt Feb 11, 2026
c56c6a7
fix: lease before ticker
grutt Feb 12, 2026
9ac813f
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 12, 2026
a59a484
fix: more power for tests
grutt Feb 12, 2026
7b9e3d2
fix: valid ubicloud tags
grutt Feb 12, 2026
c927c03
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 12, 2026
e246309
revert: remove test
grutt Feb 12, 2026
6b2f526
fix: valid ubicloud
grutt Feb 12, 2026
90fa2e8
feat: sdks backward compat with old engines
grutt Feb 12, 2026
8cd2490
feat: add chaos worker script for testing deployments
grutt Feb 12, 2026
db6c758
feat: implement simple chaos test script for worker management and ta…
grutt Feb 12, 2026
1ee54f0
feat: semantic version string
grutt Feb 12, 2026
ed4cc5f
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 12, 2026
a3a53f8
chore: feedback
grutt Feb 12, 2026
1684fb8
chore: lint
grutt Feb 12, 2026
f84f723
chore: feedback
grutt Feb 13, 2026
71486d7
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 13, 2026
81e04ac
fix: legacy registered workers
grutt Feb 13, 2026
5a60017
fix: lint
grutt Feb 13, 2026
d4fd8bb
chore: remove cleanup migration (moved to separate PR #3020)
grutt Feb 13, 2026
3bf7b3b
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 13, 2026
1ca1f58
chore: generate
grutt Feb 13, 2026
16a051b
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 13, 2026
7356d69
fx: insert conflict
grutt Feb 13, 2026
1f468fe
chore: note
grutt Feb 13, 2026
55dac99
fix: correct on conflict
grutt Feb 13, 2026
b527943
revert: add query that we are actually using
grutt Feb 13, 2026
174bb13
Merge branch 'main' into feat--multiple-slot-types
grutt Feb 16, 2026
d3b3544
chore: generate
grutt Feb 16, 2026
268eef1
chore: bump migration versions
grutt Feb 16, 2026
5f6cbc7
task: generate
grutt Feb 16, 2026
33f4413
generate: py
grutt Feb 16, 2026
bc7d8c4
fix: reorder
grutt Feb 16, 2026
5b4ad7b
generate: ruby
grutt Feb 16, 2026
7827c7a
add tmate
grutt Feb 17, 2026
fd76216
test: remove tmate
grutt Feb 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
name: Release
jobs:
load:
runs-on: ubicloud-standard-4
runs-on: ubicloud-standard-8
timeout-minutes: 30
strategy:
matrix:
Expand Down
217 changes: 211 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
run: docker compose down

unit:
runs-on: ubicloud-standard-4
runs-on: ubicloud-standard-8
steps:
- uses: actions/checkout@v6
- name: Setup Go
Expand All @@ -72,7 +72,7 @@ jobs:
run: go test $(go list ./... | grep -v "quickstart") -v -failfast

integration:
runs-on: ubicloud-standard-4
runs-on: ubicloud-standard-8
env:
DATABASE_URL: postgresql://hatchet:hatchet@127.0.0.1:5431/hatchet?sslmode=disable

Expand Down Expand Up @@ -117,7 +117,7 @@ jobs:
run: docker compose down

e2e:
runs-on: ubicloud-standard-4
runs-on: ubicloud-standard-8
timeout-minutes: 30
env:
DATABASE_URL: postgresql://hatchet:hatchet@127.0.0.1:5431/hatchet?sslmode=disable
Expand Down Expand Up @@ -206,7 +206,7 @@ jobs:
run: docker compose down

e2e-pgmq:
runs-on: ubicloud-standard-4
runs-on: ubicloud-standard-8
timeout-minutes: 30
env:
DATABASE_URL: postgresql://hatchet:hatchet@127.0.0.1:5431/hatchet?sslmode=disable
Expand Down Expand Up @@ -297,7 +297,7 @@ jobs:
run: docker compose down

load:
runs-on: ubicloud-standard-4
runs-on: ubicloud-standard-8
timeout-minutes: 30
strategy:
matrix:
Expand Down Expand Up @@ -339,8 +339,213 @@ jobs:
TESTING_MATRIX_PG_VERSION: ${{ matrix.pg-version }}
TESTING_MATRIX_OPTIMISTIC_SCHEDULING: ${{ matrix.optimistic-scheduling }}

load-online-migrate:
runs-on: ubicloud-standard-8
timeout-minutes: 30
env:
DATABASE_URL: postgresql://hatchet:hatchet@127.0.0.1:5431/hatchet?sslmode=disable

steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version: "1.25"

- name: Compose
run: docker compose up -d

- name: Determine latest stable release tag
run: |
LATEST_TAG=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
if [ -z "$LATEST_TAG" ]; then
echo "ERROR: No stable release tag found"
exit 1
fi
echo "Latest stable tag: $LATEST_TAG"
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV

- name: Pull old release images
run: |
docker pull ghcr.io/hatchet-dev/hatchet/hatchet-migrate:${{ env.LATEST_TAG }}
docker pull ghcr.io/hatchet-dev/hatchet/hatchet-admin:${{ env.LATEST_TAG }}
docker pull ghcr.io/hatchet-dev/hatchet/hatchet-engine:${{ env.LATEST_TAG }}
docker pull ghcr.io/hatchet-dev/hatchet/hatchet-loadtest:${{ env.LATEST_TAG }}

- name: Run old migrations
run: |
docker run --rm --network host \
-e DATABASE_URL="${{ env.DATABASE_URL }}" \
ghcr.io/hatchet-dev/hatchet/hatchet-migrate:${{ env.LATEST_TAG }}

- name: Setup config and seed database
run: |
mkdir -p generated
docker run --rm --network host \
-v ${{ github.workspace }}/generated:/hatchet/generated \
-e DATABASE_URL="${{ env.DATABASE_URL }}" \
-e SERVER_GRPC_PORT=7077 \
-e SERVER_GRPC_BROADCAST_ADDRESS=localhost:7077 \
-e SERVER_GRPC_INSECURE=true \
-e SERVER_AUTH_COOKIE_DOMAIN=localhost \
-e SERVER_AUTH_COOKIE_INSECURE=true \
ghcr.io/hatchet-dev/hatchet/hatchet-admin:${{ env.LATEST_TAG }} \
/hatchet/hatchet-admin quickstart --skip certs --generated-config-dir /hatchet/generated

- name: Generate API token
run: |
TOKEN=$(docker run --rm --network host \
-v ${{ github.workspace }}/generated:/hatchet/generated \
-e DATABASE_URL="${{ env.DATABASE_URL }}" \
-e SERVER_GRPC_PORT=7077 \
-e SERVER_GRPC_BROADCAST_ADDRESS=localhost:7077 \
-e SERVER_GRPC_INSECURE=true \
-e SERVER_AUTH_COOKIE_DOMAIN=localhost \
-e SERVER_AUTH_COOKIE_INSECURE=true \
ghcr.io/hatchet-dev/hatchet/hatchet-admin:${{ env.LATEST_TAG }} \
/hatchet/hatchet-admin token create --config /hatchet/generated)
echo "HATCHET_CLIENT_TOKEN=$TOKEN" >> $GITHUB_ENV

- name: Start old engine
run: |
docker run -d --name hatchet-engine --network host \
-v ${{ github.workspace }}/generated:/hatchet/generated \
-e DATABASE_URL="${{ env.DATABASE_URL }}" \
-e SERVER_GRPC_PORT=7077 \
-e SERVER_GRPC_BROADCAST_ADDRESS=localhost:7077 \
-e SERVER_GRPC_INSECURE=true \
-e SERVER_AUTH_COOKIE_DOMAIN=localhost \
-e SERVER_AUTH_COOKIE_INSECURE=true \
-e SERVER_MSGQUEUE_KIND=postgres \
-e SERVER_LOGGER_LEVEL=warn \
-e SERVER_LOGGER_FORMAT=console \
-e DATABASE_LOGGER_LEVEL=warn \
-e DATABASE_LOGGER_FORMAT=console \
ghcr.io/hatchet-dev/hatchet/hatchet-engine:${{ env.LATEST_TAG }} \
/hatchet/hatchet-engine --config /hatchet/generated
echo "Waiting 30s for engine to start..."
sleep 30

- name: Start old load test
run: |
docker run -d --name hatchet-loadtest --network host \
-e HATCHET_CLIENT_TOKEN="${{ env.HATCHET_CLIENT_TOKEN }}" \
-e HATCHET_CLIENT_TLS_STRATEGY=none \
-e HATCHET_CLIENT_HOST_PORT=localhost:7077 \
ghcr.io/hatchet-dev/hatchet/hatchet-loadtest:${{ env.LATEST_TAG }} \
/hatchet/hatchet-load-test loadtest -e 10 -d 240s -w 60s -s 100

- name: Wait then apply new migrations
run: |
echo "Waiting 30s for load test to get started..."
sleep 30
echo "Applying new migrations from current branch..."
go run ./cmd/hatchet-migrate
echo "New migrations applied successfully"

- name: Wait for load test to complete
run: |
echo "Waiting for load test container to finish..."
docker wait hatchet-loadtest
EXIT_CODE=$(docker inspect hatchet-loadtest --format='{{.State.ExitCode}}')
echo "Load test exited with code: $EXIT_CODE"
if [ "$EXIT_CODE" != "0" ]; then
echo "=== Load test logs ==="
docker logs hatchet-loadtest
echo "=== Engine logs ==="
docker logs hatchet-engine
exit 1
fi
echo "Load test passed"

- name: Teardown
if: always()
run: |
docker rm -f hatchet-loadtest hatchet-engine 2>/dev/null || true
docker compose down

load-deadlock:
runs-on: ubicloud-standard-8
timeout-minutes: 30
strategy:
matrix:
migrate-strategy: ["latest"]
rabbitmq-enabled: ["true"]
pg-version: ["17-alpine"]
optimistic-scheduling: ["true", "false"]

steps:
- uses: actions/checkout@v6

- name: Install Task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version: "1.25"

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.16.1
run_install: false

- name: Go deps
run: go mod download

- name: Add go-deadlock dependency
run: go get github.com/sasha-s/go-deadlock@v0.3.6

- name: Patch sync imports to use go-deadlock (sed)
shell: bash
run: |
set -euo pipefail

# Replace ONLY the stdlib "sync" import with an alias that preserves `sync.X` call sites.
# - `import "sync"` -> `import sync "github.com/sasha-s/go-deadlock"`
# - within import blocks: `"sync"` -> `sync "github.com/sasha-s/go-deadlock"`
# NOTE: use `-i''` (no backup) for portability across GNU/BSD sed.
find . -name '*.go' -not -path './vendor/*' -print0 | xargs -0 sed -i'' -E \
-e 's/^([[:space:]]*)import[[:space:]]+"sync"[[:space:]]*$/\1import sync "github.com\/sasha-s\/go-deadlock"/' \
-e 's/^([[:space:]]*)"sync"[[:space:]]*$/\1sync "github.com\/sasha-s\/go-deadlock"/'

# Keep formatting/import grouping consistent after rewriting.
find . -name '*.go' -not -path './vendor/*' -print0 | xargs -0 gofmt -w

# Evidence in CI logs that rewriting happened (or not).
echo "Changed Go files (after patch):"
git diff --name-only -- '*.go' || true

echo ""
echo "Contents of pkg/scheduling/v1/scheduler.go after patch:"
echo "----"
cat pkg/scheduling/v1/scheduler.go
echo "----"

- name: Test (deadlock-instrumented)
run: |
# Disable gzip compression for load tests to reduce CPU overhead
# Compression adds overhead without benefit for 0kb payloads
HATCHET_CLIENT_DISABLE_GZIP_COMPRESSION=true go test -tags load ./... -p 5 -v -race -failfast -timeout 20m
env:
# This job adds go-deadlock + -race overhead; relax perf threshold to avoid flakes.
HATCHET_LOADTEST_AVERAGE_DURATION_THRESHOLD: 1s
# Give the engine a bit more time to come up under instrumentation.
HATCHET_LOADTEST_STARTUP_SLEEP: 30s
TESTING_MATRIX_MIGRATE: ${{ matrix.migrate-strategy }}
TESTING_MATRIX_RABBITMQ_ENABLED: ${{ matrix.rabbitmq-enabled }}
TESTING_MATRIX_PG_VERSION: ${{ matrix.pg-version }}
TESTING_MATRIX_OPTIMISTIC_SCHEDULING: ${{ matrix.optimistic-scheduling }}

rampup:
runs-on: ubicloud-standard-4
runs-on: ubicloud-standard-8
timeout-minutes: 30
strategy:
matrix:
Expand Down
17 changes: 16 additions & 1 deletion api-contracts/dispatcher/dispatcher.proto
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ service Dispatcher {
rpc ReleaseSlot(ReleaseSlotRequest) returns (ReleaseSlotResponse) {}

rpc UpsertWorkerLabels(UpsertWorkerLabelsRequest) returns (UpsertWorkerLabelsResponse) {}

// GetVersion returns the dispatcher protocol version as a simple integer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if it's possible, shouldn't we return the tag instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ya we do... comment drift

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wait but the tag isn't an int, it needs to be a string right?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oooh nvm, I see what you mean - I was looking at this commit, not the full diff 👍

// SDKs use this to determine feature support (e.g. slot_config registration).
// Old engines that do not implement this RPC will return UNIMPLEMENTED.
rpc GetVersion(GetVersionRequest) returns (GetVersionResponse) {}
}

message WorkerLabels {
Expand Down Expand Up @@ -67,7 +72,8 @@ message WorkerRegisterRequest {
// (optional) the services for this worker
repeated string services = 3;

// (optional) the number of slots this worker can handle
// (optional) the number of default slots this worker can handle
// deprecated: use slot_config instead
optional int32 slots = 4;

// (optional) worker labels (i.e. state or other metadata)
Expand All @@ -79,6 +85,9 @@ message WorkerRegisterRequest {
// (optional) information regarding the runtime environment of the worker
optional RuntimeInfo runtime_info = 7;

// (optional) slot config for this worker (slot_type -> units)
map<string, int32> slot_config = 9;

}

message WorkerRegisterResponse {
Expand Down Expand Up @@ -403,3 +412,9 @@ message ReleaseSlotRequest {
}

message ReleaseSlotResponse {}

message GetVersionRequest {}

message GetVersionResponse {
string version = 1;
}
24 changes: 18 additions & 6 deletions api-contracts/openapi/components/schemas/worker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,19 @@ WorkerType:
- MANAGED
- WEBHOOK

WorkerSlotConfig:
type: object
description: Slot availability and limits for a slot type.
properties:
available:
type: integer
description: The number of available units for this slot type.
limit:
type: integer
description: The maximum number of units for this slot type.
required:
- limit

RegisteredWorkflow:
type: object
properties:
Expand Down Expand Up @@ -136,12 +149,11 @@ Worker:
- ACTIVE
- INACTIVE
- PAUSED
maxRuns:
type: integer
description: The maximum number of runs this worker can execute concurrently.
availableRuns:
type: integer
description: The number of runs this worker can execute concurrently.
slotConfig:
type: object
description: Slot availability and limits for this worker (slot_type -> { available, limit }).
additionalProperties:
$ref: "#/WorkerSlotConfig"
dispatcherId:
type: string
description: "the id of the assigned dispatcher, in UUID format"
Expand Down
8 changes: 8 additions & 0 deletions api-contracts/openapi/components/schemas/workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,14 @@ Step:
timeout:
type: string
description: The timeout of the step.
isDurable:
type: boolean
description: Whether the step is durable.
slotRequests:
type: object
description: Slot requests for the step (slot_type -> units).
additionalProperties:
type: integer
children:
type: array
items:
Expand Down
2 changes: 2 additions & 0 deletions api-contracts/v1/workflows.proto
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,8 @@ message CreateTaskOpts {
repeated Concurrency concurrency = 11; // (optional) the task concurrency options
optional TaskConditions conditions = 12; // (optional) the task conditions for creating the task
optional string schedule_timeout = 13; // (optional) the timeout for the schedule
bool is_durable = 14; // (optional) whether the task is durable
map<string, int32> slot_requests = 15; // (optional) slot requests (slot_type -> units)
}

message CreateTaskRateLimit {
Expand Down
3 changes: 2 additions & 1 deletion api/v1/server/handlers/v1/filters/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ import (
"fmt"

"github.com/google/uuid"
"github.com/labstack/echo/v4"

"github.com/hatchet-dev/hatchet/api/v1/server/oas/apierrors"
"github.com/hatchet-dev/hatchet/api/v1/server/oas/gen"
"github.com/hatchet-dev/hatchet/api/v1/server/oas/transformers/v1"
v1 "github.com/hatchet-dev/hatchet/pkg/repository"
"github.com/hatchet-dev/hatchet/pkg/repository/sqlcv1"
"github.com/labstack/echo/v4"
)

func (t *V1FiltersService) V1FilterCreate(ctx echo.Context, request gen.V1FilterCreateRequestObject) (gen.V1FilterCreateResponseObject, error) {
Expand Down
Loading
Loading