Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
eaae4a5b
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
eaae4a5b
编写于
11月 08, 2017
作者:
P
Pengzhou Tang
提交者:
Tang Pengzhou
11月 09, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Bring back
c3d8a92e
which was reverted by accident
上级
1f6085cd
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
55 addition
and
1 deletion
+55
-1
src/backend/cdb/dispatcher/cdbdisp_async.c
src/backend/cdb/dispatcher/cdbdisp_async.c
+19
-1
src/test/regress/input/dispatch.source
src/test/regress/input/dispatch.source
+10
-0
src/test/regress/output/dispatch.source
src/test/regress/output/dispatch.source
+26
-0
未找到文件。
src/backend/cdb/dispatcher/cdbdisp_async.c
浏览文件 @
eaae4a5b
...
...
@@ -418,6 +418,7 @@ checkDispatchResult(CdbDispatcherState *ds,
int
sock
;
int
n
;
int
nfds
=
0
;
PGconn
*
conn
;
/*
* bail-out if we are dying. Once QD dies, QE will recognize it
...
...
@@ -441,6 +442,7 @@ checkDispatchResult(CdbDispatcherState *ds,
{
dispatchResult
=
pParms
->
dispatchResultPtrArray
[
i
];
segdbDesc
=
dispatchResult
->
segdbDesc
;
conn
=
segdbDesc
->
conn
;
/*
* Already finished with this QE?
...
...
@@ -450,10 +452,26 @@ checkDispatchResult(CdbDispatcherState *ds,
Assert
(
!
cdbconn_isBadConnection
(
segdbDesc
));
/*
* Flush out buffer in case some commands are not fully
* dispatched to QEs, this can prevent QD from polling
* on such QEs forever.
*/
if
(
conn
->
outCount
>
0
)
{
/*
* Don't error out here, let following poll() routine to
* handle it.
*/
if
(
pqFlush
(
conn
)
<
0
)
elog
(
LOG
,
"Failed flushing outbound data to %s:%s"
,
segdbDesc
->
whoami
,
PQerrorMessage
(
conn
));
}
/*
* Add socket to fd_set if still connected.
*/
sock
=
PQsocket
(
segdbDesc
->
conn
);
sock
=
PQsocket
(
conn
);
Assert
(
sock
>=
0
);
fds
[
nfds
].
fd
=
sock
;
fds
[
nfds
].
events
=
POLLIN
;
...
...
src/test/regress/input/dispatch.source
浏览文件 @
eaae4a5b
...
...
@@ -308,3 +308,13 @@ select 1 from gp_dist_random('gp_id') limit 1;
-- if previous gang is not destroyed, snapshot collision would happen
select 1 from gp_dist_random('gp_id') limit 1;
select gp_inject_fault('gang_created', 'reset', 1);
--
-- Test that an error happens after a big command is dispatched.
--
select gp_inject_fault('after_one_slice_dispatched', 'error', 1);
select * from gp_dist_random('gp_id')
where gpname > (select * from repeat('sssss', 10000000));
select gp_inject_fault('after_one_slice_dispatched', 'reset', 1);
select * from gp_dist_random('gp_id')
where gpname > (select * from repeat('sssss', 10000000));
src/test/regress/output/dispatch.source
浏览文件 @
eaae4a5b
...
...
@@ -554,3 +554,29 @@ NOTICE: Success:
t
(1 row)
--
-- Test that an error happens after a big command is dispatched.
--
select gp_inject_fault('after_one_slice_dispatched', 'error', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
(1 row)
select * from gp_dist_random('gp_id')
where gpname > (select * from repeat('sssss', 10000000));
ERROR: fault triggered, fault name:'after_one_slice_dispatched' fault type:'error'
select gp_inject_fault('after_one_slice_dispatched', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
(1 row)
select * from gp_dist_random('gp_id')
where gpname > (select * from repeat('sssss', 10000000));
gpname | numsegments | dbid | content
--------+-------------+------+---------
(0 rows)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录