github-actions[bot] commented on code in PR #62661:
URL: https://github.com/apache/doris/pull/62661#discussion_r3373983820


##########
be/src/exec/sink/writer/vtablet_writer.cpp:
##########
@@ -973,8 +1054,10 @@ void VNodeChannel::try_send_pending_block(RuntimeState* 
state) {
     }
 
     if (request->eos()) {
-        for (auto pid : _parent->_tablet_finder->partition_ids()) {
-            request->add_partition_ids(pid);
+        if (!request->is_receiver_side_random_bucket()) {
+            for (auto pid : _parent->_tablet_finder->partition_ids()) {

Review Comment:
   Skipping `partition_ids` on EOS for receiver-side random bucket changes the 
close semantics for touched partitions. In the normal random path every node 
channel receives the touched partition ids, so `TabletsChannel::close()` closes 
all writers in those partitions and produces the empty rowsets needed for 
tablets that did not receive rows. With the new receiver-side path, only 
receivers that happened to receive row batches record `_partition_ids` during 
`add_batch()`; all other receivers see an empty partition set on close and 
cancel their writers. For a random partition whose selected buckets live on one 
BE while other buckets live on other BEs, those other tablets get no rowset for 
this committed transaction, leaving tablet versions behind the partition 
visible version. Please still propagate the touched partition ids on EOS (or 
otherwise explicitly close the required empty writers) for receiver-side random 
bucket loads.



-- 
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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to