This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch spill_and_reserve
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/spill_and_reserve by this push:
new 20b22bb0744 [fix](spill) MultiCastDataStreamer returns data with
partial loss (#47191)
20b22bb0744 is described below
commit 20b22bb074418787335ccd225e4955275f57d39b
Author: Jerry Hu <[email protected]>
AuthorDate: Sat Jan 18 18:53:37 2025 +0800
[fix](spill) MultiCastDataStreamer returns data with partial loss (#47191)
---
be/src/pipeline/exec/multi_cast_data_streamer.cpp | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/be/src/pipeline/exec/multi_cast_data_streamer.cpp
b/be/src/pipeline/exec/multi_cast_data_streamer.cpp
index 733092bf458..ae98f9a4f44 100644
--- a/be/src/pipeline/exec/multi_cast_data_streamer.cpp
+++ b/be/src/pipeline/exec/multi_cast_data_streamer.cpp
@@ -64,7 +64,15 @@ Status MultiCastDataStreamer::pull(RuntimeState* state, int
sender_idx, vectoriz
*block = std::move(_cached_blocks[sender_idx].front());
_cached_blocks[sender_idx].erase(_cached_blocks[sender_idx].begin());
- *eos = _cached_blocks[sender_idx].empty() &&
_spill_readers[sender_idx].empty() && _eos;
+ /** Eos:
+ * 1. `_eos` is true means no more data will be added into
queue.
+ * 2. `_cached_blocks[sender_idx]` blocks recovered from spill.
+ * 3. `_spill_readers[sender_idx].empty()` means there are no
blocks on disk.
+ * 4. `_sender_pos_to_read[sender_idx] ==
_multi_cast_blocks.end()` means no more blocks in queue.
+ */
+ *eos = _eos && _cached_blocks[sender_idx].empty() &&
+ _spill_readers[sender_idx].empty() &&
+ _sender_pos_to_read[sender_idx] == _multi_cast_blocks.end();
return Status::OK();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]