• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

run-llama / workflows-py / 21763545509
81%

Build:
DEFAULT BRANCH: main
Ran 06 Feb 2026 07:42PM UTC
Jobs 0
Files 0
Run time –
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
  cancel
21763545509

push

github

web-flow
Fix concurrent step cancellation regression in 2.14.0 (#340)

* Add xfailing test for concurrent step cancellation regression in 2.14.0

This test exposes a regression introduced in 2.14.0:
- In 2.13.1: A single asyncio.sleep(0) yield after stop_step returns is
  sufficient for cancellation to propagate, blocking other_step's write.
- In 2.14.0: The yield is not enough - other_step's write still goes through.

Test sequence:
1. stop_step returns StopEvent
2. Single yield point (asyncio.sleep(0))
3. other_step writes to stream

In 2.13.1: write is blocked (PASS)
In 2.14.0: write goes through (FAIL)

The architectural change from asyncio.Queue to tick_buffer + wait_for_next_task
in commit 45e7614 ("Remove asyncio queue from control_loop #315") changed the
timing characteristics, requiring longer delays for cancellation to take effect.

In 2.13.1, workers immediately put ticks in the queue via queue_tick(), and
the continuous _pull() task meant quick processing. In 2.14.0, workers return
results collected by wait_for_next_task, adding overhead that delays cancellation.

Related: https://llama-index.slack.com/archives/C0A3TFERFHV/p1770391664693399

https://claude.ai/code/session_01VWUvDsJ88uaVn4jT68Ny8X

* Fix concurrent step cancellation regression in 2.14.0

When a worker returns a StopEvent, immediately cancel other running
workers before adding the tick to the buffer. This restores the 2.13.1
behavior where a single asyncio.sleep(0) yield after stop_step returns
is sufficient for cancellation to propagate.

The regression was introduced in commit 45e7614 ("Remove asyncio queue
from control_loop #315") which changed the architecture from asyncio.Queue
to tick_buffer + wait_for_next_task. The new architecture had more overhead,
causing cancellation to take longer.

The fix checks if the completed worker's result contains a StopEvent, and
if so, calls cleanup_tasks() immediately to cancel other workers before
they can write to the event stream.

Also rem... (continued)
Source Files on build 21763545509
Detailed source file information is not available for this build.
  • Back to Repo
  • Github Actions Build #21763545509
  • 6ece7970 on github
  • Prev Build on main (#21741344329)
  • Next Build on main (#21763676484)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc