fix ddl task when the tenant switch to standby
This commit is contained in:
@ -99,7 +99,7 @@ int ObTableRedefinitionTask::init(const ObDDLTaskRecord &task_record)
|
||||
} else if (!task_record.is_valid()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid arguments", K(ret), K(task_record));
|
||||
} else if (OB_FAIL(deserlize_params_from_message(task_record.message_.ptr(), task_record.message_.length(), pos))) {
|
||||
} else if (OB_FAIL(deserlize_params_from_message(task_record.tenant_id_, task_record.message_.ptr(), task_record.message_.length(), pos))) {
|
||||
LOG_WARN("deserialize params from message failed", K(ret), K(task_record.message_), K(common::lbt()));
|
||||
} else if (OB_FAIL(set_ddl_stmt_str(task_record.ddl_stmt_str_))) {
|
||||
LOG_WARN("set ddl stmt str failed", K(ret));
|
||||
@ -962,7 +962,7 @@ int ObTableRedefinitionTask::serialize_params_to_message(char *buf, const int64_
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTableRedefinitionTask::deserlize_params_from_message(const char *buf, const int64_t data_len, int64_t &pos)
|
||||
int ObTableRedefinitionTask::deserlize_params_from_message(const uint64_t tenant_id, const char *buf, const int64_t data_len, int64_t &pos)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
int8_t copy_indexes = 0;
|
||||
@ -972,13 +972,15 @@ int ObTableRedefinitionTask::deserlize_params_from_message(const char *buf, cons
|
||||
int8_t ignore_errors = 0;
|
||||
int8_t do_finish = 0;
|
||||
obrpc::ObAlterTableArg tmp_arg;
|
||||
if (OB_UNLIKELY(nullptr == buf || data_len <= 0)) {
|
||||
if (OB_UNLIKELY(!is_valid_tenant_id(tenant_id) || nullptr == buf || data_len <= 0)) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid arguments", K(ret), KP(buf), K(data_len));
|
||||
LOG_WARN("invalid arguments", K(ret), K(tenant_id), KP(buf), K(data_len));
|
||||
} else if (OB_FAIL(serialization::decode_i64(buf, data_len, pos, &task_version_))) {
|
||||
LOG_WARN("fail to deserialize task version", K(ret));
|
||||
} else if (OB_FAIL(tmp_arg.deserialize(buf, data_len, pos))) {
|
||||
LOG_WARN("serialize table failed", K(ret));
|
||||
} else if (OB_FAIL(ObDDLUtil::replace_user_tenant_id(tenant_id, tmp_arg))) {
|
||||
LOG_WARN("replace user tenant id failed", K(ret), K(tenant_id), K(tmp_arg));
|
||||
} else if (OB_FAIL(deep_copy_table_arg(allocator_, tmp_arg, alter_table_arg_))) {
|
||||
LOG_WARN("deep copy table arg failed", K(ret));
|
||||
} else if (OB_FAIL(serialization::decode_i64(buf, data_len, pos, ¶llelism_))) {
|
||||
|
||||
Reference in New Issue
Block a user