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/18 06:13:36 UTC

incubator-hawq git commit: HAWQ-345. Can not drop a resource queue that is busy

Repository: incubator-hawq
Updated Branches:
  refs/heads/master 90ab2d406 -> ae575f323


HAWQ-345. Can not drop a resource queue that is busy


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/ae575f32
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/ae575f32
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/ae575f32

Branch: refs/heads/master
Commit: ae575f323ffc80c9dfc0220067e5482c38251e8c
Parents: 90ab2d4
Author: YI JIN <yj...@pivotal.io>
Authored: Mon Jan 18 16:13:24 2016 +1100
Committer: YI JIN <yj...@pivotal.io>
Committed: Mon Jan 18 16:13:24 2016 +1100

----------------------------------------------------------------------
 .../resourcemanager/requesthandler_ddl.c        | 64 ++++++++++----------
 1 file changed, 33 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae575f32/src/backend/resourcemanager/requesthandler_ddl.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/requesthandler_ddl.c b/src/backend/resourcemanager/requesthandler_ddl.c
index 3fa3742..651f32b 100644
--- a/src/backend/resourcemanager/requesthandler_ddl.c
+++ b/src/backend/resourcemanager/requesthandler_ddl.c
@@ -450,16 +450,13 @@ bool handleRMDDLRequestManipulateResourceQueue(void **arg)
 												   &exist);
 			if (!exist || todroptrack == NULL )
 			{
-				/* already check before send RPC to RM */
-				Assert(exist);
 				ddlres = RESQUEMGR_NO_QUENAME;
 				snprintf(errorbuf, sizeof(errorbuf),
-						"The queue doesn't exist");
-				elog(WARNING, ERRORPOS_FORMAT
-					 "Resource manager can not drop resource queue %s because %s",
-					 ERRREPORTPOS,
-					 nameattr->Val.Str,
-					 errorbuf);
+						 "resource queue %s doesn't exist",
+						 nameattr->Val.Str);
+				elog(WARNING, "Resource manager cannot drop resource queue %s, %s",
+							  nameattr->Val.Str,
+							  errorbuf);
 				goto senderr;
 			}
 
@@ -469,11 +466,21 @@ bool handleRMDDLRequestManipulateResourceQueue(void **arg)
 				snprintf(errorbuf, sizeof(errorbuf),
 						 "resource queue %s is a branch queue",
 						 todroptrack->QueueInfo->Name);
-				elog(WARNING, ERRORPOS_FORMAT
-					 "Resource manager can not drop resource queue %s because %s.",
-					 ERRREPORTPOS,
-					 nameattr->Val.Str,
-					 errorbuf);
+				elog(WARNING, "Resource manager cannot drop resource queue %s, %s",
+							  nameattr->Val.Str,
+							  errorbuf);
+				goto senderr;
+			}
+
+			if ( todroptrack->isBusy ||
+				 todroptrack->QueryResRequests.NodeCount > 0 )
+			{
+				ddlres = RESQUEMGR_IN_USE;
+				snprintf(errorbuf, sizeof(errorbuf), "resource queue %s is busy",
+						 todroptrack->QueueInfo->Name);
+				elog(WARNING, "Resource manager cannot drop resource queue %s, %s",
+							  nameattr->Val.Str,
+							  errorbuf);
 				goto senderr;
 			}
 
@@ -483,12 +490,10 @@ bool handleRMDDLRequestManipulateResourceQueue(void **arg)
 				Assert(todroptrack->QueueInfo->OID != DEFAULTRESQUEUE_OID);
 				ddlres = RESQUEMGR_IN_USE;
 				snprintf(errorbuf, sizeof(errorbuf),
-						"pg_default as system queue cannot be dropped.");
-				elog(WARNING, ERRORPOS_FORMAT
-					 "Resource manager can not drop resource queue %s because %s",
-					 ERRREPORTPOS,
-					 nameattr->Val.Str,
-					 errorbuf);
+						"pg_default as system queue cannot be dropped");
+				elog(WARNING, "Resource manager cannot drop resource queue %s, %s",
+							  nameattr->Val.Str,
+							  errorbuf);
 				goto senderr;
 			}
 
@@ -499,11 +504,9 @@ bool handleRMDDLRequestManipulateResourceQueue(void **arg)
 				ddlres = RESQUEMGR_IN_USE;
 				snprintf(errorbuf, sizeof(errorbuf),
 						"pg_root as system queue cannot be dropped.");
-				elog(WARNING, ERRORPOS_FORMAT
-					 "Resource manager can not drop resource queue %s because %s",
-					 ERRREPORTPOS,
-					 nameattr->Val.Str,
-					 errorbuf);
+				elog(WARNING, "Resource manager cannot drop resource queue %s, %s",
+							  nameattr->Val.Str,
+							  errorbuf);
 				goto senderr;
 			}
 
@@ -514,12 +517,10 @@ bool handleRMDDLRequestManipulateResourceQueue(void **arg)
 			{
 				ddlres = res;
 				snprintf(errorbuf, sizeof(errorbuf),
-						 "Cannot update resource queue changes in pg_resqueue");
-				elog(WARNING, ERRORPOS_FORMAT
-					 "Resource manager cannot drop resource queue %s because %s",
-					 ERRREPORTPOS,
-					 nameattr->Val.Str,
-					 errorbuf);
+						 "cannot update resource queue changes in pg_resqueue");
+				elog(WARNING, "Resource manager cannot drop resource queue %s, %s",
+							  nameattr->Val.Str,
+							  errorbuf);
 				goto senderr;
 			}
 
@@ -527,7 +528,8 @@ bool handleRMDDLRequestManipulateResourceQueue(void **arg)
 			if (res != FUNC_RETURN_OK)
 			{
 				ddlres = res;
-				elog(WARNING, "Resource manager can not dropQueueAndTrack because %s",
+				elog(WARNING, "Resource manager cannot drop resource queue %s, %s",
+							  nameattr->Val.Str,
 						      errorbuf);
 				goto senderr;
 			}