Fix bug that check response status when broadcast shuffle

This commit is contained in:
obdev
2021-07-16 17:57:13 +08:00
committed by wangzelin.wzl
parent 9547c883a3
commit 9ea292d68b
7 changed files with 49 additions and 51 deletions

View File

@ -169,16 +169,8 @@ int ObDtlLocalChannel::send_message(ObDtlLinkedBuffer*& buf)
ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid argument", K(ret));
} else {
if (msg_response_.is_in_process()) {
if (OB_FAIL(msg_response_.wait())) {
LOG_WARN("send previous message fail", K(ret));
} else if (OB_HASH_NOT_EXIST == ret) {
if (is_drain()) {
ret = OB_SUCCESS;
} else {
ret = OB_ERR_SIGNALED_IN_PARALLEL_QUERY_SERVER;
}
}
if (OB_FAIL(wait_response())) {
LOG_WARN("failed to wait response", K(ret));
}
if (OB_SUCC(ret) && OB_FAIL(wait_unblocking_if_blocked())) {
LOG_WARN("failed to block data flow", K(ret));
@ -206,6 +198,14 @@ int ObDtlLocalChannel::send_message(ObDtlLinkedBuffer*& buf)
set_eof();
}
}
// it may return 4201 after send_message and it don't call wait_response
if (OB_HASH_NOT_EXIST == ret) {
if (is_drain()) {
ret = OB_SUCCESS;
} else {
ret = OB_ERR_SIGNALED_IN_PARALLEL_QUERY_SERVER;
}
}
return ret;
}