From 4e1728cb0119e963193c7e36ae8beb3abee1ebb1 Mon Sep 17 00:00:00 2001 From: haohao022 Date: Mon, 12 Aug 2024 08:18:16 +0000 Subject: [PATCH] [CP] [to #2024072000103865240] fix: response -9747 error packet and disconnect session when send piece protocol failed --- src/observer/mysql/obmp_stmt_send_piece_data.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/observer/mysql/obmp_stmt_send_piece_data.cpp b/src/observer/mysql/obmp_stmt_send_piece_data.cpp index 5b2bf7bea0..43d40e53c0 100644 --- a/src/observer/mysql/obmp_stmt_send_piece_data.cpp +++ b/src/observer/mysql/obmp_stmt_send_piece_data.cpp @@ -81,7 +81,7 @@ int ObMPStmtSendPieceData::before_process() is_null_ = (1 == is_null); ObMySQLUtil::get_int8(pos, buffer_len_); if (stmt_id_ < 1 || buffer_len_ < 0) { - ret = OB_ERR_PARAM_INVALID; + ret = OB_ERR_MALFORMED_PS_PACKET; LOG_WARN("send_piece receive unexpected params", K(ret), K(stmt_id_), K(buffer_len_)); } else if (param_id_ >= OB_PARAM_ID_OVERFLOW_RISK_THRESHOLD) { LOG_WARN("param_id_ has the risk of overflow", K(ret), K(stmt_id_), K(param_id_)); @@ -96,6 +96,13 @@ int ObMPStmtSendPieceData::before_process() LOG_INFO("resolve send_piece protocol packet", K(ret), K(stmt_id_), K(param_id_), K(buffer_len_), K(piece_mode_), K(is_null_)); } + + if (OB_FAIL(ret)) { + send_error_packet(ret, nullptr); + force_disconnect(); + LOG_WARN("force disconnect connection", K(ret)); + } + return ret; }