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]