| 1938 | } |
| 1939 | |
| 1940 | void TableImpl::ReadTableMetaAsync(ErrorCode* ret_err, int32_t retry_times, bool zk_access) { |
| 1941 | std::string meta_server = cluster_->RootTableAddr(zk_access); |
| 1942 | if (meta_server.empty() && !zk_access) { |
| 1943 | meta_server = cluster_->RootTableAddr(true); |
| 1944 | } |
| 1945 | if (meta_server.empty()) { |
| 1946 | VLOG(10) << "root is empty"; |
| 1947 | |
| 1948 | MutexLock lock(&table_meta_mutex_); |
| 1949 | CHECK(table_meta_updating_); |
| 1950 | if (retry_times >= FLAGS_tera_sdk_meta_read_retry_times) { |
| 1951 | ret_err->SetFailed(ErrorCode::kSystem); |
| 1952 | table_meta_updating_ = false; |
| 1953 | table_meta_cond_.Signal(); |
| 1954 | } else { |
| 1955 | int64_t retry_interval = |
| 1956 | static_cast<int64_t>(pow(FLAGS_tera_sdk_delay_send_internal, retry_times) * 1000); |
| 1957 | ThreadPool::Task retry_task = |
| 1958 | std::bind(&TableImpl::ReadTableMetaAsync, this, ret_err, retry_times + 1, true); |
| 1959 | thread_pool_->DelayTask(retry_interval, retry_task); |
| 1960 | } |
| 1961 | return; |
| 1962 | } |
| 1963 | |
| 1964 | tabletnode::TabletNodeClient tabletnode_client_async(thread_pool_, meta_server); |
| 1965 | ReadTabletRequest* request = new ReadTabletRequest; |
| 1966 | ReadTabletResponse* response = new ReadTabletResponse; |
| 1967 | request->set_sequence_id(last_sequence_id_++); |
| 1968 | request->set_tablet_name(FLAGS_tera_master_meta_table_name); |
| 1969 | RowReaderInfo* row_info = request->add_row_info_list(); |
| 1970 | MakeMetaTableKey(name_, row_info->mutable_key()); |
| 1971 | |
| 1972 | access_builder_->BuildInternalGroupRequest(request); |
| 1973 | |
| 1974 | std::function<void(ReadTabletRequest*, ReadTabletResponse*, bool, int)> done = |
| 1975 | std::bind(&TableImpl::ReadTableMetaCallBackWrapper, |
| 1976 | std::weak_ptr<TableImpl>(shared_from_this()), ret_err, retry_times, _1, _2, _3, _4); |
| 1977 | tabletnode_client_async.ReadTablet(request, response, done); |
| 1978 | } |
| 1979 | |
| 1980 | void TableImpl::ReadTableMetaCallBackWrapper(std::weak_ptr<TableImpl> weak_ptr_table, |
| 1981 | ErrorCode* ret_err, int32_t retry_times, |
nothing calls this directly
no test coverage detected