Skip to content

Commit 2dd28f7

Browse files
author
Nick Ethier
committed
internal/plugin: fix setting WorkflowIDConflictPolicy from proto option
1 parent 0f5c34f commit 2dd28f7

File tree

6 files changed

+46
-39
lines changed

6 files changed

+46
-39
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
1414
### Changed
1515

1616
### Fixed
17-
17+
- [#117](https://github.com/cludden/protoc-gen-go-temporal/pull/117) fix for code generation when `workflow_id_conflict_policy` proto option is set
1818

1919

2020
# [1.17.2](https://github.com/cludden/protoc-gen-go-temporal/releases/tag/v1.17.2) - 2025-08-02

gen/test/option/v1/option.pb.go

Lines changed: 18 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/test/option/v1/option_temporal.pb.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/plugin/client.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2384,9 +2384,23 @@ func (m *Manifest) genWorkflowOptions(f *j.File, workflow protoreflect.FullName,
23842384

23852385
// set WorkflowIDConflictPolicy
23862386
if !child {
2387-
g.If(j.Id("v").Op(":=").Id("o").Dot("workflowIdConflictPolicy"), j.Id("v").Op("!=").Qual(enumsPkg, "WORKFLOW_ID_CONFLICT_POLICY_UNSPECIFIED")).Block(
2387+
idConflictPolicy := g.If(j.Id("v").Op(":=").Id("o").Dot("workflowIdConflictPolicy"), j.Id("v").Op("!=").Qual(enumsPkg, "WORKFLOW_ID_CONFLICT_POLICY_UNSPECIFIED")).Block(
23882388
j.Id("opts").Dot("WorkflowIDConflictPolicy").Op("=").Id("v"),
23892389
)
2390+
if p := opts.GetWorkflowIdConflictPolicy(); p != enums.WORKFLOW_ID_CONFLICT_POLICY_UNSPECIFIED {
2391+
idConflictPolicy.Else().If(j.Id("opts").Dot("WorkflowIDConflictPolicy").Op("==").Qual(enumsPkg, "WORKFLOW_ID_CONFLICT_POLICY_UNSPECIFIED")).BlockFunc(func(g *j.Group) {
2392+
var policy string
2393+
switch p {
2394+
case enums.WORKFLOW_ID_CONFLICT_POLICY_FAIL:
2395+
policy = "WORKFLOW_ID_CONFLICT_POLICY_FAIL"
2396+
case enums.WORKFLOW_ID_CONFLICT_POLICY_TERMINATE_EXISTING:
2397+
policy = "WORKFLOW_ID_CONFLICT_POLICY_TERMINATE_EXISTING"
2398+
case enums.WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING:
2399+
policy = "WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING"
2400+
}
2401+
g.Id("opts").Dot("WorkflowIDConflictPolicy").Op("=").Qual(enumsPkg, policy)
2402+
})
2403+
}
23902404
}
23912405

23922406
// set TaskQueue
@@ -2574,21 +2588,6 @@ func (m *Manifest) genWorkflowOptions(f *j.File, workflow protoreflect.FullName,
25742588
}
25752589
}
25762590

2577-
if p := opts.GetWorkflowIdConflictPolicy(); p != enums.WORKFLOW_ID_CONFLICT_POLICY_UNSPECIFIED {
2578-
g.If(j.Id("opts").Dot("workflowIdConflictPolicy").Op("!=").Qual(enumsPkg, "WORKFLOW_ID_CONFLICT_POLICY_UNSPECIFIED")).BlockFunc(func(g *j.Group) {
2579-
var policy string
2580-
switch p {
2581-
case enums.WORKFLOW_ID_CONFLICT_POLICY_FAIL:
2582-
policy = "WORKFLOW_ID_CONFLICT_POLICY_FAIL"
2583-
case enums.WORKFLOW_ID_CONFLICT_POLICY_TERMINATE_EXISTING:
2584-
policy = "WORKFLOW_ID_CONFLICT_POLICY_TERMINATE_EXISTING"
2585-
case enums.WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING:
2586-
policy = "WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING"
2587-
}
2588-
g.Id("opts").Dot("WorkflowIdConflictPolicy").Op("=").Qual(enumsPkg, policy)
2589-
})
2590-
}
2591-
25922591
g.Return(j.Id("opts"), j.Nil())
25932592
})
25942593

test/option/main_test.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,11 @@ func (s *OptionSuite) TestChildWorkflowOptions() {
215215
SearchAttributes: map[string]any{
216216
"name": "foo",
217217
},
218-
TaskQueue: "option-v2",
219-
WaitForCancellation: true,
220-
WorkflowID: "workflow-with-input:foo",
221-
WorkflowIDReusePolicy: enums.WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY,
218+
TaskQueue: "option-v2",
219+
WaitForCancellation: true,
220+
WorkflowID: "workflow-with-input:foo",
221+
WorkflowIDReusePolicy: enums.WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY,
222+
222223
WorkflowExecutionTimeout: time.Second * 600,
223224
WorkflowRunTimeout: time.Second * 300,
224225
WorkflowTaskTimeout: time.Second * 10,
@@ -538,6 +539,7 @@ func (s *OptionSuite) TestWorkflowOptions() {
538539
"name": "foo",
539540
},
540541
TaskQueue: "option-v2",
542+
WorkflowIDConflictPolicy: enums.WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING,
541543
WorkflowIDReusePolicy: enums.WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY,
542544
WorkflowExecutionTimeout: time.Second * 600,
543545
WorkflowRunTimeout: time.Second * 300,
@@ -561,6 +563,7 @@ func (s *OptionSuite) TestWorkflowOptions() {
561563
},
562564
TaskQueue: "option-v2",
563565
WorkflowIDReusePolicy: enums.WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE,
566+
WorkflowIDConflictPolicy: enums.WORKFLOW_ID_CONFLICT_POLICY_FAIL,
564567
WorkflowExecutionTimeout: time.Second * 599,
565568
WorkflowRunTimeout: time.Second * 299,
566569
WorkflowTaskTimeout: time.Second * 9,
@@ -577,13 +580,15 @@ func (s *OptionSuite) TestWorkflowOptions() {
577580
},
578581
TaskQueue: "option-v2",
579582
WorkflowIDReusePolicy: enums.WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE,
583+
WorkflowIDConflictPolicy: enums.WORKFLOW_ID_CONFLICT_POLICY_FAIL,
580584
WorkflowExecutionTimeout: time.Second * 599,
581585
WorkflowRunTimeout: time.Second * 299,
582586
WorkflowTaskTimeout: time.Second * 9,
583587
}),
584588
optionv1.NewWorkflowWithInputOptions().
585589
WithExecutionTimeout(time.Second * 599).
586590
WithID("foo").
591+
WithWorkflowIdConflictPolicy(enums.WORKFLOW_ID_CONFLICT_POLICY_FAIL).
587592
WithIDReusePolicy(enums.WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE).
588593
WithRetryPolicy(&temporal.RetryPolicy{
589594
MaximumAttempts: 4,

test/option/proto/test/option/v1/option.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ service Test {
4242
task_queue: "option-v2"
4343
task_timeout: {seconds: 10}
4444
wait_for_cancellation: true
45+
workflow_id_conflict_policy: WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING
4546

4647
update: {ref: 'UpdateWithInput'}
4748
};

0 commit comments

Comments
 (0)