Skip to content

Support Workflow Update as a Nexus Operation#783

Open
Evanthx wants to merge 4 commits into
mainfrom
nexus-update-workflow
Open

Support Workflow Update as a Nexus Operation#783
Evanthx wants to merge 4 commits into
mainfrom
nexus-update-workflow

Conversation

@Evanthx

@Evanthx Evanthx commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

The linter failed as I added three StartUpdateWorkflowAsync overloads to ITemporalNexusClient and that gets flagged. I suppressed the errors, just calling this out here to make sure that was the right thing to do. My understanding is that when PackageValidationBaselineVersion gets bumped the suppressions will remove themselves.

@Evanthx Evanthx requested a review from a team as a code owner July 10, 2026 23:00
@Evanthx Evanthx force-pushed the nexus-update-workflow branch from f89c889 to 0731aa9 Compare July 10, 2026 23:37
@jmaeagle99 jmaeagle99 self-assigned this Jul 11, 2026
{
DevServerOptions = new()
{
DownloadVersion = "v1.7.2-standalone-nexus-operations",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why did you change this? I think it will break SANO tests

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It was still there but moved a few lines lower. But I tested without these changes and things still do work so I don't think these were needed after all and removed them

/// Gets a value indicating whether this environment supports UpdateWorkflow-backed Nexus
/// operations, which require the server to deliver update-completion callbacks
/// (<c>history.enableUpdateCallbacks</c>) together with a Nexus callback-endpoint template.
/// The pinned local dev server does not yet support these; once it does, add those flags to the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The local dev server should support this, if it doesn't we can't merge this anyway so this logic seems unnecessary since the local dev server needs to support it

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Removed

public string WorkflowId { get; }

/// <summary>
/// Gets the workflow run ID extracted from the operation token. May be empty.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This should never be empty here. We should read the value the server gives back on the update response.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Comment removed. I was reading the spec and that said the RunID might be empty in a Workflow Update Token - so that is why I had accounted for that use case.

Comment thread src/Temporalio/Nexus/ITemporalNexusClient.cs Outdated
});
}

private void SkipIfUpdateCallbacksUnsupported()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looking at the other dotnet SDK, we don't skip tests like this and I think it is a dangerous to have logic like this in the tests since we might accidentally skip these tests and loose there coverage. I'll defer to @jmaeagle99 but my preference is to not have this logic

/// capable server to run them — no code change here required.
/// </para>
/// </summary>
public class NexusUpdateOperationTests : WorkflowEnvironmentTestBase

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think we are missing some tests for if the update ID is already completed? Two things I think we should test are sending two Nexus Operations, one after the other has completed, that use the same update ID.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If we already have these tests then please feel free to ignore

@Evanthx Evanthx force-pushed the nexus-update-workflow branch from 84cbc08 to 59a284e Compare July 14, 2026 17:48
@Quinn-With-Two-Ns

Copy link
Copy Markdown
Contributor

The dev server is missing the DC for this feature https://github.com/temporalio/sdk-go/pull/2417/files#diff-265865b1cb4e06ecf08b23b205f709fb4281ba4d4804cbe46f8b91a725073fd5R171 and then we can remove all the test skipping

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.

3 participants