jrt1899 opened a new issue, #8858:
URL: https://github.com/apache/texera/issues/8858

   ### Feature Summary
   
   On links with no partitioning requirement, each sender keeps one buffer per 
receiver and fills them round robin. A receiver gets nothing until some buffer 
reaches the batch size, so the link can hold up to senders × receivers × 
batchSize tuples before the first batch ships. With 8 Python UDF workers per 
stage and a batch size of 5,000, that is about 320,000 rows. JVM workers flush 
on a timer (adaptive-buffering-timeout-ms), but Python workers don't, so in 
Python UDF workflows the downstream stage sits idle for most of the run.
   
   Discussion: #8519
   
   ### Proposed Solution or Design
   
   An opt-in LeastLoadedPartitioning 
(network-buffering.enable-least-loaded-routing, default off). Each sender fills 
one batch at a time and sends it to the receiver with the smallest backlog 
(received − processed tuples). That backlog comes from the existing statistics 
poll, and the coordinator delivers the choice through a lightweight 
UpdateRoutingPreference RPC. Round robin stays the default and 
RoundRobinPartitioner is not modified.
   
   
   Round robin (today)                   Least-loaded (proposed)
   sender ─┬─[buf]─> r1                  sender ─[buf]─> least-backlogged r
           ├─[buf]─> r2
           └─[buf]─> rm
   first ship: n × m × batchSize         first ship: batchSize per sender
   Planned as three PRs: (1) partitioner + backlog statistic, (2) coordinator 
ranking + RPC, (3) opt-in switch + benchmark.
   
   ### Affected Area
   
   Workflow Engine (Amber)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to