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

Method ReadTableMetaCallBack

src/sdk/table_impl.cc:1992–2072  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1990}
1991
1992void TableImpl::ReadTableMetaCallBack(ErrorCode* ret_err, int32_t retry_times,
1993 ReadTabletRequest* request, ReadTabletResponse* response,
1994 bool failed, int error_code) {
1995 if (failed) {
1996 if (error_code == sofa::pbrpc::RPC_ERROR_SERVER_SHUTDOWN ||
1997 error_code == sofa::pbrpc::RPC_ERROR_SERVER_UNREACHABLE ||
1998 error_code == sofa::pbrpc::RPC_ERROR_SERVER_UNAVAILABLE) {
1999 response->set_status(kServerError);
2000 } else if (error_code == sofa::pbrpc::RPC_ERROR_REQUEST_CANCELED ||
2001 error_code == sofa::pbrpc::RPC_ERROR_SEND_BUFFER_FULL) {
2002 response->set_status(kClientError);
2003 } else if (error_code == sofa::pbrpc::RPC_ERROR_CONNECTION_CLOSED ||
2004 error_code == sofa::pbrpc::RPC_ERROR_RESOLVE_ADDRESS) {
2005 response->set_status(kConnectError);
2006 } else if (error_code == sofa::pbrpc::RPC_ERROR_REQUEST_TIMEOUT) {
2007 response->set_status(kRPCTimeout);
2008 } else {
2009 response->set_status(kRPCError);
2010 }
2011 }
2012
2013 StatusCode err = response->status();
2014 if (err == kTabletNodeOk && response->detail().status_size() < 1) {
2015 err = kKeyNotExist;
2016 LOG(ERROR) << "read table meta: status size is 0";
2017 }
2018 if (err == kTabletNodeOk) {
2019 err = response->detail().status(0);
2020 }
2021 if (err == kTabletNodeOk && response->detail().row_result_size() < 1) {
2022 err = kKeyNotExist;
2023 LOG(ERROR) << "read table meta: row result size is 0";
2024 }
2025 if (err == kTabletNodeOk && response->detail().row_result(0).key_values_size() < 1) {
2026 err = kKeyNotExist;
2027 LOG(ERROR) << "read table meta: row result kv size is 0";
2028 }
2029
2030 if (err != kTabletNodeOk && err != kKeyNotExist && err != kSnapshotNotExist) {
2031 VLOG(10) << "fail to read meta table, retry: " << retry_times
2032 << ", errcode: " << StatusCodeToString(err);
2033 }
2034
2035 MutexLock lock(&table_meta_mutex_);
2036 CHECK(table_meta_updating_);
2037
2038 if (err == kTabletNodeOk) {
2039 TableMeta table_meta;
2040 const KeyValuePair& kv = response->detail().row_result(0).key_values(0);
2041 ParseMetaTableKeyValue(kv.key(), kv.value(), &table_meta);
2042 table_schema_.CopyFrom(table_meta.schema());
2043
2044 if (table_schema_.has_enable_hash() && table_schema_.enable_hash()) {
2045 is_hash_table_ = true;
2046 } else {
2047 is_hash_table_ = false;
2048 }
2049

Callers 1

Calls 8

StatusCodeToStringFunction · 0.85
ParseMetaTableKeyValueFunction · 0.85
SetFailedMethod · 0.80
DelayTaskMethod · 0.80
statusMethod · 0.45
keyMethod · 0.45
valueMethod · 0.45
SignalMethod · 0.45

Tested by

no test coverage detected