Skip to content

Commit

Permalink
Allow eager workflow start on versioned worker (#1255)
Browse files Browse the repository at this point in the history
  • Loading branch information
Quinn-With-Two-Ns committed Oct 5, 2023
1 parent a001e5f commit df09c35
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 21 deletions.
3 changes: 2 additions & 1 deletion internal/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -609,7 +609,8 @@ type (

// EnableEagerStart - request eager execution for this workflow, if a local worker is available.
//
// WARNING: Do not use in combination with a versioned task queue.
// WARNING: Eager start does not respect worker versioning. An eagerly started workflow may run on
// any available local worker even if that worker is not in the default build ID set.
//
// NOTE: Experimental
EnableEagerStart bool
Expand Down
4 changes: 0 additions & 4 deletions internal/internal_eager_workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,6 @@ type eagerWorkflowDispatcher struct {

// registerWorker registers a worker that can be used for eager workflow dispatch
func (e *eagerWorkflowDispatcher) registerWorker(worker *workflowWorker) {
// Currently eager workflow start does not work with versioning
if worker.executionParameters.UseBuildIDForVersioning {
return
}
e.lock.Lock()
defer e.lock.Unlock()
e.workersByTaskQueue[worker.executionParameters.TaskQueue] = append(e.workersByTaskQueue[worker.executionParameters.TaskQueue], worker.worker)
Expand Down
16 changes: 0 additions & 16 deletions internal/internal_eager_workflow_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,19 +114,3 @@ func TestEagerWorkflowExecutor(t *testing.T) {
exec.handleResponse(&workflowservice.PollWorkflowTaskQueueResponse{})
})
}

func TestEagerWorkflowDispatchAndVersioning(t *testing.T) {
dispatcher := &eagerWorkflowDispatcher{
workersByTaskQueue: make(map[string][]eagerWorker),
}
dispatcher.registerWorker(&workflowWorker{
executionParameters: workerExecutionParameters{TaskQueue: "task-queue", UseBuildIDForVersioning: true},
})

request := &workflowservice.StartWorkflowExecutionRequest{
TaskQueue: &taskqueuepb.TaskQueue{Name: "task-queue"},
}
exec := dispatcher.applyToRequest(request)
require.Nil(t, exec)
require.False(t, request.GetRequestEagerExecution())
}

0 comments on commit df09c35

Please sign in to comment.