From 52a7ae78a4832f99ff1a80dfb5d67c78eb4fad08 Mon Sep 17 00:00:00 2001 From: abelanger5 Date: Fri, 2 May 2025 13:38:25 -0400 Subject: [PATCH] fix: panic in dispatcher (#1663) --- internal/services/dispatcher/v1/server.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/internal/services/dispatcher/v1/server.go b/internal/services/dispatcher/v1/server.go index 2d2d9b7fc..afd2db04a 100644 --- a/internal/services/dispatcher/v1/server.go +++ b/internal/services/dispatcher/v1/server.go @@ -8,6 +8,7 @@ import ( "sync" "time" + "github.com/google/uuid" "github.com/jackc/pgx/v5/pgtype" "github.com/rs/zerolog" "google.golang.org/grpc/codes" @@ -24,6 +25,11 @@ func (d *DispatcherServiceImpl) RegisterDurableEvent(ctx context.Context, req *c tenant := ctx.Value("tenant").(*dbsqlc.Tenant) tenantId := sqlchelpers.UUIDToStr(tenant.ID) + if _, err := uuid.Parse(req.TaskId); err != nil { + d.l.Error().Msgf("task id %s is not a valid uuid", req.TaskId) + return nil, status.Error(codes.InvalidArgument, "task id is not a valid uuid") + } + task, err := d.repo.Tasks().GetTaskByExternalId(ctx, tenantId, req.TaskId, false) if err != nil { @@ -233,6 +239,11 @@ func (d *DispatcherServiceImpl) ListenForDurableEvent(server contracts.V1Dispatc return } + if _, err = uuid.Parse(req.TaskId); err != nil { + d.l.Warn().Msgf("task id %s is not a valid uuid", req.TaskId) + continue + } + // FIXME: buffer/batch this to make it more efficient task, err := d.repo.Tasks().GetTaskByExternalId(ctx, tenantId, req.TaskId, false)