diff --git a/src/rootserver/ob_ddl_service.cpp b/src/rootserver/ob_ddl_service.cpp index aeefee991d..2bfda94d8a 100755 --- a/src/rootserver/ob_ddl_service.cpp +++ b/src/rootserver/ob_ddl_service.cpp @@ -25352,8 +25352,11 @@ int ObDDLService::drop_tenant(const ObDropTenantArg &arg) FLOG_INFO("is standby tenant, need drop force", K(tenant_info)); } } - - if (FAILEDx(schema_guard.get_schema_version(OB_SYS_TENANT_ID, refreshed_schema_version))) { + if (OB_FAIL(ret)) { + // ignore + } else if (OB_ISNULL(tenant_schema)) { + // We need to ignore the drop tenant if exists statement in the case that the tenant has already been deleted + } else if (OB_FAIL(schema_guard.get_schema_version(OB_SYS_TENANT_ID, refreshed_schema_version))) { LOG_WARN("failed to get tenant schema version", KR(ret)); } else if (OB_FAIL(trans.start(sql_proxy_, OB_SYS_TENANT_ID, refreshed_schema_version))) { LOG_WARN("start transaction failed", KR(ret), K(user_tenant_id), K(refreshed_schema_version)); diff --git a/src/share/ob_debug_sync_point.h b/src/share/ob_debug_sync_point.h index 08fbe16f26..f4fc7fdd29 100755 --- a/src/share/ob_debug_sync_point.h +++ b/src/share/ob_debug_sync_point.h @@ -561,6 +561,7 @@ class ObString; ACT(BEFORE_CHECK_LS_TRANSFER_SCN_FOR_STANDBY,)\ ACT(BEFORE_GET_CONFIG_VERSION_AND_TRANSFER_SCN,)\ ACT(LS_GC_BEFORE_OFFLINE,)\ + ACT(BEFORE_DROP_TENANT,)\ ACT(MAX_DEBUG_SYNC_POINT,) DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF); diff --git a/src/sql/engine/cmd/ob_tenant_executor.cpp b/src/sql/engine/cmd/ob_tenant_executor.cpp index 0687846c77..e4f0f7d92f 100644 --- a/src/sql/engine/cmd/ob_tenant_executor.cpp +++ b/src/sql/engine/cmd/ob_tenant_executor.cpp @@ -777,11 +777,14 @@ int ObDropTenantExecutor::execute(ObExecContext &ctx, ObDropTenantStmt &stmt) LOG_USER_ERROR(OB_TENANT_NOT_EXIST, drop_tenant_arg.tenant_name_.length(), drop_tenant_arg.tenant_name_.ptr()); LOG_WARN("tenant not exist", KR(ret), K(drop_tenant_arg)); } - } else if (OB_FAIL(common_rpc_proxy->drop_tenant(drop_tenant_arg))) { - LOG_WARN("rpc proxy drop tenant failed", K(ret)); - } else if (OB_FAIL(check_tenant_has_been_dropped_( - ctx, stmt, tenant_schema->get_tenant_id()))) { - LOG_WARN("fail to check tenant has been dropped", KR(ret), KPC(tenant_schema)); + } else { + DEBUG_SYNC(BEFORE_DROP_TENANT); + if (OB_FAIL(common_rpc_proxy->drop_tenant(drop_tenant_arg))) { + LOG_WARN("rpc proxy drop tenant failed", K(ret)); + } else if (OB_FAIL(check_tenant_has_been_dropped_( + ctx, stmt, tenant_schema->get_tenant_id()))) { + LOG_WARN("fail to check tenant has been dropped", KR(ret), KPC(tenant_schema)); + } } return ret; }