Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
大炮V587
oceanbase
提交
e527111c
O
oceanbase
项目概览
大炮V587
/
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,发现更多精彩内容 >>
提交
e527111c
编写于
2月 06, 2023
作者:
O
obdev
提交者:
ob-robot
2月 06, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix lock contetion of direct load
上级
e059517f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
15 addition
and
15 deletion
+15
-15
src/observer/table_load/ob_table_load_coordinator_trans.cpp
src/observer/table_load/ob_table_load_coordinator_trans.cpp
+3
-3
src/observer/table_load/ob_table_load_store_trans.cpp
src/observer/table_load/ob_table_load_store_trans.cpp
+5
-5
src/observer/table_load/ob_table_load_trans_ctx.cpp
src/observer/table_load/ob_table_load_trans_ctx.cpp
+4
-4
src/observer/table_load/ob_table_load_trans_ctx.h
src/observer/table_load/ob_table_load_trans_ctx.h
+3
-3
未找到文件。
src/observer/table_load/ob_table_load_coordinator_trans.cpp
浏览文件 @
e527111c
...
@@ -106,7 +106,7 @@ int ObTableLoadCoordinatorTrans::get_bucket_writer_for_write(
...
@@ -106,7 +106,7 @@ int ObTableLoadCoordinatorTrans::get_bucket_writer_for_write(
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
RUNNING
)))
{
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
RUNNING
)))
{
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
}
else
{
}
else
{
ObMutexGuard
guard
(
trans_ctx_
->
mutex
_
);
obsys
::
ObRLockGuard
guard
(
trans_ctx_
->
rwlock
_
);
if
(
OB_ISNULL
(
trans_bucket_writer_
))
{
if
(
OB_ISNULL
(
trans_bucket_writer_
))
{
ret
=
OB_ERR_UNEXPECTED
;
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"unexpected null bucket writer"
,
KR
(
ret
));
LOG_WARN
(
"unexpected null bucket writer"
,
KR
(
ret
));
...
@@ -132,7 +132,7 @@ int ObTableLoadCoordinatorTrans::get_bucket_writer_for_flush(
...
@@ -132,7 +132,7 @@ int ObTableLoadCoordinatorTrans::get_bucket_writer_for_flush(
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
FROZEN
)))
{
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
FROZEN
)))
{
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
}
else
{
}
else
{
ObMutexGuard
guard
(
trans_ctx_
->
mutex
_
);
obsys
::
ObRLockGuard
guard
(
trans_ctx_
->
rwlock
_
);
if
(
OB_ISNULL
(
trans_bucket_writer_
))
{
if
(
OB_ISNULL
(
trans_bucket_writer_
))
{
ret
=
OB_ERR_UNEXPECTED
;
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"unexpected null bucket writer"
,
KR
(
ret
));
LOG_WARN
(
"unexpected null bucket writer"
,
KR
(
ret
));
...
@@ -158,7 +158,7 @@ void ObTableLoadCoordinatorTrans::put_bucket_writer(ObTableLoadTransBucketWriter
...
@@ -158,7 +158,7 @@ void ObTableLoadCoordinatorTrans::put_bucket_writer(ObTableLoadTransBucketWriter
ret
=
OB_INVALID_ARGUMENT
;
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"invalid null bucket writer"
,
KR
(
ret
));
LOG_WARN
(
"invalid null bucket writer"
,
KR
(
ret
));
}
else
{
}
else
{
ObMutexGuard
guard
(
trans_ctx_
->
mutex
_
);
obsys
::
ObRLockGuard
guard
(
trans_ctx_
->
rwlock
_
);
OB_ASSERT
(
trans_bucket_writer_
==
bucket_writer
);
OB_ASSERT
(
trans_bucket_writer_
==
bucket_writer
);
}
}
if
(
OB_SUCC
(
ret
))
{
if
(
OB_SUCC
(
ret
))
{
...
...
src/observer/table_load/ob_table_load_store_trans.cpp
浏览文件 @
e527111c
...
@@ -117,7 +117,7 @@ int ObTableLoadStoreTrans::get_store_writer_for_write(
...
@@ -117,7 +117,7 @@ int ObTableLoadStoreTrans::get_store_writer_for_write(
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
RUNNING
)))
{
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
RUNNING
)))
{
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
}
else
{
}
else
{
ObMutexGuard
guard
(
trans_ctx_
->
mutex
_
);
obsys
::
ObRLockGuard
guard
(
trans_ctx_
->
rwlock
_
);
if
(
OB_ISNULL
(
trans_store_writer_
))
{
if
(
OB_ISNULL
(
trans_store_writer_
))
{
ret
=
OB_ERR_UNEXPECTED
;
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"unexpected null store writer"
,
KR
(
ret
));
LOG_WARN
(
"unexpected null store writer"
,
KR
(
ret
));
...
@@ -143,7 +143,7 @@ int ObTableLoadStoreTrans::get_store_writer_for_flush(
...
@@ -143,7 +143,7 @@ int ObTableLoadStoreTrans::get_store_writer_for_flush(
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
FROZEN
)))
{
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
FROZEN
)))
{
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
}
else
{
}
else
{
ObMutexGuard
guard
(
trans_ctx_
->
mutex
_
);
obsys
::
ObRLockGuard
guard
(
trans_ctx_
->
rwlock
_
);
if
(
OB_ISNULL
(
trans_store_writer_
))
{
if
(
OB_ISNULL
(
trans_store_writer_
))
{
ret
=
OB_ERR_UNEXPECTED
;
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"unexpected null store writer"
,
KR
(
ret
));
LOG_WARN
(
"unexpected null store writer"
,
KR
(
ret
));
...
@@ -170,7 +170,7 @@ int ObTableLoadStoreTrans::get_store_writer_for_clean_up(
...
@@ -170,7 +170,7 @@ int ObTableLoadStoreTrans::get_store_writer_for_clean_up(
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
ABORT
)))
{
}
else
if
(
OB_FAIL
(
check_trans_status
(
ObTableLoadTransStatusType
::
ABORT
)))
{
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
LOG_WARN
(
"fail to check trans status"
,
KR
(
ret
));
}
else
{
}
else
{
ObMutexGuard
guard
(
trans_ctx_
->
mutex
_
);
obsys
::
ObRLockGuard
guard
(
trans_ctx_
->
rwlock
_
);
if
(
OB_ISNULL
(
trans_store_writer_
))
{
if
(
OB_ISNULL
(
trans_store_writer_
))
{
ret
=
OB_ERR_UNEXPECTED
;
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"unexpected null store writer"
,
KR
(
ret
));
LOG_WARN
(
"unexpected null store writer"
,
KR
(
ret
));
...
@@ -192,7 +192,7 @@ void ObTableLoadStoreTrans::put_store_writer(ObTableLoadTransStoreWriter *store_
...
@@ -192,7 +192,7 @@ void ObTableLoadStoreTrans::put_store_writer(ObTableLoadTransStoreWriter *store_
ret
=
OB_INVALID_ARGUMENT
;
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"invalid null store"
,
KR
(
ret
));
LOG_WARN
(
"invalid null store"
,
KR
(
ret
));
}
else
{
}
else
{
ObMutexGuard
guard
(
trans_ctx_
->
mutex
_
);
obsys
::
ObRLockGuard
guard
(
trans_ctx_
->
rwlock
_
);
OB_ASSERT
(
trans_store_writer_
==
store_writer
);
OB_ASSERT
(
trans_store_writer_
==
store_writer
);
}
}
if
(
OB_SUCC
(
ret
))
{
if
(
OB_SUCC
(
ret
))
{
...
@@ -224,7 +224,7 @@ int ObTableLoadStoreTrans::output_store(ObTableLoadTransStore *&trans_store)
...
@@ -224,7 +224,7 @@ int ObTableLoadStoreTrans::output_store(ObTableLoadTransStore *&trans_store)
ret
=
OB_NOT_INIT
;
ret
=
OB_NOT_INIT
;
LOG_WARN
(
"ObTableLoadStoreTrans not init"
,
KR
(
ret
),
KP
(
this
));
LOG_WARN
(
"ObTableLoadStoreTrans not init"
,
KR
(
ret
),
KP
(
this
));
}
else
{
}
else
{
ObMutexGuard
guard
(
trans_ctx_
->
mutex
_
);
obsys
::
ObWLockGuard
guard
(
trans_ctx_
->
rwlock
_
);
if
(
OB_ISNULL
(
trans_store_
)
||
OB_ISNULL
(
trans_store_writer_
))
{
if
(
OB_ISNULL
(
trans_store_
)
||
OB_ISNULL
(
trans_store_writer_
))
{
ret
=
OB_ERR_UNEXPECTED
;
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"unexpected null store"
,
KR
(
ret
),
KP_
(
trans_store
),
KP_
(
trans_store_writer
));
LOG_WARN
(
"unexpected null store"
,
KR
(
ret
),
KP_
(
trans_store
),
KP_
(
trans_store_writer
));
...
...
src/observer/table_load/ob_table_load_trans_ctx.cpp
浏览文件 @
e527111c
...
@@ -33,7 +33,7 @@ int ObTableLoadTransCtx::advance_trans_status(ObTableLoadTransStatusType trans_s
...
@@ -33,7 +33,7 @@ int ObTableLoadTransCtx::advance_trans_status(ObTableLoadTransStatusType trans_s
ret
=
OB_INVALID_ARGUMENT
;
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"invalid args"
,
KR
(
ret
),
K
(
trans_status
));
LOG_WARN
(
"invalid args"
,
KR
(
ret
),
K
(
trans_status
));
}
else
{
}
else
{
ObMutexGuard
guard
(
mutex
_
);
obsys
::
ObWLockGuard
guard
(
rwlock
_
);
if
(
OB_UNLIKELY
(
ObTableLoadTransStatusType
::
ERROR
==
trans_status_
))
{
if
(
OB_UNLIKELY
(
ObTableLoadTransStatusType
::
ERROR
==
trans_status_
))
{
ret
=
error_code_
;
ret
=
error_code_
;
LOG_WARN
(
"trans has error"
,
KR
(
ret
));
LOG_WARN
(
"trans has error"
,
KR
(
ret
));
...
@@ -60,7 +60,7 @@ int ObTableLoadTransCtx::set_trans_status_error(int error_code)
...
@@ -60,7 +60,7 @@ int ObTableLoadTransCtx::set_trans_status_error(int error_code)
ret
=
OB_INVALID_ARGUMENT
;
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"invalid args"
,
KR
(
ret
),
K
(
error_code
));
LOG_WARN
(
"invalid args"
,
KR
(
ret
),
K
(
error_code
));
}
else
{
}
else
{
ObMutexGuard
guard
(
mutex
_
);
obsys
::
ObWLockGuard
guard
(
rwlock
_
);
if
(
OB_UNLIKELY
(
trans_status_
==
ObTableLoadTransStatusType
::
ABORT
))
{
if
(
OB_UNLIKELY
(
trans_status_
==
ObTableLoadTransStatusType
::
ABORT
))
{
ret
=
OB_TRANS_KILLED
;
ret
=
OB_TRANS_KILLED
;
}
else
if
(
trans_status_
!=
ObTableLoadTransStatusType
::
ERROR
)
{
}
else
if
(
trans_status_
!=
ObTableLoadTransStatusType
::
ERROR
)
{
...
@@ -74,7 +74,7 @@ int ObTableLoadTransCtx::set_trans_status_error(int error_code)
...
@@ -74,7 +74,7 @@ int ObTableLoadTransCtx::set_trans_status_error(int error_code)
int
ObTableLoadTransCtx
::
set_trans_status_abort
()
int
ObTableLoadTransCtx
::
set_trans_status_abort
()
{
{
int
ret
=
OB_SUCCESS
;
int
ret
=
OB_SUCCESS
;
ObMutexGuard
guard
(
mutex
_
);
obsys
::
ObWLockGuard
guard
(
rwlock
_
);
trans_status_
=
ObTableLoadTransStatusType
::
ABORT
;
trans_status_
=
ObTableLoadTransStatusType
::
ABORT
;
return
ret
;
return
ret
;
}
}
...
@@ -82,7 +82,7 @@ int ObTableLoadTransCtx::set_trans_status_abort()
...
@@ -82,7 +82,7 @@ int ObTableLoadTransCtx::set_trans_status_abort()
int
ObTableLoadTransCtx
::
check_trans_status
(
ObTableLoadTransStatusType
trans_status
)
const
int
ObTableLoadTransCtx
::
check_trans_status
(
ObTableLoadTransStatusType
trans_status
)
const
{
{
int
ret
=
OB_SUCCESS
;
int
ret
=
OB_SUCCESS
;
ObMutexGuard
guard
(
mutex
_
);
obsys
::
ObRLockGuard
guard
(
rwlock
_
);
if
(
OB_UNLIKELY
(
trans_status
!=
trans_status_
))
{
if
(
OB_UNLIKELY
(
trans_status
!=
trans_status_
))
{
if
(
ObTableLoadTransStatusType
::
ERROR
==
trans_status_
)
{
if
(
ObTableLoadTransStatusType
::
ERROR
==
trans_status_
)
{
ret
=
error_code_
;
ret
=
error_code_
;
...
...
src/observer/table_load/ob_table_load_trans_ctx.h
浏览文件 @
e527111c
...
@@ -20,12 +20,12 @@ public:
...
@@ -20,12 +20,12 @@ public:
ObTableLoadTransCtx
(
ObTableLoadTableCtx
*
ctx
,
const
table
::
ObTableLoadTransId
&
trans_id
);
ObTableLoadTransCtx
(
ObTableLoadTableCtx
*
ctx
,
const
table
::
ObTableLoadTransId
&
trans_id
);
OB_INLINE
table
::
ObTableLoadTransStatusType
get_trans_status
()
const
OB_INLINE
table
::
ObTableLoadTransStatusType
get_trans_status
()
const
{
{
lib
::
ObMutexGuard
guard
(
mutex
_
);
obsys
::
ObRLockGuard
guard
(
rwlock
_
);
return
trans_status_
;
return
trans_status_
;
}
}
OB_INLINE
int
get_error_code
()
const
OB_INLINE
int
get_error_code
()
const
{
{
lib
::
ObMutexGuard
guard
(
mutex
_
);
obsys
::
ObRLockGuard
guard
(
rwlock
_
);
return
error_code_
;
return
error_code_
;
}
}
int
advance_trans_status
(
table
::
ObTableLoadTransStatusType
trans_status
);
int
advance_trans_status
(
table
::
ObTableLoadTransStatusType
trans_status
);
...
@@ -36,7 +36,7 @@ public:
...
@@ -36,7 +36,7 @@ public:
public:
public:
ObTableLoadTableCtx
*
const
ctx_
;
ObTableLoadTableCtx
*
const
ctx_
;
const
table
::
ObTableLoadTransId
trans_id_
;
const
table
::
ObTableLoadTransId
trans_id_
;
mutable
lib
::
ObMutex
mutex
_
;
mutable
obsys
::
ObRWLock
rwlock
_
;
common
::
ObArenaAllocator
allocator_
;
common
::
ObArenaAllocator
allocator_
;
table
::
ObTableLoadTransStatusType
trans_status_
;
table
::
ObTableLoadTransStatusType
trans_status_
;
int
error_code_
;
int
error_code_
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录