You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by yj...@apache.org on 2016/01/21 03:36:56 UTC
incubator-hawq git commit: HAWQ-344. When resource queue capacity is
shrunk, deadlock detection maybe not triggered. Fix connection counter bug.
Repository: incubator-hawq
Updated Branches:
refs/heads/master b95ed2513 -> e21d5257e
HAWQ-344. When resource queue capacity is shrunk, deadlock detection maybe not triggered. Fix connection counter bug.
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/e21d5257
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/e21d5257
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/e21d5257
Branch: refs/heads/master
Commit: e21d5257ebfcc826d5a17b159e3fe1918edb6084
Parents: b95ed25
Author: YI JIN <yj...@pivotal.io>
Authored: Thu Jan 21 13:36:10 2016 +1100
Committer: YI JIN <yj...@pivotal.io>
Committed: Thu Jan 21 13:36:10 2016 +1100
----------------------------------------------------------------------
src/backend/resourcemanager/resqueuemanager.c | 26 ++++++++++++++++++++++
1 file changed, 26 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/e21d5257/src/backend/resourcemanager/resqueuemanager.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/resqueuemanager.c b/src/backend/resourcemanager/resqueuemanager.c
index 9ccf619..1f27525 100644
--- a/src/backend/resourcemanager/resqueuemanager.c
+++ b/src/backend/resourcemanager/resqueuemanager.c
@@ -2173,6 +2173,7 @@ void returnConnectionToQueue(ConnectionTrack conntrack, bool istimeout)
track->CurConnCounter--;
if ( track->CurConnCounter == 0 )
{
+ elog(RMLOG, "Resource queue %s becomes idle.", track->QueueInfo->Name);
track->isBusy = false;
refreshMemoryCoreRatioLimits();
refreshMemoryCoreRatioWaterMark();
@@ -4593,6 +4594,18 @@ void detectAndDealWithDeadLock(DynResourceQueueTrack track)
MEMORY_CONTEXT_SWITCH_TO(PCONTEXT)
PCONTRACK->ConnToSend = lappend(PCONTRACK->ConnToSend, canceltrack);
MEMORY_CONTEXT_SWITCH_BACK
+
+ /* Recycle connection track instance. */
+ Assert(track->CurConnCounter > 0);
+ track->CurConnCounter--;
+ if ( track->CurConnCounter == 0 )
+ {
+ elog(RMLOG, "Resource queue %s becomes idle after deadlock checking.",
+ track->QueueInfo->Name);
+ track->isBusy = false;
+ refreshMemoryCoreRatioLimits();
+ refreshMemoryCoreRatioWaterMark();
+ }
}
}
}
@@ -5527,6 +5540,19 @@ void applyResourceQueueTrackChangesFromShadows(List *quehavingshadow)
MEMORY_CONTEXT_SWITCH_TO(PCONTEXT)
PCONTRACK->ConnToSend = lappend(PCONTRACK->ConnToSend, conn);
MEMORY_CONTEXT_SWITCH_BACK
+
+ /* Recycle connection track instance. */
+ Assert(quetrack->CurConnCounter > 0);
+ quetrack->CurConnCounter--;
+ if ( quetrack->CurConnCounter == 0 )
+ {
+ elog(RMLOG, "Resource queue %s becomes idle after applying "
+ "change from its shadow.",
+ quetrack->QueueInfo->Name);
+ quetrack->isBusy = false;
+ refreshMemoryCoreRatioLimits();
+ refreshMemoryCoreRatioWaterMark();
+ }
}
else
{