[refactor](wg) enable wg by default and init normal wg in constructor (#31373)

should always enable workload group because other operations depend on it for example MTMV, and spill to disk.
the normal workload group should be created in constructor.
This commit is contained in:
yiguolei
2024-02-25 13:47:20 +08:00
committed by yiguolei
parent 4e5147c6a4
commit 7a1caf4718
5 changed files with 31 additions and 43 deletions

View File

@ -1534,8 +1534,6 @@ public class Env {
editLog.logMasterInfo(masterInfo);
LOG.info("logMasterInfo:{}", masterInfo);
this.workloadGroupMgr.init();
// for master, the 'isReady' is set behind.
// but we are sure that all metadata is replayed if we get here.
// so no need to check 'isReady' flag in this method

View File

@ -90,7 +90,7 @@ public class WorkloadGroup implements Writable, GsonPostProcessable {
private int cpuHardLimit = 0;
private WorkloadGroup(long id, String name, Map<String, String> properties) {
WorkloadGroup(long id, String name, Map<String, String> properties) {
this(id, name, properties, 0);
}

View File

@ -135,6 +135,13 @@ public class WorkloadGroupMgr implements Writable, GsonPostProcessable {
}
public WorkloadGroupMgr() {
Map<String, String> properties = Maps.newHashMap();
properties.put(WorkloadGroup.CPU_SHARE, "1024");
properties.put(WorkloadGroup.MEMORY_LIMIT, "30%");
properties.put(WorkloadGroup.ENABLE_MEMORY_OVERCOMMIT, "true");
WorkloadGroup defaultWorkloadGroup = new WorkloadGroup(1, DEFAULT_GROUP_NAME, properties);
nameToWorkloadGroup.put(DEFAULT_GROUP_NAME, defaultWorkloadGroup);
idToWorkloadGroup.put(defaultWorkloadGroup.getId(), defaultWorkloadGroup);
}
public static WorkloadGroupMgr read(DataInput in) throws IOException {
@ -158,12 +165,6 @@ public class WorkloadGroupMgr implements Writable, GsonPostProcessable {
lock.writeLock().unlock();
}
public void init() {
if (Config.enable_workload_group || Config.use_fuzzy_session_variable /* for github workflow */) {
checkAndCreateDefaultGroup();
}
}
public List<TPipelineWorkloadGroup> getWorkloadGroup(ConnectContext context) throws UserException {
String groupName = getWorkloadGroupNameAndCheckPriv(context);
List<TPipelineWorkloadGroup> workloadGroups = Lists.newArrayList();
@ -239,29 +240,6 @@ public class WorkloadGroupMgr implements Writable, GsonPostProcessable {
return groupName;
}
private void checkAndCreateDefaultGroup() {
WorkloadGroup defaultWorkloadGroup = null;
writeLock();
try {
if (nameToWorkloadGroup.containsKey(DEFAULT_GROUP_NAME)) {
return;
}
Map<String, String> properties = Maps.newHashMap();
properties.put(WorkloadGroup.CPU_SHARE, "1024");
properties.put(WorkloadGroup.MEMORY_LIMIT, "30%");
properties.put(WorkloadGroup.ENABLE_MEMORY_OVERCOMMIT, "true");
defaultWorkloadGroup = WorkloadGroup.create(DEFAULT_GROUP_NAME, properties);
nameToWorkloadGroup.put(DEFAULT_GROUP_NAME, defaultWorkloadGroup);
idToWorkloadGroup.put(defaultWorkloadGroup.getId(), defaultWorkloadGroup);
Env.getCurrentEnv().getEditLog().logCreateWorkloadGroup(defaultWorkloadGroup);
} catch (DdlException e) {
LOG.warn("Create workload group " + DEFAULT_GROUP_NAME + " fail");
} finally {
writeUnlock();
}
LOG.info("Create workload group success: {}", defaultWorkloadGroup);
}
public void createWorkloadGroup(CreateWorkloadGroupStmt stmt) throws DdlException {
WorkloadGroup workloadGroup = WorkloadGroup.create(stmt.getWorkloadGroupName(), stmt.getProperties());
String workloadGroupName = workloadGroup.getName();