fix get_ls_init_member_list
This commit is contained in:
parent
5eef4de86d
commit
ce48d4640d
@ -72,7 +72,7 @@ TEST_F(TestLSStatusOperator, SQLProxy)
|
||||
ret = inner_proxy.read(res, sql.ptr());
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
ret = inner_proxy.read(res, cluster_id, OB_SYS_TENANT_ID, sql.ptr());
|
||||
ASSERT_EQ(OB_LS_LOCATION_NOT_EXIST, ret);
|
||||
ASSERT_EQ(OB_TIMEOUT, ret);
|
||||
ret = inner_proxy.read(res, local_cluster_id, OB_SYS_TENANT_ID, sql.ptr());
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
ret = inner_proxy.read(res, OB_INVALID_CLUSTER_ID, OB_SYS_TENANT_ID, sql.ptr());
|
||||
@ -157,6 +157,42 @@ TEST_F(TestLSStatusOperator, LSLifeAgent)
|
||||
ret = ls_life.create_new_ls(info, create_scn, zone_priority.str(), share::NORMAL_SWITCHOVER_STATUS);
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
|
||||
//设置初始成员列表
|
||||
ObMemberList member_list;
|
||||
ObMember arb_member;
|
||||
ObAddr server1(common::ObAddr::IPV4, "127.1.1.1", 2882);
|
||||
ObAddr server2(common::ObAddr::IPV4, "127.1.1.1", 3882);
|
||||
ASSERT_EQ(OB_SUCCESS, member_list.add_server(server1));
|
||||
ASSERT_EQ(OB_SUCCESS, member_list.add_server(server2));
|
||||
ret = status_operator.update_init_member_list(tenant_id_, ls_id, member_list,
|
||||
get_curr_simple_server().get_observer().get_mysql_proxy(), arb_member);
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
ObLSStatusInfo new_status_info;
|
||||
ObMemberList new_list;
|
||||
ret = status_operator.get_ls_init_member_list(tenant_id_, ls_id, new_list, new_status_info,
|
||||
get_curr_simple_server().get_observer().get_mysql_proxy(), arb_member);
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
|
||||
//创建新日志流
|
||||
ObLSStatusInfo new_status_info2;
|
||||
ObLSID ls_id3(1003);
|
||||
ret = new_status_info2.init(tenant_id_, ls_id3, 0, share::OB_LS_CREATING, 0, primary_zone);
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
ret = ls_life.create_new_ls(new_status_info2, create_scn, zone_priority.str(), share::NORMAL_SWITCHOVER_STATUS);
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
ObAddr server4(common::ObAddr::IPV4, "127.1.1.1", 4882);
|
||||
ObMember arb_member2(server4, 0);
|
||||
|
||||
ret = status_operator.update_init_member_list(tenant_id_, ls_id3, member_list,
|
||||
get_curr_simple_server().get_observer().get_mysql_proxy(), arb_member2);
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
ObLSStatusInfo new_status_info3;
|
||||
ObMemberList new_list2;
|
||||
ObMember arb_member3;
|
||||
ret = status_operator.get_ls_init_member_list(tenant_id_, ls_id3, new_list2, new_status_info3,
|
||||
get_curr_simple_server().get_observer().get_mysql_proxy(), arb_member3);
|
||||
ASSERT_EQ(OB_SUCCESS, ret);
|
||||
|
||||
//设置日志流offline的参数检查
|
||||
share::SCN invalid_scn;
|
||||
ret = ls_life.set_ls_offline(tenant_id_, SYS_LS, share::OB_LS_DROPPING, invalid_scn, share::NORMAL_SWITCHOVER_STATUS);
|
||||
|
@ -706,7 +706,10 @@ int ObLSStatusOperator::set_member_list_with_hex_str_(const common::ObString &st
|
||||
} else if (OB_UNLIKELY(deserialize_pos > deserialize_size)) {
|
||||
ret = OB_SIZE_OVERFLOW;
|
||||
LOG_WARN("deserialize error", KR(ret), K(deserialize_pos), K(deserialize_size));
|
||||
} else if (deserialize_pos < deserialize_size) {
|
||||
} else if (deserialize_pos < deserialize_size - 1) {
|
||||
//When deserialize_buf applies for memory, it applies for one more storage '\0',
|
||||
//so after member_list is deserialized,
|
||||
//pos can only go to the position of deserialize_size - 1, and will not point to '\0'
|
||||
// have to parse flag
|
||||
ObMemberListFlag flag;
|
||||
if (OB_FAIL(flag.deserialize(deserialize_buf, deserialize_size, deserialize_pos))) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user