You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by pa...@apache.org on 2017/02/22 02:33:54 UTC
incubator-hawq git commit: HAWQ-1347. QD should check segment health
only
Repository: incubator-hawq
Updated Branches:
refs/heads/master f77a332fb -> b3cf1a29f
HAWQ-1347. QD should check segment health only
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/b3cf1a29
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/b3cf1a29
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/b3cf1a29
Branch: refs/heads/master
Commit: b3cf1a29f7f97cd81f3c7f741a3f11c0b7f68d71
Parents: f77a332
Author: Paul Guo <pa...@gmail.com>
Authored: Tue Feb 21 18:06:44 2017 +0800
Committer: Paul Guo <pa...@gmail.com>
Committed: Wed Feb 22 10:33:27 2017 +0800
----------------------------------------------------------------------
src/backend/cdb/dispatcher_mgt.c | 2 +-
src/backend/cdb/executormgr.c | 14 ++++++++++----
src/include/cdb/executormgr.h | 2 +-
3 files changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b3cf1a29/src/backend/cdb/dispatcher_mgt.c
----------------------------------------------------------------------
diff --git a/src/backend/cdb/dispatcher_mgt.c b/src/backend/cdb/dispatcher_mgt.c
index 5b1622d..fa4efdb 100644
--- a/src/backend/cdb/dispatcher_mgt.c
+++ b/src/backend/cdb/dispatcher_mgt.c
@@ -326,7 +326,7 @@ dispmgt_thread_func_run(QueryExecutorGroup *group, struct WorkerMgrState *state)
{
write_log("%s(): detected one segment (Global ID: %d) is down, "
"so abort the query that is running or will run on it",
- __func__, executormgr_get_ID(executor));
+ __func__, executormgr_get_segment_ID(executor));
err_handle_executor = executor;
goto error_cleanup;
}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b3cf1a29/src/backend/cdb/executormgr.c
----------------------------------------------------------------------
diff --git a/src/backend/cdb/executormgr.c b/src/backend/cdb/executormgr.c
index 772af1a..5a1c15d 100644
--- a/src/backend/cdb/executormgr.c
+++ b/src/backend/cdb/executormgr.c
@@ -322,9 +322,15 @@ executormgr_get_executor_result(QueryExecutor *executor)
}
int
-executormgr_get_ID(QueryExecutor *executor)
+executormgr_get_segment_ID(QueryExecutor *executor)
{
- return executor->desc->segment->ID;
+ Segment *seg = executor->desc->segment;
+
+ /* For segment only */
+ if (seg->master || seg->standby)
+ return -1;
+
+ return seg->ID;
}
int
@@ -485,9 +491,9 @@ executormgr_check_segment_status(QueryExecutor *executor)
* until timeout when one segment is down. This will cause QD keep polling
* until QE timeout.
*/
- int ID = executormgr_get_ID(executor);
+ int ID = executormgr_get_segment_ID(executor);
- if (IsSegmentDown(ID))
+ if (ID >= 0 && IsSegmentDown(ID))
{
cdbdisp_seterrcode(ERRCODE_GP_INTERCONNECTION_ERROR, -1,
executormgr_get_executor_result(executor));
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b3cf1a29/src/include/cdb/executormgr.h
----------------------------------------------------------------------
diff --git a/src/include/cdb/executormgr.h b/src/include/cdb/executormgr.h
index dfc230f..31d44fa 100644
--- a/src/include/cdb/executormgr.h
+++ b/src/include/cdb/executormgr.h
@@ -70,7 +70,7 @@ extern void executormgr_get_executor_connection_info(struct QueryExecutor *execu
extern bool executormgr_is_stop(struct QueryExecutor *executor);
extern bool executormgr_has_error(struct QueryExecutor *executor);
extern int executormgr_get_executor_slice_id(struct QueryExecutor *executor);
-extern int executormgr_get_ID(struct QueryExecutor *executor);
+extern int executormgr_get_segment_ID(struct QueryExecutor *executor);
extern int executormgr_get_fd(struct QueryExecutor *executor);
extern bool executormgr_cancel(struct QueryExecutor * executor);
extern bool executormgr_dispatch_and_run(struct DispatchData *data, struct QueryExecutor *executor);