group_id unexpected condition

This commit is contained in:
zhjc1124 2024-06-18 03:52:09 +00:00 committed by ob-robot
parent 860a67d2fc
commit f5c8989764
4 changed files with 29 additions and 8 deletions

View File

@ -85,6 +85,29 @@ Worker::Status Worker::check_wait()
return ret_status;
}
const uint64_t OBCG_DEFAULT_GROUP_ID = 0;
const uint64_t USER_RESOURCE_GROUP_START_ID = 10000;
const uint64_t OB_INVALID_GROUP_ID = UINT64_MAX;
OB_INLINE bool is_user_group(const uint64_t group_id)
{
return group_id >= USER_RESOURCE_GROUP_START_ID && group_id != OB_INVALID_GROUP_ID;
}
OB_INLINE bool is_valid_resource_group(const uint64_t group_id)
{
// other group or user group
return group_id == OBCG_DEFAULT_GROUP_ID || is_user_group(group_id);
}
void Worker::set_group_id(int32_t group_id)
{
const int64_t USER_RESOURCE_GROUP_START_ID = 10000;
if (OBCG_DEFAULT_GROUP_ID == group_id_ || (is_user_group(group_id_) && is_valid_resource_group(group_id))) {
group_id_ = group_id;
} else {
LOG_ERROR_RET(OB_INNER_STAT_ERROR, "group_id is unexpected", K(group_id_), K(group_id));
}
}
bool Worker::sched_wait()
{

View File

@ -81,7 +81,7 @@ public:
OB_INLINE void set_curr_request_level(const int32_t level) { curr_request_level_ = level; }
OB_INLINE int32_t get_curr_request_level() const { return curr_request_level_; }
OB_INLINE void set_group_id(int32_t group_id) { group_id_ = group_id; }
void set_group_id(int32_t group_id);
OB_INLINE int32_t get_group_id() const { return group_id_; }
OB_INLINE void set_rpc_stat_srv(void *rpc_stat_srv) { rpc_stat_srv_ = rpc_stat_srv; }

View File

@ -170,7 +170,11 @@ ObIOMode ObIOFlag::get_mode() const
void ObIOFlag::set_resource_group_id(const uint64_t group_id)
{
group_id_ = group_id;
if (!is_valid_resource_group(group_id)) {
group_id_ = USER_RESOURCE_OTHER_GROUP_ID;
} else {
group_id_ = group_id;
}
}
void ObIOFlag::set_wait_event(int64_t wait_event_id)

View File

@ -177,12 +177,6 @@ TEST_F(TestIOStruct, IOFlag)
flag2.set_mode((ObIOMode)88);
ASSERT_FALSE(flag2.is_valid());
// test io group
flag2 = flag;
ASSERT_TRUE(flag2.is_valid());
flag2.set_resource_group_id(OB_INVALID_GROUP_ID);
ASSERT_FALSE(flag2.is_valid());
// test wait event number
flag2 = flag;
ASSERT_TRUE(flag2.is_valid());