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

Function GetMetaValue

src/admincli.cc:322–367  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

320}
321
322CliStatus GetMetaValue(const std::string& meta_server, common::ThreadPool* thread_pool,
323 const std::string& table_name, const std::string& start_key,
324 TableMeta* table_meta, TabletMeta* tablet_meta) {
325 tabletnode::TabletNodeClient read_meta_client(thread_pool, meta_server);
326 ReadTabletRequest read_request;
327 ReadTabletResponse read_response;
328 read_request.set_sequence_id(g_sequence_id++);
329 read_request.set_tablet_name(FLAGS_tera_master_meta_table_name);
330 RowReaderInfo* row_info = read_request.add_row_info_list();
331 MakeMetaTableKey(table_name, start_key, row_info->mutable_key());
332 if (!read_meta_client.ReadTablet(&read_request, &read_response)) {
333 std::cout << "read tablet failed" << std::endl;
334 return CliStatus::kError;
335 }
336 StatusCode err = read_response.status();
337 if (err != tera::kTabletNodeOk) {
338 std::cerr << "Read meta table response not kTabletNodeOk!";
339 return CliStatus::kError;
340 }
341 if (read_response.detail().row_result_size() <= 0 ||
342 read_response.detail().row_result(0).key_values_size() <= 0) {
343 std::cout << "Couldn't read table[" << table_name << "] start_key[" << start_key
344 << "], suitable for put tablet_meta" << std::endl;
345 return CliStatus::kNotFound;
346 }
347 const KeyValuePair& record = read_response.detail().row_result(0).key_values(0);
348 char first_key_char = record.key()[0];
349 if (first_key_char == '~') {
350 std::cout << "(user: " << record.key().substr(1) << ")" << std::endl;
351 } else if (first_key_char == '|') {
352 // user&passwd&role&permission
353 } else if (first_key_char == '@') {
354 ParseMetaTableKeyValue(record.key(), record.value(), table_meta);
355 std::cout << "ok, you find a table meta info" << std::endl;
356 } else if (first_key_char > '@') {
357 ParseMetaTableKeyValue(record.key(), record.value(), tablet_meta);
358 } else {
359 std::cerr << "invalid record: " << record.key();
360 }
361
362 if (first_key_char <= '@') {
363 std::cout << "couldn't find tablet meta" << std::endl;
364 return CliStatus::kNotFound;
365 }
366 return CliStatus::kOk;
367}
368
369bool Confirm() {
370 std::cout << "[Y/N] ";

Callers 4

GetMetaFunction · 0.85
DeleteMetaTabletFunction · 0.85
ModifyMetaValueFunction · 0.85
PutTabletMetaFunction · 0.85

Calls 6

MakeMetaTableKeyFunction · 0.85
ParseMetaTableKeyValueFunction · 0.85
ReadTabletMethod · 0.45
statusMethod · 0.45
keyMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected