conductor-oss / conductor-oss/csharp-sdk

DynamicFork sets deprecated dynamicForkJoinTasksParam field — should use dynamicForkTasksParam

Open Beginner friendly
#159 0 comments 0 reactions 0 assignees View on GitHub
bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.