add case to test one of the batch async rpc hung
This commit is contained in:
		| @ -559,6 +559,7 @@ class ObString; | |||||||
|     ACT(BEFORE_RELOAD_UNIT,)\ |     ACT(BEFORE_RELOAD_UNIT,)\ | ||||||
|     ACT(BEFORE_PROCESS_EVENT_TASK,)\ |     ACT(BEFORE_PROCESS_EVENT_TASK,)\ | ||||||
|     ACT(BEFORE_CHECK_LS_TRANSFER_SCN_FOR_STANDBY,)\ |     ACT(BEFORE_CHECK_LS_TRANSFER_SCN_FOR_STANDBY,)\ | ||||||
|  |     ACT(BEFORE_GET_CONFIG_VERSION_AND_TRANSFER_SCN,)\ | ||||||
|     ACT(MAX_DEBUG_SYNC_POINT,) |     ACT(MAX_DEBUG_SYNC_POINT,) | ||||||
|  |  | ||||||
| DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF); | DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF); | ||||||
|  | |||||||
| @ -1743,3 +1743,5 @@ DEF_BOOL(_enable_range_extraction_for_not_in, OB_TENANT_PARAMETER, "True", | |||||||
| //     ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); | //     ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); | ||||||
| ERRSIM_DEF_STR(palf_inject_receive_log_error_zone, OB_CLUSTER_PARAMETER, "", "specifies the zone name that palf module want to inject error when receive log", | ERRSIM_DEF_STR(palf_inject_receive_log_error_zone, OB_CLUSTER_PARAMETER, "", "specifies the zone name that palf module want to inject error when receive log", | ||||||
|     ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); |     ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); | ||||||
|  | ERRSIM_DEF_STR(migrate_check_member_list_error_zone, OB_CLUSTER_PARAMETER, "", "specifies the zone name that migrate want to inject error when change member list", | ||||||
|  |     ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); | ||||||
|  | |||||||
| @ -411,7 +411,7 @@ int ObLSMemberListService::check_ls_transfer_scn_validity_for_standby_(palf::Log | |||||||
|       share::SCN transfer_scn; |       share::SCN transfer_scn; | ||||||
|       palf::LogConfigVersion config_version; |       palf::LogConfigVersion config_version; | ||||||
|       bool need_get_config_version = (addr == leader_addr); |       bool need_get_config_version = (addr == leader_addr); | ||||||
|       if (OB_FAIL(get_config_version_and_transfer_scn_(batch_proxy, |       if (OB_TMP_FAIL(get_config_version_and_transfer_scn_(batch_proxy, | ||||||
|                                                            addr, |                                                            addr, | ||||||
|                                                            need_get_config_version, |                                                            need_get_config_version, | ||||||
|                                                            ls_->get_tenant_id(), |                                                            ls_->get_tenant_id(), | ||||||
| @ -441,6 +441,8 @@ int ObLSMemberListService::check_ls_transfer_scn_validity_for_standby_(palf::Log | |||||||
|                                                       leader_config_version, |                                                       leader_config_version, | ||||||
|                                                       leader_transfer_scn))) { |                                                       leader_transfer_scn))) { | ||||||
|       STORAGE_LOG(WARN, "failed to process result from async rpc", KR(ret), KR(tmp_ret)); |       STORAGE_LOG(WARN, "failed to process result from async rpc", KR(ret), KR(tmp_ret)); | ||||||
|  |     } else { | ||||||
|  |       STORAGE_LOG(INFO, "process result from async rpc", KR(ret), K(return_code_array), K(addr_list), K(batch_proxy.get_results())); | ||||||
|     } |     } | ||||||
|     if (OB_SUCC(ret)) { |     if (OB_SUCC(ret)) { | ||||||
|       // standby check transfer scn need reach majority |       // standby check transfer scn need reach majority | ||||||
| @ -475,8 +477,16 @@ int ObLSMemberListService::process_result_from_async_rpc_( | |||||||
|   int tmp_ret = OB_SUCCESS; |   int tmp_ret = OB_SUCCESS; | ||||||
|   ARRAY_FOREACH_X(proxy.get_results(), idx, cnt, OB_SUCC(ret)) { |   ARRAY_FOREACH_X(proxy.get_results(), idx, cnt, OB_SUCC(ret)) { | ||||||
|     const ObStorageChangeMemberRes *response = proxy.get_results().at(idx); |     const ObStorageChangeMemberRes *response = proxy.get_results().at(idx); | ||||||
|  |     const int res_ret = return_code_array.at(idx); | ||||||
|     bool check_pass = false; |     bool check_pass = false; | ||||||
|     if (OB_ISNULL(response)) { |     if (OB_SUCCESS != res_ret) { | ||||||
|  | #ifdef ERRSIM | ||||||
|  |       SERVER_EVENT_ADD("storage_ha", "check_ls_transfer_scn_validity_for_standby_failed", | ||||||
|  |                       "tenant_id", ls_->get_tenant_id(), | ||||||
|  |                       "ls_id", ls_->get_ls_id().id(), | ||||||
|  |                       "result", res_ret); | ||||||
|  | #endif | ||||||
|  |     } else if (OB_ISNULL(response)) { | ||||||
|       tmp_ret = OB_ERR_UNEXPECTED; |       tmp_ret = OB_ERR_UNEXPECTED; | ||||||
|       STORAGE_LOG(WARN, "hb_response is null", KR(ret), KR(tmp_ret)); |       STORAGE_LOG(WARN, "hb_response is null", KR(ret), KR(tmp_ret)); | ||||||
|     } else if (for_standby && OB_FAIL(check_ls_transfer_scn_(response->transfer_scn_, check_pass))) { |     } else if (for_standby && OB_FAIL(check_ls_transfer_scn_(response->transfer_scn_, check_pass))) { | ||||||
|  | |||||||
| @ -2895,6 +2895,14 @@ int ObStorageGetConfigVersionAndTransferScnDelegate::process() | |||||||
|   const uint64_t tenant_id = arg_.tenant_id_; |   const uint64_t tenant_id = arg_.tenant_id_; | ||||||
|   const share::ObLSID &ls_id = arg_.ls_id_; |   const share::ObLSID &ls_id = arg_.ls_id_; | ||||||
|   const bool need_get_config_version = arg_.need_get_config_version_; |   const bool need_get_config_version = arg_.need_get_config_version_; | ||||||
|  | #ifdef ERRSIM | ||||||
|  |   if (!GCONF.migrate_check_member_list_error_zone.get_value_string().empty()) { | ||||||
|  |     if (0 == strcmp(GCONF.zone.str(), GCONF.migrate_check_member_list_error_zone.str())) { | ||||||
|  |       SERVER_EVENT_SYNC_ADD("storage_ha", "before_get_config_version_and_transfer_scn"); | ||||||
|  |       DEBUG_SYNC(BEFORE_GET_CONFIG_VERSION_AND_TRANSFER_SCN); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | #endif | ||||||
|   MTL_SWITCH(tenant_id) { |   MTL_SWITCH(tenant_id) { | ||||||
|     ObLSHandle ls_handle; |     ObLSHandle ls_handle; | ||||||
|     ObLSService *ls_service = NULL; |     ObLSService *ls_service = NULL; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 oceanoverflow
					oceanoverflow