Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Workflow completion command reordering #270

Merged
merged 2 commits into from
Jun 11, 2024

Conversation

cretz
Copy link
Member

@cretz cretz commented Jun 10, 2024

What was changed

See temporalio/features#481. Like other core-based SDKs, .NET put the workflow complete command on the command list immediately when it occurred from workflow return. And then it truncated anything else after that. So coroutines that completed in the same task but after workflow method return were dropped.

This issue changes that behavior to enure same-task-post-complete coroutine commands are preserved. The approach that is taken now is that, if we are not replaying (or replaying w/ SDK flag set) and there are commands after return, move the return to the end and set an SDK flag. Otherwise do as done today. This not only ensures that workflow completion comes last, but the checking for whether any post-complete commands even exist allow us to not set this flag.

(there is also a somewhat unrelated fix to a flaky user-client-replacement test)

Checklist

  1. Closes [Feature Request] Do not set workflow completion until after all coroutines have settled in the task #249

@cretz cretz requested a review from a team June 10, 2024 18:20
@@ -1402,6 +1385,71 @@ private string GetStackTrace()
}).Where(s => !string.IsNullOrEmpty(s)).Select(s => $"Task waiting at:\n{s}"));
}

private void ApplyCompletionCommandReordering(
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking for review of this method

@cretz cretz force-pushed the workflow-complete-reorder branch from 46bf93f to f221849 Compare June 10, 2024 18:27
@cretz cretz force-pushed the workflow-complete-reorder branch from f221849 to 046023c Compare June 10, 2024 18:59
@cretz
Copy link
Member Author

cretz commented Jun 11, 2024

Thanks for looking at this! Not sure anyone else is, so I am merging.

@cretz cretz merged commit 3c6c7ac into temporalio:main Jun 11, 2024
7 checks passed
@cretz cretz deleted the workflow-complete-reorder branch June 11, 2024 13:15
@cretz cretz mentioned this pull request Jun 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature Request] Do not set workflow completion until after all coroutines have settled in the task
3 participants