Skip to content

[Bridge] Folded Nexus operation progress onto the next Workflow Task. - #58

Draft
moetemp wants to merge 2 commits into
moe/bridge/v2/n5-progress-endpointfrom
moe/bridge/v2/n6-fold-progress
Draft

moetemp wants to merge 2 commits into
moe/bridge/v2/n5-progress-endpointfrom
moe/bridge/v2/n6-fold-progress

Conversation

@moetemp

@moetemp moetemp commented Oct 14, 2026

Copy link
Copy Markdown
Owner

What changed?

This PR folds Nexus operation progress onto the caller's next Workflow Task scheduled event, as one more kind of carried state on Jetty's Workflow Task hook (moetemp/temporal#55).

  • nexusProgressCarrier joins taskCarriers. The hook's rules apply: one follow-up task, no progress on a heartbeat task or its retry, the failover hold.
  • The Workflow keeps a TaskCarriedIndex keyed by scheduled event ID. The event lists progress by scheduled event ID, not by key order.
  • nexusoperation.progressMinInterval (1 s) rate-limits tasks that progress schedules.
  • A passive cluster forwards deliveries to the active one.

It replaces the Bridge half of moetemp/temporal#39. The hook, the heartbeat hold and the failover hold now live in Jetty.

Why?

Progress rides the scheduled event (DD-34), and a burst costs at most one extra task (DD-55). SDKs replay a heartbeat chain differently from live, so progress there could land in another activation (DD-52).

How did you test it?

Link to a test plan if any -

  • Unit Tests
  • Staging
  • End to End Tests

Functional TestNexusOperationProgress* on both caller kinds, TestNexusProgressAcrossFailoverConversion, and the xdc TestNexusProgressForwardingSuite.

Nexus progress is one more kind of carried state on the shared Workflow Task hook. It keeps its keying by scheduled event ID, its rate limit and its nexus_operation_progress field.
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.

1 participant