Skip to content

Conversation

@radik878
Copy link
Contributor

@radik878 radik878 commented Nov 27, 2025

This change fixes a stall in the legacy blob sidecar conversion pipeline where tasks
that arrived during an active batch could remain unprocessed indefinitely after that
batch completed, unless a new external event arrived.

The root cause was that the loop did not restart processing in the case <-done:
branch even when txTasks had accumulated work, relying instead on a future event
to retrigger the scheduler. This behavior is inconsistent with the billy task pipeline,
which immediately chains to the next task via runNextBillyTask() without requiring
an external trigger.

The fix adds a symmetric restart path in case <-done: that checks len(txTasks) > 0,
clones the accumulated tasks, clears the queue, and launches a new run with a fresh
done and interrupt.

This preserves batching semantics, prevents indefinite blocking of callers of convert(),
and remains safe during shutdown since the quit path still interrupts and awaits the
active batch. No public interfaces or logging were changed.

@rjl493456442 rjl493456442 changed the title core/txpool/blobpool: auto-start next conversion batch after completion if pending core/txpool/blobpool: auto-start next conversion batch after completion Nov 27, 2025
@rjl493456442 rjl493456442 added this to the 1.16.8 milestone Nov 27, 2025
@rjl493456442 rjl493456442 merged commit 8d1b1c2 into ethereum:master Nov 27, 2025
10 checks passed
fjl pushed a commit to lightclient/go-ethereum that referenced this pull request Nov 28, 2025
…on (ethereum#33301)

This change fixes a stall in the legacy blob sidecar conversion pipeline
where tasks that arrived during an active batch could remain unprocessed
indefinitely after that batch completed, unless a new external event
arrived. 

The root cause was that the loop did not restart processing in
the case <-done: branch even when txTasks had accumulated work, relying
instead on a future event to retrigger the scheduler. This behavior is
inconsistent with the billy task pipeline, which immediately chains to
the next task via runNextBillyTask() without requiring an external trigger. 

The fix adds a symmetric restart path in `case <-done`: that checks 
`len(txTasks) > 0`, clones the accumulated tasks, clears the queue, and 
launches a new run with a fresh done and interrupt. 

This preserves batching semantics, prevents indefinite blocking of callers 
of convert(), and remains safe during shutdown since the quit path 
still interrupts and awaits the active batch. No public interfaces or logging 
were changed.
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