diff --git a/src/storage/tx/ob_trans_define.h b/src/storage/tx/ob_trans_define.h index efa7f562f7..08c6e56701 100644 --- a/src/storage/tx/ob_trans_define.h +++ b/src/storage/tx/ob_trans_define.h @@ -1729,12 +1729,18 @@ typedef common::ObSEArray ObTxRollback if (OB_FAIL(parts.push_back(commit_parts.at(idx).ls_id_))) { \ TRANS_LOG(WARN, "parts push failed", K(ret)); \ } \ + } \ + if (OB_FAIL(ret)) { \ + parts.reset(); \ } -#define CONVERT_PARTS_TO_COMMIT_PARTS(parts, commit_parts) \ - for (int64_t idx = 0; OB_SUCC(ret) && idx < parts.count(); idx++) { \ - if (OB_FAIL(commit_parts.push_back(ObTxExecPart(parts.at(idx), -1, -1)))) { \ - TRANS_LOG(WARN, "parts push failed", K(ret)); \ - } \ +#define CONVERT_PARTS_TO_COMMIT_PARTS(parts, commit_parts) \ + for (int64_t idx = 0; OB_SUCC(ret) && idx < parts.count(); idx++) { \ + if (OB_FAIL(commit_parts.push_back(ObTxExecPart(parts.at(idx), -1, -1)))) { \ + TRANS_LOG(WARN, "parts push failed", K(ret)); \ + } \ + } \ + if (OB_FAIL(ret)) { \ + commit_parts.reset(); \ } class ObEndParticipantsRes