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
This commit is contained in:
Gabe Ruttner
2024-06-07 10:57:57 -07:00
committed by GitHub
parent e0441a38a1
commit bbc4e58dd9
70 changed files with 3027 additions and 395 deletions

View File

@@ -81,6 +81,7 @@ func Run(ctx context.Context, cf *loader.ConfigLoader) error {
ticker.WithRepository(sc.EngineRepository),
ticker.WithLogger(sc.Logger),
ticker.WithTenantAlerter(sc.TenantAlerter),
ticker.WithEntitlementsRepository(sc.EntitlementRepository),
)
if err != nil {
@@ -102,6 +103,7 @@ func Run(ctx context.Context, cf *loader.ConfigLoader) error {
events.WithMessageQueue(sc.MessageQueue),
events.WithRepository(sc.EngineRepository),
events.WithLogger(sc.Logger),
events.WithEntitlementsRepository(sc.EntitlementRepository),
)
if err != nil {
return fmt.Errorf("could not create events controller: %w", err)
@@ -189,6 +191,7 @@ func Run(ctx context.Context, cf *loader.ConfigLoader) error {
dispatcher.WithMessageQueue(sc.MessageQueue),
dispatcher.WithRepository(sc.EngineRepository),
dispatcher.WithLogger(sc.Logger),
dispatcher.WithEntitlementsRepository(sc.EntitlementRepository),
)
if err != nil {
return fmt.Errorf("could not create dispatcher: %w", err)
@@ -211,6 +214,7 @@ func Run(ctx context.Context, cf *loader.ConfigLoader) error {
sc.EngineRepository.Log(),
),
ingestor.WithMessageQueue(sc.MessageQueue),
ingestor.WithEntitlementsRepository(sc.EntitlementRepository),
)
if err != nil {
return fmt.Errorf("could not create ingestor: %w", err)
@@ -219,6 +223,7 @@ func Run(ctx context.Context, cf *loader.ConfigLoader) error {
adminSvc, err := admin.NewAdminService(
admin.WithRepository(sc.EngineRepository),
admin.WithMessageQueue(sc.MessageQueue),
admin.WithEntitlementsRepository(sc.EntitlementRepository),
)
if err != nil {
return fmt.Errorf("could not create admin service: %w", err)