conductor-oss / conductor-oss/csharp-sdk
DynamicFork sets deprecated dynamicForkJoinTasksParam field — should use dynamicForkTasksParam
- Dominant language
- C#
- Stars
- 54
- Forks
- 23
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 2
Description
## Summary
`DynamicFork.UpdateWorkflowTask()` calls `SetDynamicForkJoinTasksParam()` which sets the deprecated `dynamicForkJoinTasksParam` JSON field. The current field is `dynamicForkTasksParam`. The deprecated field still works today (the server falls back to it), but it will be removed in a future server version.
Tested against: **Conductor OSS 3.32.0-rc.9**
## Root Cause
```csharp
// Conductor/Definition/TaskType/DynamicFork.cs:39-43
public override void UpdateWorkflowTask(WorkflowTask task)
{
task.SetDynamicForkJoinTasksParam("forkedTasks"); // ← deprecated field
task.SetDynamicForkTasksInputParamName("forkedTasksInputs");
}
```
`SetDynamicForkJoinTasksParam()` sets `WorkflowTask.DynamicForkJoinTasksParam`, which serializes as `"dynamicForkJoinTasksParam"` — the deprecated field name.
The current (non-deprecated) field is `"dynamicForkTasksParam"`, backed by `WorkflowTask.DynamicForkTasksParam`.
## Server Behavior
`ForkJoinDynamicTaskMapper.java:156` reads `getDynamicForkTasksParam()` first, then falls back to `getDynamicForkJoinTasksParam()` for backward compatibility. The deprecated field currently works, but the fallback path will eventually be removed.
## Fix
Add a setter for the non-deprecated field in `WorkflowTask` and use it in `DynamicFork`:
```csharp
// WorkflowTask.cs — add:
public void SetDynamicForkTasksParam(string dynamicForkTasksParam)
{
this.DynamicForkTasksParam = dynamicForkTasksParam;
}
// DynamicFork.cs — change:
public override void UpdateWorkflowTask(WorkflowTask task)
{
task.SetDynamicForkTasksParam("forkedTasks"); // non-deprecated
task.SetDynamicForkTasksInputParamName("forkedTasksInputs");
}
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with Conductor/Definition/TaskType/DynamicFork.cs and WorkflowTask.cs, then compare the existing dynamic fork setters and their serialized field names. Done means UpdateWorkflowTask uses the non-deprecated dynamicForkTasksParam field while preserving the forkedTasksInputs setting; verify the resulting workflow task payload against the current field name.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 84/100