You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by wl...@apache.org on 2016/01/20 04:04:10 UTC
incubator-hawq git commit: HAWQ-353. Fix a bug of segment number
mismatch in RM when kill a segment
Repository: incubator-hawq
Updated Branches:
refs/heads/master d17359c0a -> 502a6d234
HAWQ-353. Fix a bug of segment number mismatch in RM when kill a segment
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/502a6d23
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/502a6d23
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/502a6d23
Branch: refs/heads/master
Commit: 502a6d2343c18bb379e4693fb6f1d6bf976b5522
Parents: d17359c
Author: Wen Lin <wl...@pivotal.io>
Authored: Wed Jan 20 11:03:22 2016 +0800
Committer: Wen Lin <wl...@pivotal.io>
Committed: Wed Jan 20 11:03:22 2016 +0800
----------------------------------------------------------------------
.../resourcemanager/include/resourcepool.h | 2 -
src/backend/resourcemanager/resourcepool.c | 46 ++++++--------------
2 files changed, 13 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/502a6d23/src/backend/resourcemanager/include/resourcepool.h
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/include/resourcepool.h b/src/backend/resourcemanager/include/resourcepool.h
index 539735d..12ee5ae 100644
--- a/src/backend/resourcemanager/include/resourcepool.h
+++ b/src/backend/resourcemanager/include/resourcepool.h
@@ -633,8 +633,6 @@ int getOrderedResourceAllocTreeIndexByRatio(uint32_t ratio, BBST *tree);
void setAllSegResourceGRMUnavailable(void);
-int getAllSegResourceFTSAvailableNumber(void);
-
struct RB_GRMContainerStatData
{
int64_t ContainerID;
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/502a6d23/src/backend/resourcemanager/resourcepool.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/resourcepool.c b/src/backend/resourcemanager/resourcepool.c
index 07bd655..fdc90f5 100644
--- a/src/backend/resourcemanager/resourcepool.c
+++ b/src/backend/resourcemanager/resourcepool.c
@@ -714,8 +714,9 @@ void add_segment_config_row(int32_t id,
}
elog(LOG, "Add a new row into segment configuration catalog table,"
- "registration order:%d, role:%c, status:%c, port:%d, hostname:%s, address:%s",
- id, role, status, port, hostname, address);
+ "registration order:%d, role:%c, status:%c, port:%d, "
+ "hostname:%s, address:%s, failed_tmpdir_num:%d, failed_tmpdir:%s",
+ id, role, status, port, hostname, address, failed_tmpdir_num, failed_tmpdir);
cleanup:
if(sql)
@@ -873,14 +874,14 @@ int addHAWQSegWithSegStat(SegStat segstat, bool *capstatchanged)
if (segresource->Stat->FTSAvailable == RESOURCE_SEG_STATUS_AVAILABLE)
{
- /* Add this node into the io bytes workload BBST structure. */
- addSegResourceCombinedWorkloadIndex(segresource);
- /* Add this node into the alloc/avail resource ordered indices. */
- addSegResourceAvailIndex(segresource);
- addSegResourceAllocIndex(segresource);
segcapchanged = true;
- *capstatchanged = true;
}
+ /* Add this node into the io bytes workload BBST structure. */
+ addSegResourceCombinedWorkloadIndex(segresource);
+ /* Add this node into the alloc/avail resource ordered indices. */
+ addSegResourceAvailIndex(segresource);
+ addSegResourceAllocIndex(segresource);
+ *capstatchanged = true;
res = FUNC_RETURN_OK;
}
@@ -1310,25 +1311,6 @@ void setAllSegResourceGRMUnavailable(void)
freePAIRRefList(&(PRESPOOL->Segments), &allsegres);
}
-int getAllSegResourceFTSAvailableNumber(void)
-{
- int cnt = 0;
- List *allsegres = NULL;
- ListCell *cell = NULL;
- getAllPAIRRefIntoList(&(PRESPOOL->Segments), &allsegres);
-
- foreach(cell, allsegres)
- {
- SegResource segres = (SegResource)(((PAIR)lfirst(cell))->Value);
- if (segres->Stat->FTSAvailable == RESOURCE_SEG_STATUS_AVAILABLE)
- {
- cnt++;
- }
- }
- freePAIRRefList(&(PRESPOOL->Segments), &allsegres);
- return cnt;
-}
-
/*
* Check index to get host id based on host name string.
*/
@@ -3908,13 +3890,12 @@ void validateResourcePoolStatus(bool refquemgr)
Assert( availtree != NULL );
traverseBBSTMidOrder(availtree, &line);
- int availableCnt = getAllSegResourceFTSAvailableNumber();
- if ( line.NodeCount != availableCnt )
+ if ( line.NodeCount != PRESPOOL->Segments.NodeCount )
{
elog(ERROR, "HAWQ RM Validation. The available resource ordered index "
"contains %d nodes, expect %d nodes.",
line.NodeCount,
- availableCnt);
+ PRESPOOL->Segments.NodeCount);
}
SegResource prevres = NULL;
@@ -3963,13 +3944,12 @@ void validateResourcePoolStatus(bool refquemgr)
Assert( alloctree != NULL );
traverseBBSTMidOrder(alloctree, &line);
- int availableCnt = getAllSegResourceFTSAvailableNumber();
- if ( line.NodeCount != availableCnt )
+ if ( line.NodeCount != PRESPOOL->Segments.NodeCount )
{
elog(ERROR, "HAWQ RM Validation. The allocated resource ordered index "
"contains %d nodes, expect %d nodes.",
line.NodeCount,
- availableCnt);
+ PRESPOOL->Segments.NodeCount);
}
SegResource prevres = NULL;