From eeeefd291e5bd11100d2efe4bfe1797604d4e29b Mon Sep 17 00:00:00 2001 From: emmymiao87 <522274284@qq.com> Date: Wed, 31 Jul 2019 13:26:26 +0800 Subject: [PATCH 1/3] Broker load hang when rpc failed Broker load hang on broker reader when the thrift request between broker and be is failed. --- be/src/exec/broker_reader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/exec/broker_reader.cpp b/be/src/exec/broker_reader.cpp index a878fedcb43d73..12cbf3fe398ca0 100644 --- a/be/src/exec/broker_reader.cpp +++ b/be/src/exec/broker_reader.cpp @@ -126,7 +126,7 @@ Status BrokerReader::open() { } Status BrokerReader::read(uint8_t* buf, size_t* buf_len, bool* eof) { - readat(_cur_offset, (int64_t)*buf_len, (int64_t*)buf_len, buf); + RETURN_IF_ERROR(readat(_cur_offset, (int64_t)*buf_len, (int64_t*)buf_len, buf)); if (*buf_len == 0) { *eof = true; } else { From 801ad867002e8971e6d59e41e23f7e45cf0ff8cd Mon Sep 17 00:00:00 2001 From: emmymiao87 <522274284@qq.com> Date: Wed, 31 Jul 2019 16:50:49 +0800 Subject: [PATCH 2/3] Precheck the input buf_len of read method --- be/src/exec/broker_reader.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/be/src/exec/broker_reader.cpp b/be/src/exec/broker_reader.cpp index 12cbf3fe398ca0..0b63c595c88076 100644 --- a/be/src/exec/broker_reader.cpp +++ b/be/src/exec/broker_reader.cpp @@ -126,6 +126,9 @@ Status BrokerReader::open() { } Status BrokerReader::read(uint8_t* buf, size_t* buf_len, bool* eof) { + if (*buf_len == 0) { + return Status::OK(); + } RETURN_IF_ERROR(readat(_cur_offset, (int64_t)*buf_len, (int64_t*)buf_len, buf)); if (*buf_len == 0) { *eof = true; From c919d3f1d7102a49d150d737bf5ffb9426cad2b2 Mon Sep 17 00:00:00 2001 From: emmymiao87 <522274284@qq.com> Date: Wed, 31 Jul 2019 17:11:14 +0800 Subject: [PATCH 3/3] Add dcheck for buf_len which could not be zero --- be/src/exec/broker_reader.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/be/src/exec/broker_reader.cpp b/be/src/exec/broker_reader.cpp index 0b63c595c88076..aec9c487bf0a05 100644 --- a/be/src/exec/broker_reader.cpp +++ b/be/src/exec/broker_reader.cpp @@ -126,9 +126,7 @@ Status BrokerReader::open() { } Status BrokerReader::read(uint8_t* buf, size_t* buf_len, bool* eof) { - if (*buf_len == 0) { - return Status::OK(); - } + DCHECK_NE(*buf_len, 0); RETURN_IF_ERROR(readat(_cur_offset, (int64_t)*buf_len, (int64_t*)buf_len, buf)); if (*buf_len == 0) { *eof = true;