Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Metz
oceanbase
提交
66238908
O
oceanbase
项目概览
Metz
/
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看板
提交
66238908
编写于
12月 10, 2021
作者:
Q
qianchanger
提交者:
LINGuanRen
12月 10, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[BUG FIX]storage_val is not equal with sql_val, maybe catch a bug
上级
f39690b5
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
12 addition
and
37 deletion
+12
-37
src/sql/engine/px/ob_dfo_scheduler.cpp
src/sql/engine/px/ob_dfo_scheduler.cpp
+11
-0
src/sql/engine/px/ob_px_sqc_async_proxy.cpp
src/sql/engine/px/ob_px_sqc_async_proxy.cpp
+0
-25
src/sql/engine/px/ob_px_sqc_async_proxy.h
src/sql/engine/px/ob_px_sqc_async_proxy.h
+1
-12
未找到文件。
src/sql/engine/px/ob_dfo_scheduler.cpp
浏览文件 @
66238908
...
...
@@ -980,6 +980,17 @@ int ObParallelDfoScheduler::dispatch_sqc(
}
else
{
LOG_WARN
(
"fail to wait all async init sqc"
,
K
(
ret
),
K
(
dfo
),
K
(
exec_ctx
));
}
// 对于正确process的sqc, 是需要sqc report的, 否则在后续的wait_running_dfo逻辑中不会等待此sqc结束
const
ObSqcAsyncCB
*
cb
=
NULL
;
const
ObArray
<
ObSqcAsyncCB
*>
&
callbacks
=
proxy
.
get_callbacks
();
for
(
int
i
=
0
;
i
<
callbacks
.
count
();
++
i
)
{
cb
=
callbacks
.
at
(
i
);
if
(
OB_NOT_NULL
(
cb
)
&&
cb
->
is_processed
()
&&
OB_SUCCESS
==
cb
->
get_ret_code
().
rcode_
&&
OB_SUCCESS
==
cb
->
get_result
().
rc_
)
{
ObPxSqcMeta
&
sqc
=
*
sqcs
.
at
(
i
);
sqc
.
set_need_report
(
true
);
}
}
}
else
{
const
ObArray
<
ObSqcAsyncCB
*>&
callbacks
=
proxy
.
get_callbacks
();
ARRAY_FOREACH
(
callbacks
,
idx
)
{
...
...
src/sql/engine/px/ob_px_sqc_async_proxy.cpp
浏览文件 @
66238908
...
...
@@ -206,19 +206,6 @@ int ObPxSqcAsyncProxy::wait_all()
LOG_WARN
(
"call rpc failed"
,
K
(
ret
),
K
(
callback
.
get_ret_code
()));
}
}
if
(
callback
.
need_retry
()
&&
OB_SUCC
(
ret
))
{
// need retry the task.
// reset: visit, eturn_cb_count_
callback
.
set_visited
(
false
);
return_cb_count_
--
;
if
(
check_for_retry
(
callback
))
{
callback
.
reset
();
if
(
OB_FAIL
(
launch_one_rpc_request
(
idx
,
&
callback
)))
{
LOG_WARN
(
"retrying to send sqc rpc failed"
);
}
}
}
}
}
...
...
@@ -244,18 +231,6 @@ void ObPxSqcAsyncProxy::destroy()
results_
.
reuse
();
}
bool
ObPxSqcAsyncProxy
::
check_for_retry
(
ObSqcAsyncCB
&
callback
)
{
bool
retry
=
false
;
int64_t
timeout_us
=
phy_plan_ctx_
->
get_timeout_timestamp
()
-
ObTimeUtility
::
current_time
();
int64_t
send_duration
=
ObTimeUtility
::
current_time
()
-
callback
.
get_send_ts
();
// avoid retry too mutch
if
(
timeout_us
>=
100
*
1000L
&&
send_duration
>=
10
*
1000L
)
{
retry
=
true
;
}
return
retry
;
}
void
ObPxSqcAsyncProxy
::
fail_process
()
{
LOG_WARN
(
"async sqc fails, process the callbacks that have not yet got results"
,
...
...
src/sql/engine/px/ob_px_sqc_async_proxy.h
浏览文件 @
66238908
...
...
@@ -57,7 +57,6 @@ public:
is_timeout_
=
false
;
is_invalid_
=
false
;
is_visited_
=
false
;
need_retry_
=
false
;
}
void
set_visited
(
bool
value
)
{
...
...
@@ -83,14 +82,6 @@ public:
{
return
is_processed_
;
}
void
set_retry
(
bool
value
)
{
need_retry_
=
value
;
}
bool
need_retry
()
const
{
return
need_retry_
;
}
const
obrpc
::
ObRpcResultCode
get_ret_code
()
const
{
return
rcode_
;
...
...
@@ -113,8 +104,7 @@ private:
bool
is_timeout_
;
bool
is_invalid_
;
bool
is_visited_
;
bool
need_retry_
;
ObThreadCond
&
cond_
;
ObThreadCond
&
cond_
;
ObCurTraceId
::
TraceId
trace_id_
;
};
...
...
@@ -160,7 +150,6 @@ private:
void
destroy
();
// asynchronously request a single sqc rpc task
int
launch_one_rpc_request
(
int64_t
idx
,
ObSqcAsyncCB
*
cb
);
bool
check_for_retry
(
ObSqcAsyncCB
&
callback
);
void
fail_process
();
private:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录