Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
clmforever
oceanbase
提交
86bdd489
O
oceanbase
项目概览
clmforever
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
86bdd489
编写于
3月 02, 2023
作者:
H
Hongqin-Li
提交者:
ob-robot
3月 02, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix offline ddl enter before index task finish
上级
fd3296d7
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
23 addition
and
0 deletion
+23
-0
src/rootserver/ddl_task/ob_ddl_task.cpp
src/rootserver/ddl_task/ob_ddl_task.cpp
+15
-0
src/rootserver/ob_ddl_service.cpp
src/rootserver/ob_ddl_service.cpp
+7
-0
src/share/ob_debug_sync_point.h
src/share/ob_debug_sync_point.h
+1
-0
未找到文件。
src/rootserver/ddl_task/ob_ddl_task.cpp
浏览文件 @
86bdd489
...
...
@@ -2613,6 +2613,21 @@ int ObDDLTaskRecordOperator::check_has_conflict_ddl(
}
break
;
}
case
ObDDLType
::
DDL_DOUBLE_TABLE_OFFLINE
:
case
ObDDLType
::
DDL_MODIFY_COLUMN
:
case
ObDDLType
::
DDL_ADD_PRIMARY_KEY
:
case
ObDDLType
::
DDL_DROP_PRIMARY_KEY
:
case
ObDDLType
::
DDL_ALTER_PRIMARY_KEY
:
case
ObDDLType
::
DDL_ALTER_PARTITION_BY
:
case
ObDDLType
::
DDL_DROP_COLUMN
:
case
ObDDLType
::
DDL_CONVERT_TO_CHARACTER
:
case
ObDDLType
::
DDL_ADD_COLUMN_OFFLINE
:
case
ObDDLType
::
DDL_COLUMN_REDEFINITION
:
case
ObDDLType
::
DDL_TABLE_REDEFINITION
:
case
ObDDLType
::
DDL_DIRECT_LOAD
:
{
has_conflict_ddl
=
true
;
break
;
}
default:
{
// do nothing
}
...
...
src/rootserver/ob_ddl_service.cpp
浏览文件 @
86bdd489
...
...
@@ -10867,6 +10867,7 @@ int ObDDLService::do_offline_ddl_in_trans(obrpc::ObAlterTableArg &alter_table_ar
// submit async build index task
if (OB_FAIL(ret)) {
} else if (is_double_table_long_running_ddl(ddl_type)) {
bool has_conflict_ddl = false;
ObCreateDDLTaskParam param(tenant_id,
ddl_type,
orig_table_schema,
...
...
@@ -10882,6 +10883,11 @@ int ObDDLService::do_offline_ddl_in_trans(obrpc::ObAlterTableArg &alter_table_ar
(void)snprintf(err_msg, sizeof(err_msg), "%s on temporary table is", ddl_type_str(ddl_type));
LOG_WARN("double table long running ddl on temporary table is disallowed", K(ret), K(ddl_type));
LOG_USER_ERROR(OB_OP_NOT_ALLOW, err_msg);
} else if (OB_FAIL(ObDDLTaskRecordOperator::check_has_conflict_ddl(sql_proxy_, tenant_id, orig_table_schema->get_table_id(), 0, ddl_type, has_conflict_ddl))) {
LOG_WARN("failed to check ddl conflict", K(ret));
} else if (has_conflict_ddl) {
ret = OB_SCHEMA_EAGAIN;
LOG_WARN("failed to alter table that has conflict ddl", K(ret), K(orig_table_schema->get_table_id()));
} else if (OB_FAIL(root_service->get_ddl_scheduler().create_ddl_task(param, trans, task_record))) {
LOG_WARN("submit ddl task failed", K(ret));
} else {
...
...
@@ -19697,6 +19703,7 @@ int ObDDLService::update_index_status(const obrpc::ObUpdateIndexStatusArg &arg)
ret = OB_SUCC(ret) ? commit_ret : ret;
}
}
DEBUG_SYNC(AFTER_UPDATE_INDEX_STATUS);
if (OB_SUCC(ret)) {
if (OB_FAIL(publish_schema(tenant_id))) {
LOG_WARN("publish schema failed", KR(ret));
src/share/ob_debug_sync_point.h
浏览文件 @
86bdd489
...
...
@@ -453,6 +453,7 @@ class ObString;
ACT(BEFORE_DATA_TABLETS_MIGRATION_TASK,)\
ACT(AFTER_LS_GC_DELETE_ALL_TABLETS,)\
ACT(BEFORE_ARCHIVE_ADD_LS_TASK,)\
ACT(AFTER_UPDATE_INDEX_STATUS,)\
ACT(MAX_DEBUG_SYNC_POINT,)
DECLARE_ENUM
(
ObDebugSyncPoint
,
debug_sync_point
,
OB_DEBUG_SYNC_POINT_DEF
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录