[to #50044838]remove piece need session lock
This commit is contained in:
@ -1847,24 +1847,23 @@ int ObMPStmtExecute::process()
|
||||
}
|
||||
session.check_and_reset_retry_info(*cur_trace_id, THIS_WORKER.need_retry());
|
||||
session.set_last_trace_id(ObCurTraceId::get_trace_id());
|
||||
}
|
||||
|
||||
// whether the previous error was reported, a cleanup is to be done here
|
||||
if (NULL != sess && !async_resp_used) {
|
||||
// async remove in ObSqlEndTransCb
|
||||
ObPieceCache *piece_cache = static_cast<ObPieceCache*>(sess->get_piece_cache());
|
||||
if (OB_ISNULL(piece_cache)) {
|
||||
// do nothing
|
||||
// piece_cache not be null in piece data protocol
|
||||
} else {
|
||||
for (uint64_t i = 0; OB_SUCC(ret) && i < params_num_; i++) {
|
||||
if (OB_FAIL(piece_cache->remove_piece(
|
||||
piece_cache->get_piece_key(stmt_id_, i),
|
||||
*sess))) {
|
||||
if (OB_HASH_NOT_EXIST == ret) {
|
||||
ret = OB_SUCCESS;
|
||||
} else {
|
||||
LOG_WARN("remove piece fail", K(stmt_id_), K(i), K(ret));
|
||||
// whether the previous error was reported, a cleanup is to be done here
|
||||
if (!async_resp_used) {
|
||||
// async remove in ObSqlEndTransCb
|
||||
ObPieceCache *piece_cache = static_cast<ObPieceCache*>(session.get_piece_cache());
|
||||
if (OB_ISNULL(piece_cache)) {
|
||||
// do nothing
|
||||
// piece_cache not be null in piece data protocol
|
||||
} else {
|
||||
for (uint64_t i = 0; OB_SUCC(ret) && i < params_num_; i++) {
|
||||
if (OB_FAIL(piece_cache->remove_piece(
|
||||
piece_cache->get_piece_key(stmt_id_, i),
|
||||
session))) {
|
||||
if (OB_HASH_NOT_EXIST == ret) {
|
||||
ret = OB_SUCCESS;
|
||||
} else {
|
||||
LOG_WARN("remove piece fail", K(stmt_id_), K(i), K(ret));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user