MCPcopy Create free account
hub / github.com/baidu/tera / ReadTableMetaAsync

Method ReadTableMetaAsync

src/sdk/table_impl.cc:1940–1978  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1938}
1939
1940void 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
1980void TableImpl::ReadTableMetaCallBackWrapper(std::weak_ptr<TableImpl> weak_ptr_table,
1981 ErrorCode* ret_err, int32_t retry_times,

Callers

nothing calls this directly

Calls 8

MakeMetaTableKeyFunction · 0.85
RootTableAddrMethod · 0.80
SetFailedMethod · 0.80
DelayTaskMethod · 0.80
emptyMethod · 0.45
SignalMethod · 0.45
ReadTabletMethod · 0.45

Tested by

no test coverage detected