[CP] add consumer group name check
This commit is contained in:
@ -133,6 +133,10 @@ int ObPlDBMSResourceManager::create_consumer_group(
|
|||||||
LOG_WARN("name of consumer group cannot be null or empty", K(ret));
|
LOG_WARN("name of consumer group cannot be null or empty", K(ret));
|
||||||
// consumer_group 肯定存在,所以可以 get_string 读取,
|
// consumer_group 肯定存在,所以可以 get_string 读取,
|
||||||
// COMMENT 是可选的可能为 null,所以传入 ObObj
|
// COMMENT 是可选的可能为 null,所以传入 ObObj
|
||||||
|
} else if (!GCTX.cgroup_ctrl_->is_valid_group_name(consumer_group)) {
|
||||||
|
ret = OB_INVALID_ARGUMENT;
|
||||||
|
LOG_USER_ERROR(OB_INVALID_ARGUMENT, "invalid consumer group name");
|
||||||
|
LOG_WARN("invalid consumer group name", K(ret), K(consumer_group));
|
||||||
} else if (OB_FAIL(proxy.create_consumer_group(tenant_id, consumer_group, params.at(COMMENT)))) {
|
} else if (OB_FAIL(proxy.create_consumer_group(tenant_id, consumer_group, params.at(COMMENT)))) {
|
||||||
LOG_WARN("fail create consumer_group", K(tenant_id), K(consumer_group), K(ret));
|
LOG_WARN("fail create consumer_group", K(tenant_id), K(consumer_group), K(ret));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,6 +59,26 @@ bool OBGroupIOInfo::is_valid() const
|
|||||||
return min_percent_ >= 0 && max_percent_ >= min_percent_ && max_percent_ <= 100 && weight_percent_ >= 0 && weight_percent_ <= 100;
|
return min_percent_ >= 0 && max_percent_ >= min_percent_ && max_percent_ <= 100 && weight_percent_ >= 0 && weight_percent_ <= 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ObCgroupCtrl::is_valid_group_name(ObString &group_name)
|
||||||
|
{
|
||||||
|
bool bool_ret = true;
|
||||||
|
const char *group_name_ptr = group_name.ptr();
|
||||||
|
if (group_name.length() < 0 || group_name.length() > GROUP_NAME_BUFSIZE) {
|
||||||
|
bool_ret = false;
|
||||||
|
} else {
|
||||||
|
for(int i = 0; i < group_name.length() && bool_ret; i++) {
|
||||||
|
// only support [a-zA-Z0-9_]
|
||||||
|
if (!((group_name_ptr[i] >= 'a' && group_name_ptr[i] <= 'z') ||
|
||||||
|
(group_name_ptr[i] >= 'A' && group_name_ptr[i] <= 'Z') ||
|
||||||
|
(group_name_ptr[i] >= '0' && group_name_ptr[i] <= '9') ||
|
||||||
|
(group_name_ptr[i] == '_'))) {
|
||||||
|
bool_ret = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bool_ret;
|
||||||
|
}
|
||||||
|
|
||||||
// 创建cgroup初始目录结构,将所有线程加入other组
|
// 创建cgroup初始目录结构,将所有线程加入other组
|
||||||
int ObCgroupCtrl::init()
|
int ObCgroupCtrl::init()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -143,6 +143,8 @@ public:
|
|||||||
void destroy() { /* 进程退出后tid会自动从cgroup tasks中删除 */ }
|
void destroy() { /* 进程退出后tid会自动从cgroup tasks中删除 */ }
|
||||||
bool is_valid() { return valid_; }
|
bool is_valid() { return valid_; }
|
||||||
|
|
||||||
|
bool is_valid_group_name(common::ObString &group_name);
|
||||||
|
|
||||||
// 删除租户cgroup规则
|
// 删除租户cgroup规则
|
||||||
int remove_tenant_cgroup(const uint64_t tenant_id);
|
int remove_tenant_cgroup(const uint64_t tenant_id);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user