From 51bb12a3f642382401266ae1379e6e8c80185680 Mon Sep 17 00:00:00 2001 From: Hongqin-Li Date: Tue, 8 Aug 2023 04:48:26 +0000 Subject: [PATCH] Drop/truncate part/table/db without ddl retry task --- src/rootserver/ddl_task/ob_ddl_scheduler.cpp | 15 +----------- src/rootserver/ob_ddl_service.cpp | 23 ++----------------- src/sql/engine/cmd/ob_database_executor.cpp | 18 +++------------ src/sql/engine/cmd/ob_table_executor.cpp | 10 ++------ .../resolver/ddl/ob_alter_table_resolver.cpp | 4 ---- .../ddl/ob_drop_database_resolver.cpp | 1 - src/sql/resolver/ddl/ob_drop_database_stmt.h | 4 ---- .../resolver/ddl/ob_drop_table_resolver.cpp | 1 - .../ddl/ob_truncate_table_resolver.cpp | 2 -- src/sql/resolver/ddl/ob_truncate_table_stmt.h | 2 -- 10 files changed, 8 insertions(+), 72 deletions(-) diff --git a/src/rootserver/ddl_task/ob_ddl_scheduler.cpp b/src/rootserver/ddl_task/ob_ddl_scheduler.cpp index f27f14e9b..a5421cd01 100755 --- a/src/rootserver/ddl_task/ob_ddl_scheduler.cpp +++ b/src/rootserver/ddl_task/ob_ddl_scheduler.cpp @@ -973,20 +973,7 @@ int ObDDLScheduler::create_ddl_task(const ObCreateDDLTaskParam ¶m, case DDL_DROP_PARTITION: case DDL_DROP_SUB_PARTITION: case DDL_TRUNCATE_PARTITION: - case DDL_TRUNCATE_SUB_PARTITION: { - if (OB_FAIL(create_ddl_retry_task(proxy, - param.tenant_id_, - param.object_id_, - param.schema_version_, - param.consumer_group_id_, - param.type_, - param.ddl_arg_, - *param.allocator_, - task_record))) { - LOG_WARN("fail to create ddl retry task", K(ret)); - } - break; - } + case DDL_TRUNCATE_SUB_PARTITION: default: ret = OB_NOT_SUPPORTED; LOG_WARN("error unexpected, ddl type is not supported", K(ret), K(param.type_)); diff --git a/src/rootserver/ob_ddl_service.cpp b/src/rootserver/ob_ddl_service.cpp index 5706f4f17..3f884e890 100755 --- a/src/rootserver/ob_ddl_service.cpp +++ b/src/rootserver/ob_ddl_service.cpp @@ -4847,6 +4847,7 @@ int ObDDLService::lock_tablets(ObMySQLTransaction &trans, timeout, conn))) { LOG_WARN("lock dest table failed", KR(ret), K(table_id), K(tenant_id)); + ret = ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_EAGAIN : ret; } } } @@ -4878,6 +4879,7 @@ int ObDDLService::lock_table(ObMySQLTransaction &trans, timeout, conn))) { LOG_WARN("lock dest table failed", KR(ret), K(table_schema)); + ret = ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_EAGAIN : ret; } } return ret; @@ -4909,7 +4911,6 @@ int ObDDLService::lock_tables_of_database(const ObDatabaseSchema &database_schem K(table_schema->get_table_id()), K(ret)); } else if (OB_FAIL(lock_table(trans, *table_schema))) { LOG_WARN("fail to lock_table", KR(ret), KPC(table_schema)); - ret = ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_EAGAIN : ret; } } } @@ -4948,7 +4949,6 @@ int ObDDLService::lock_tables_in_recyclebin(const ObDatabaseSchema &database_sch to_cstring(recycle_obj.get_object_name())); } else if (OB_FAIL(lock_table(trans, *table_schema))) { LOG_WARN("fail to lock_table", KR(ret), KPC(table_schema)); - ret = ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_EAGAIN : ret; } } } @@ -9980,9 +9980,6 @@ int ObDDLService::alter_table_partitions(const obrpc::ObAlterTableArg &alter_tab KR(ret), K(orig_table_schema), K(inc_table_schema)); } else if (OB_FAIL(lock_partitions(trans, inc_table_schema))) { LOG_WARN("failed to get tablet ids", KR(ret), K(orig_table_schema), K(inc_table_schema)); - // for ddl retry task, upper layer only focus on `OB_TRY_LOCK_ROW_CONFLICT`, and then retry it. - const bool is_ddl_scheduled_task = alter_table_arg.task_id_ > 0 ? true : false; - ret = is_ddl_scheduled_task && ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_TRY_LOCK_ROW_CONFLICT : ret; } else if (OB_FAIL(ddl_operator.drop_table_partitions(orig_table_schema, inc_table_schema, new_table_schema, @@ -9998,9 +9995,6 @@ int ObDDLService::alter_table_partitions(const obrpc::ObAlterTableArg &alter_tab KR(ret), K(orig_table_schema), K(inc_table_schema)); } else if (OB_FAIL(lock_partitions(trans, inc_table_schema))) { LOG_WARN("failed to get tablet ids", KR(ret), K(orig_table_schema), K(inc_table_schema)); - // for ddl retry task, upper layer only focus on `OB_TRY_LOCK_ROW_CONFLICT`, and then retry it. - const bool is_ddl_scheduled_task = alter_table_arg.task_id_ > 0 ? true : false; - ret = is_ddl_scheduled_task && ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_TRY_LOCK_ROW_CONFLICT : ret; } else if (OB_FAIL(ddl_operator.drop_table_subpartitions(orig_table_schema, inc_table_schema, new_table_schema, @@ -10013,9 +10007,6 @@ int ObDDLService::alter_table_partitions(const obrpc::ObAlterTableArg &alter_tab LOG_WARN("fail to generate inc table schema", KR(ret), K(orig_table_schema)); } else if (OB_FAIL(lock_partitions(trans, del_table_schema))) { LOG_WARN("failed to get tablet ids", KR(ret), K(orig_table_schema), K(del_table_schema)); - // for ddl retry task, upper layer only focus on `OB_TRY_LOCK_ROW_CONFLICT`, and then retry it. - const bool is_ddl_scheduled_task = alter_table_arg.task_id_ > 0 ? true : false; - ret = is_ddl_scheduled_task && ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_TRY_LOCK_ROW_CONFLICT : ret; } else if (OB_FAIL(generate_object_id_for_partition_schema(inc_table_schema))) { LOG_WARN("fail to generate object_id for partition schema", KR(ret), K(inc_table_schema)); } else if (OB_FAIL(generate_tablet_id(inc_table_schema))) { @@ -10032,9 +10023,6 @@ int ObDDLService::alter_table_partitions(const obrpc::ObAlterTableArg &alter_tab LOG_WARN("fail to generate inc table schema", KR(ret), K(orig_table_schema)); } else if (OB_FAIL(lock_partitions(trans, del_table_schema))) { LOG_WARN("failed to get tablet ids", KR(ret), K(orig_table_schema), K(del_table_schema)); - // for ddl retry task, upper layer only focus on `OB_TRY_LOCK_ROW_CONFLICT`, and then retry it. - const bool is_ddl_scheduled_task = alter_table_arg.task_id_ > 0 ? true : false; - ret = is_ddl_scheduled_task && ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_TRY_LOCK_ROW_CONFLICT : ret; } else if (OB_FAIL(generate_object_id_for_partition_schema(inc_table_schema, true))) { LOG_WARN("fail to generate object_id for partition schema", KR(ret), K(inc_table_schema)); } else if (OB_FAIL(generate_tablet_id(inc_table_schema))) { @@ -17400,9 +17388,6 @@ int ObDDLService::truncate_table(const ObTruncateTableArg &arg, if (OB_FAIL(ret)) { } else if (OB_FAIL(lock_table(trans, *orig_table_schema))) { LOG_WARN("fail to lock_table", KR(ret), KPC(orig_table_schema)); - // for ddl retry task, upper layer only focus on `OB_TRY_LOCK_ROW_CONFLICT`, and then retry it. - const bool is_ddl_scheduled_task = arg.task_id_ > 0 ? true : false; - ret = is_ddl_scheduled_task && ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_TRY_LOCK_ROW_CONFLICT : ret; } if (OB_SUCC(ret) && orig_table_schema->is_oracle_tmp_table()) { @@ -19063,7 +19048,6 @@ int ObDDLService::purge_table( LOG_WARN("start transaction failed", KR(ret), K(tenant_id), K(refreshed_schema_version)); } else if (OB_FAIL(lock_table(OB_ISNULL(pr_trans) ? trans : *pr_trans, *table_schema))) { LOG_WARN("fail to lock_table", KR(ret), KPC(table_schema)); - ret = ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_EAGAIN : ret; } else if (OB_FAIL(ddl_operator.purge_table_with_aux_table(*table_schema, schema_guard, OB_ISNULL(pr_trans) ? trans : *pr_trans, @@ -19883,9 +19867,6 @@ int ObDDLService::drop_table(const ObDropTableArg &drop_table_arg, const obrpc:: LOG_WARN("set table_id to hash set failed", K(table_schema->get_table_id()), K(ret)); } else if (OB_FAIL(lock_table(trans, *table_schema))) { LOG_WARN("fail to lock_table", KR(ret), KPC(table_schema)); - // for ddl retry task, upper layer only focus on `OB_TRY_LOCK_ROW_CONFLICT`, and then retry it. - const bool is_ddl_scheduled_task = drop_table_arg.task_id_ > 0 ? true : false; - ret = is_ddl_scheduled_task && ObDDLUtil::is_table_lock_retry_ret_code(ret) ? OB_TRY_LOCK_ROW_CONFLICT : ret; } } } diff --git a/src/sql/engine/cmd/ob_database_executor.cpp b/src/sql/engine/cmd/ob_database_executor.cpp index b77bc0400..1aa4d6bba 100644 --- a/src/sql/engine/cmd/ob_database_executor.cpp +++ b/src/sql/engine/cmd/ob_database_executor.cpp @@ -188,6 +188,7 @@ int ObDropDatabaseExecutor::execute(ObExecContext &ctx, ObDropDatabaseStmt &stmt const obrpc::ObDropDatabaseArg &drop_database_arg = stmt.get_drop_database_arg(); obrpc::ObDropDatabaseArg &tmp_arg = const_cast(drop_database_arg); ObString first_stmt; + uint64_t database_id = 0; if (OB_FAIL(stmt.get_first_stmt(first_stmt))) { SQL_ENG_LOG(WARN, "fail to get first stmt" , K(ret)); } else { @@ -229,25 +230,12 @@ int ObDropDatabaseExecutor::execute(ObExecContext &ctx, ObDropDatabaseStmt &stmt } else if (OB_FAIL(ctx.get_my_session()->set_default_database(null_string, server_coll_type))) { SQL_ENG_LOG(WARN, "fail to set default database", K(ret), K(stmt.get_server_collation()), K(server_coll_type)); } else { - ctx.get_physical_plan_ctx()->set_affected_rows(drop_database_res.affected_row_); ctx.get_my_session()->set_database_id(OB_INVALID_ID); } } } - if (OB_SUCC(ret) && drop_database_res.is_valid()) { - int64_t affected_rows = 0; - ObSQLSessionInfo *my_session = nullptr; - if (OB_ISNULL(my_session = ctx.get_my_session())) { - ret = OB_ERR_UNEXPECTED; - SQL_ENG_LOG(WARN, "my_session is nullptr", K(ret)); - } else if (drop_database_res.is_valid() && - OB_FAIL(ObDDLExecutorUtil::wait_ddl_retry_task_finish(drop_database_res.ddl_res_.tenant_id_, - drop_database_res.ddl_res_.task_id_, - *my_session, common_rpc_proxy, affected_rows))) { - SQL_ENG_LOG(WARN, "wait ddl finish failed", K(ret)); - } else { - ctx.get_physical_plan_ctx()->set_affected_rows(affected_rows); - } + if (OB_SUCC(ret)) { + ctx.get_physical_plan_ctx()->set_affected_rows(drop_database_res.affected_row_); } } SQL_ENG_LOG(INFO, "finish execute drop database.", K(ret), K(stmt)); diff --git a/src/sql/engine/cmd/ob_table_executor.cpp b/src/sql/engine/cmd/ob_table_executor.cpp index 47412a389..5f6600796 100644 --- a/src/sql/engine/cmd/ob_table_executor.cpp +++ b/src/sql/engine/cmd/ob_table_executor.cpp @@ -1231,21 +1231,15 @@ int ObAlterTableExecutor::execute(ObExecContext &ctx, ObAlterTableStmt &stmt) } if (OB_SUCC(ret)) { - const bool is_ddl_retry_task = is_drop_schema_block_concurrent_trans(res.ddl_type_); const bool need_wait_ddl_finish = is_double_table_long_running_ddl(res.ddl_type_) - || is_simple_table_long_running_ddl(res.ddl_type_) - || is_ddl_retry_task; + || is_simple_table_long_running_ddl(res.ddl_type_); if (OB_SUCC(ret) && need_wait_ddl_finish) { int64_t affected_rows = 0; if (OB_FAIL(refresh_schema_for_table(alter_table_arg.exec_tenant_id_))) { LOG_WARN("refresh_schema_for_table failed", K(ret)); - } else if (!is_ddl_retry_task && OB_FAIL(ObDDLExecutorUtil::wait_ddl_finish(tenant_id, res.task_id_, + } else if (OB_FAIL(ObDDLExecutorUtil::wait_ddl_finish(tenant_id, res.task_id_, *my_session, common_rpc_proxy))) { LOG_WARN("fail to wait ddl finish", K(ret), K(tenant_id), K(res)); - } else if (is_ddl_retry_task && OB_FAIL(ObDDLExecutorUtil::wait_ddl_retry_task_finish(tenant_id, res.task_id_, - *my_session, common_rpc_proxy, - affected_rows))) { - LOG_WARN("fail to wait ddl retry task finish", K(ret), K(tenant_id), K(res)); } } } diff --git a/src/sql/resolver/ddl/ob_alter_table_resolver.cpp b/src/sql/resolver/ddl/ob_alter_table_resolver.cpp index 3e5791c83..d50231f20 100644 --- a/src/sql/resolver/ddl/ob_alter_table_resolver.cpp +++ b/src/sql/resolver/ddl/ob_alter_table_resolver.cpp @@ -3757,7 +3757,6 @@ int ObAlterTableResolver::resolve_partition_options(const ParseNode &node) } else { alter_table_stmt->get_alter_table_arg().is_update_global_indexes_ = partition_node->num_child_ == 2; alter_table_stmt->get_alter_table_arg().alter_part_type_ = ObAlterTableArg::DROP_PARTITION; - alter_table_stmt->get_alter_table_arg().is_add_to_scheduler_ = true; } break; } @@ -3767,7 +3766,6 @@ int ObAlterTableResolver::resolve_partition_options(const ParseNode &node) } else { alter_table_stmt->get_alter_table_arg().is_update_global_indexes_ = partition_node->num_child_ == 2; alter_table_stmt->get_alter_table_arg().alter_part_type_ = ObAlterTableArg::DROP_SUB_PARTITION; - alter_table_stmt->get_alter_table_arg().is_add_to_scheduler_ = true; } break; } @@ -3842,7 +3840,6 @@ int ObAlterTableResolver::resolve_partition_options(const ParseNode &node) } else { alter_table_stmt->get_alter_table_arg().is_update_global_indexes_ = partition_node->num_child_ == 2; alter_table_stmt->get_alter_table_arg().alter_part_type_ = ObAlterTableArg::TRUNCATE_PARTITION; - alter_table_stmt->get_alter_table_arg().is_add_to_scheduler_ = true; } break; } @@ -3852,7 +3849,6 @@ int ObAlterTableResolver::resolve_partition_options(const ParseNode &node) } else { alter_table_stmt->get_alter_table_arg().is_update_global_indexes_ = partition_node->num_child_ == 2; alter_table_stmt->get_alter_table_arg().alter_part_type_ = ObAlterTableArg::TRUNCATE_SUB_PARTITION; - alter_table_stmt->get_alter_table_arg().is_add_to_scheduler_ = true; } break; } diff --git a/src/sql/resolver/ddl/ob_drop_database_resolver.cpp b/src/sql/resolver/ddl/ob_drop_database_resolver.cpp index 6184a6bd3..44a0a583b 100644 --- a/src/sql/resolver/ddl/ob_drop_database_resolver.cpp +++ b/src/sql/resolver/ddl/ob_drop_database_resolver.cpp @@ -56,7 +56,6 @@ int ObDropDatabaseResolver::resolve(const ParseNode &parse_tree) LOG_ERROR("failed to create drop_database_stmt", K(ret)); } else { stmt_ = drop_database_stmt; - drop_database_stmt->set_is_add_to_scheduler(true); drop_database_stmt->set_tenant_id(session_info_->get_effective_tenant_id()); } //resolve if exist diff --git a/src/sql/resolver/ddl/ob_drop_database_stmt.h b/src/sql/resolver/ddl/ob_drop_database_stmt.h index ac7b19253..6d6aa1dfd 100644 --- a/src/sql/resolver/ddl/ob_drop_database_stmt.h +++ b/src/sql/resolver/ddl/ob_drop_database_stmt.h @@ -44,10 +44,6 @@ public: { drop_database_arg_.tenant_id_ = tenant_id; } - void set_is_add_to_scheduler(const bool is_add_to_scheduler) - { - drop_database_arg_.is_add_to_scheduler_ = is_add_to_scheduler; - } void set_if_exist(const bool if_exist) { diff --git a/src/sql/resolver/ddl/ob_drop_table_resolver.cpp b/src/sql/resolver/ddl/ob_drop_table_resolver.cpp index f4e30ffad..b3e5a3596 100644 --- a/src/sql/resolver/ddl/ob_drop_table_resolver.cpp +++ b/src/sql/resolver/ddl/ob_drop_table_resolver.cpp @@ -61,7 +61,6 @@ int ObDropTableResolver::resolve(const ParseNode &parse_tree) } else { drop_table_arg.if_exist_ = (NULL != parse_tree.children_[IF_EXIST_NODE]) ? true : false; } - drop_table_arg.is_add_to_scheduler_ = true; drop_table_arg.tenant_id_ = session_info_->get_effective_tenant_id(); drop_table_arg.to_recyclebin_ = is_recyclebin_open.get_bool(); } diff --git a/src/sql/resolver/ddl/ob_truncate_table_resolver.cpp b/src/sql/resolver/ddl/ob_truncate_table_resolver.cpp index 0095d3c46..2fd22db4c 100644 --- a/src/sql/resolver/ddl/ob_truncate_table_resolver.cpp +++ b/src/sql/resolver/ddl/ob_truncate_table_resolver.cpp @@ -124,8 +124,6 @@ int ObTruncateTableResolver::resolve(const ParseNode &parser_tree) to_cstring(truncate_table_stmt->get_table_name())); } } else { - const bool is_add_to_scheduler = orig_table_schema->is_user_table() ? true : false; - truncate_table_stmt->set_is_add_scheduler(is_add_to_scheduler); if (orig_table_schema->is_oracle_tmp_table()) { truncate_table_stmt->set_truncate_oracle_temp_table(); truncate_table_stmt->set_oracle_temp_table_type(orig_table_schema->get_table_type()); diff --git a/src/sql/resolver/ddl/ob_truncate_table_stmt.h b/src/sql/resolver/ddl/ob_truncate_table_stmt.h index 71d5f9f9a..61cfb9929 100644 --- a/src/sql/resolver/ddl/ob_truncate_table_stmt.h +++ b/src/sql/resolver/ddl/ob_truncate_table_stmt.h @@ -34,8 +34,6 @@ public: uint64_t get_tenant_id() const { return truncate_table_arg_.tenant_id_; } const common::ObString& get_database_name() const { return truncate_table_arg_.database_name_; } const common::ObString& get_table_name() const { return truncate_table_arg_.table_name_; } - void set_is_add_scheduler(bool is_add_to_scheduler) - { truncate_table_arg_.is_add_to_scheduler_ = is_add_to_scheduler; } inline const obrpc::ObTruncateTableArg &get_truncate_table_arg() const; obrpc::ObTruncateTableArg &get_truncate_table_arg() { return truncate_table_arg_; }