Github user huor commented on a diff in the pull request:
https://github.com/apache/incubator-hawq/pull/144#discussion_r46503312
--- Diff: src/backend/resourcemanager/resourcemanager.c ---
@@ -2168,6 +2169,37 @@ int generateAllocRequestToBroker(void)
elog(RMLOG, "Resource manager now needs %d GRM containers.", reqcore);
+ /*
+ * Check if should raise water level to deal with resource fragment or
+ * resource uneven problems. We trigger this logic only when no resource
+ * request caused by lack of resource, and no pending resource are
waited
+ * for.
+ */
+ if ( reqcore <= 0 &&
+ mctrack->TotalPending.Core <= 0 &&
+ (PQUEMGR->hasResourceProblem[RESPROBLEM_FRAGMENT] ||
+ PQUEMGR->hasResourceProblem[RESPROBLEM_UNEVEN] ||
+ PQUEMGR->hasResourceProblem[RESPROBLEM_TOOFEWSEG]) )
+ {
+ /* Check if it is possible to raise water level. */
+ if ( mctrack->TotalAllocated.Core + 1 <=
+ PRESPOOL->GRMTotal.Core * PQUEMGR->GRMQueueMaxCapacity
)
+ {
+ /*
+ * We only add one more GRM container to acquire, this
will trigger
+ * the following logic to raise the water level.
+ */
+ reqcore = 1;
+ reqmem = reqcore * mctrack->MemCoreRatio;
+
+ PQUEMGR->hasResourceProblem[RESPROBLEM_FRAGMENT] =
false;
--- End diff --
Here we are marking fragment, or uneven, or too few segments problem false,
is this means that adding one more container would resolve all these three kind
of issue?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---