Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 0 additions & 4 deletions internal/services/dispatcher/server_v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -669,10 +669,6 @@ func (d *DispatcherServiceImpl) handleTriggerRuns(
})
}

if populateErr := d.repo.Triggers().PopulateExternalIdsForWorkflow(ctx, invocation.tenantId, triggerOpts); populateErr != nil {
return status.Errorf(codes.Internal, "failed to populate external ids for workflow: %v", populateErr)
}

ingestionResult, err := d.repo.DurableEvents().IngestDurableTaskEvent(ctx, v1.IngestDurableTaskEventOpts{
BaseIngestEventOpts: &v1.BaseIngestEventOpts{
TenantId: invocation.tenantId,
Expand Down
4 changes: 4 additions & 0 deletions pkg/repository/durable_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -1064,6 +1064,10 @@ func (r *durableEventsRepository) IngestDurableTaskEvent(ctx context.Context, op

switch opts.Kind {
case sqlcv1.V1DurableEventLogKindRUN:
if populateErr := r.populateExternalIdsForWorkflow(ctx, tx, tenantId, opts.TriggerRuns.TriggerOpts); populateErr != nil {
return nil, fmt.Errorf("failed to populate external ids for workflow: %w", populateErr)
}
Comment on lines +1067 to +1069

innerOpts := make([]GetOrCreateLogEntryOpt, len(opts.TriggerRuns.TriggerOpts))

nonSkipOffset := int64(0)
Expand Down
32 changes: 18 additions & 14 deletions pkg/repository/ids.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,22 @@ func (c *ChildWorkflowSignalCreatedData) Bytes() []byte {
// GenerateExternalIdsForWorkflow generates external ids and additional looks up child workflows and whether they
// already exist.
func (s *sharedRepository) PopulateExternalIdsForWorkflow(ctx context.Context, tenantId uuid.UUID, opts []*WorkflowNameTriggerOpts) error {
tx, commit, rollback, err := sqlchelpers.PrepareTx(ctx, s.pool, s.l)

if err != nil {
return err
}

defer rollback()

if err := s.populateExternalIdsForWorkflow(ctx, tx, tenantId, opts); err != nil {
return err
}

return commit(ctx)
}

func (s *sharedRepository) populateExternalIdsForWorkflow(ctx context.Context, tx sqlcv1.DBTX, tenantId uuid.UUID, opts []*WorkflowNameTriggerOpts) error {
// get child workflow data first
optsWithParents := make([]*WorkflowNameTriggerOpts, 0, len(opts))

Expand All @@ -99,7 +115,7 @@ func (s *sharedRepository) PopulateExternalIdsForWorkflow(ctx context.Context, t
}

if len(optsWithParents) > 0 {
err := s.generateExternalIdsForChildWorkflows(ctx, tenantId, optsWithParents)
err := s.generateExternalIdsForChildWorkflows(ctx, tx, tenantId, optsWithParents)

if err != nil {
return err
Expand All @@ -109,15 +125,7 @@ func (s *sharedRepository) PopulateExternalIdsForWorkflow(ctx context.Context, t
return nil
}

func (s *sharedRepository) generateExternalIdsForChildWorkflows(ctx context.Context, tenantId uuid.UUID, opts []*WorkflowNameTriggerOpts) error {
tx, commit, rollback, err := sqlchelpers.PrepareTx(ctx, s.pool, s.l)

if err != nil {
return err
}

defer rollback()

func (s *sharedRepository) generateExternalIdsForChildWorkflows(ctx context.Context, tx sqlcv1.DBTX, tenantId uuid.UUID, opts []*WorkflowNameTriggerOpts) error {
externalIds := make([]uuid.UUID, 0, len(opts))
spawnKeyToOpt := make(map[string]*WorkflowNameTriggerOpts)

Expand Down Expand Up @@ -262,9 +270,5 @@ func (s *sharedRepository) generateExternalIdsForChildWorkflows(ctx context.Cont
return err
}

if err := commit(ctx); err != nil {
return err
}

return nil
}
Loading