Skip to content

Disable single-batch workflow processing by default - #2121

Merged
VegetarianOrc merged 1 commit into
mainfrom
amazzeo/disable-single-batch-default
Nov 13, 2026
Merged

VegetarianOrc merged 1 commit into
mainfrom
amazzeo/disable-single-batch-default

Conversation

@VegetarianOrc

Copy link
Copy Markdown
Contributor

Summary

Disable single-batch workflow activation processing (workflow logic flag 2) by default. Unflagged workflows retain legacy signal/condition-wait ordering and cancellation behavior instead of adopting single-batch behavior on their next non-replay activation. Histories that already recorded flag 2 continue to honor it.

  • Keep the implementation and replay support for flag 2 unchanged.
  • Explicitly enable flag 2 in tests that exercise single-batch processing, including cancellation and reset/update tracing regressions.
  • Restore the legacy-default expectation for cancellation of completed synchronous Nexus operations.
  • Add a release-note fragment.

The experimental asyncio.timeout change is not included.

Refs #2116.

Validation

  • poe test: 1,847 passed, 10 skipped on Python 3.13.7 with the local workflow environment.
  • Targeted Ruff import and formatting checks passed for all four modified Python files.
  • git diff --check passed.
  • Full lint/type checks were not run.

The test run emitted warnings and shutdown diagnostics similar to the earlier baseline run, but no test failures.

@VegetarianOrc
VegetarianOrc requested a review from a team as a code owner November 13, 2026 00:35
@VegetarianOrc
VegetarianOrc merged commit bc45117 into main Nov 13, 2026
33 of 36 checks passed
@VegetarianOrc
VegetarianOrc deleted the amazzeo/disable-single-batch-default branch November 13, 2026 23:58
DABH added a commit to temporalio/documentation that referenced this pull request Nov 14, 2026
temporalio/sdk-python#2121 turns single-batch activation processing off
by default again for 1.36.1, which brings back the reused span ID on a
reset's reapplied handler. The install command now pins 1.36.0 and the
reset note says why, matching the sample's pin.
DABH added a commit to temporalio/samples-python that referenced this pull request Nov 14, 2026
* Pin the Arize sample to temporalio 1.36.0

The reset case depends on 1.36.0 applying a Workflow Task's jobs as a
single batch, so a reapplied update's span gets a fresh ID instead of
reusing the original run's. temporalio/sdk-python#2121 turns that off by
default again for 1.36.1 while the cancellation semantics are settled in
temporalio/sdk-python#2124, so the next release would bring the
duplicate IDs back. The pyproject comment and the README say why the pin
exists and when to lift it.

* clean up comments

* clean up comments
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.

2 participants