This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 9195d793e4f [fix](group_commit) Wal reader should check block length
to avoid reading empty block (#34792)
9195d793e4f is described below
commit 9195d793e4fea9f6b872145d53fa6b8f1d3c3cd4
Author: huanghaibin <[email protected]>
AuthorDate: Tue May 14 16:48:27 2024 +0800
[fix](group_commit) Wal reader should check block length to avoid reading
empty block (#34792)
---
be/src/olap/wal/wal_reader.cpp | 3 +++
be/src/vec/exec/format/wal/wal_reader.cpp | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/be/src/olap/wal/wal_reader.cpp b/be/src/olap/wal/wal_reader.cpp
index 9e4618b2bc1..fa96f0c5a0b 100644
--- a/be/src/olap/wal/wal_reader.cpp
+++ b/be/src/olap/wal/wal_reader.cpp
@@ -69,6 +69,9 @@ Status WalReader::read_block(PBlock& block) {
file_reader->read_at(_offset, {row_len_buf,
WalWriter::LENGTH_SIZE}, &bytes_read));
_offset += WalWriter::LENGTH_SIZE;
size_t block_len = decode_fixed64_le(row_len_buf);
+ if (block_len == 0) {
+ return Status::DataQualityError("fail to read wal {} ,block is empty",
_file_name);
+ }
// read block
std::string block_buf;
block_buf.resize(block_len);
diff --git a/be/src/vec/exec/format/wal/wal_reader.cpp
b/be/src/vec/exec/format/wal/wal_reader.cpp
index 0d15c198b0e..5010f1912ab 100644
--- a/be/src/vec/exec/format/wal/wal_reader.cpp
+++ b/be/src/vec/exec/format/wal/wal_reader.cpp
@@ -68,6 +68,11 @@ Status WalReader::get_next_block(Block* block, size_t*
read_rows, bool* eof) {
LOG(WARNING) << "Failed to read wal on path = " << _wal_path;
return st;
}
+ int be_exec_version = pblock.has_be_exec_version() ?
pblock.be_exec_version() : 0;
+ if (!BeExecVersionManager::check_be_exec_version(be_exec_version)) {
+ return Status::DataQualityError("check be exec version fail when
reading wal file {}",
+ _wal_path);
+ }
vectorized::Block src_block;
RETURN_IF_ERROR(src_block.deserialize(pblock));
//convert to dst block
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]