[fix](workload-group) fix workload group non-existence error (#20428)

This commit is contained in:
luozenglin
2023-06-05 15:33:26 +08:00
committed by GitHub
parent fe942eaf44
commit a66d5a6ae0
2 changed files with 17 additions and 8 deletions

View File

@ -560,9 +560,9 @@ public class StmtExecutor {
private void handleQueryWithRetry(TUniqueId queryId) throws Exception {
// queue query here
if (!parsedStmt.isExplain() && Config.enable_workload_group && Config.enable_query_queue) {
this.queryQueue = analyzer.getEnv().getWorkloadGroupMgr()
.getWorkloadGroupQueryQueue(context.sessionVariable.workloadGroup);
if (!parsedStmt.isExplain() && Config.enable_workload_group && Config.enable_query_queue
&& context.getSessionVariable().enablePipelineEngine()) {
this.queryQueue = analyzer.getEnv().getWorkloadGroupMgr().getWorkloadGroupQueryQueue(context);
try {
this.offerRet = queryQueue.offer();
} catch (InterruptedException e) {

View File

@ -102,10 +102,7 @@ public class WorkloadGroupMgr implements Writable, GsonPostProcessable {
}
public List<TPipelineWorkloadGroup> getWorkloadGroup(ConnectContext context) throws UserException {
String groupName = context.getSessionVariable().getWorkloadGroup();
if (Strings.isNullOrEmpty(groupName)) {
groupName = Env.getCurrentEnv().getAuth().getWorkloadGroup(context.getQualifiedUser());
}
String groupName = getWorkloadGroupName(context);
List<TPipelineWorkloadGroup> workloadGroups = Lists.newArrayList();
readLock();
try {
@ -120,7 +117,8 @@ public class WorkloadGroupMgr implements Writable, GsonPostProcessable {
return workloadGroups;
}
public QueryQueue getWorkloadGroupQueryQueue(String groupName) throws UserException {
public QueryQueue getWorkloadGroupQueryQueue(ConnectContext context) throws UserException {
String groupName = getWorkloadGroupName(context);
readLock();
try {
WorkloadGroup workloadGroup = nameToWorkloadGroup.get(groupName);
@ -133,6 +131,17 @@ public class WorkloadGroupMgr implements Writable, GsonPostProcessable {
}
}
private String getWorkloadGroupName(ConnectContext context) {
String groupName = context.getSessionVariable().getWorkloadGroup();
if (Strings.isNullOrEmpty(groupName)) {
groupName = Env.getCurrentEnv().getAuth().getWorkloadGroup(context.getQualifiedUser());
}
if (Strings.isNullOrEmpty(groupName)) {
groupName = DEFAULT_GROUP_NAME;
}
return groupName;
}
private void checkAndCreateDefaultGroup() {
WorkloadGroup defaultWorkloadGroup = null;
writeLock();