| 525 | } |
| 526 | |
| 527 | bool MasterImpl::LoadMetaTablet(std::string *server_addr) { |
| 528 | TabletMeta meta; |
| 529 | meta.set_table_name(FLAGS_tera_master_meta_table_name); |
| 530 | meta.set_path(FLAGS_tera_master_meta_table_path); |
| 531 | meta.mutable_key_range()->set_key_start(""); |
| 532 | meta.mutable_key_range()->set_key_end(""); |
| 533 | TableSchema schema; |
| 534 | schema.set_name(FLAGS_tera_master_meta_table_name); |
| 535 | schema.set_kv_only(true); |
| 536 | LocalityGroupSchema *lg_schema = schema.add_locality_groups(); |
| 537 | lg_schema->set_compress_type(false); |
| 538 | lg_schema->set_store_type(MemoryStore); |
| 539 | |
| 540 | TabletNodePtr node; |
| 541 | TabletPtr tablet(new Tablet( |
| 542 | meta, TablePtr(new Table(FLAGS_tera_master_meta_table_name, schema, kTableEnable)))); |
| 543 | while (tabletnode_manager_->ScheduleTabletNode(size_scheduler_.get(), "", tablet, false, &node)) { |
| 544 | *server_addr = node->GetAddr(); |
| 545 | meta.set_server_addr(*server_addr); |
| 546 | StatusCode status = kTabletNodeOk; |
| 547 | if (LoadTabletSync(meta, schema, &status)) { |
| 548 | LOG(INFO) << "load meta tablet on node: " << *server_addr; |
| 549 | return true; |
| 550 | } |
| 551 | LOG(ERROR) << "fail to load meta tablet on node: " << *server_addr |
| 552 | << ", status: " << StatusCodeToString(status); |
| 553 | TryKickTabletNode(*server_addr); |
| 554 | } |
| 555 | LOG(ERROR) << "no live node to load meta tablet"; |
| 556 | return false; |
| 557 | } |
| 558 | |
| 559 | void MasterImpl::UnloadMetaTablet(const std::string &server_addr) { |
| 560 | StatusCode status = kTabletNodeOk; |
nothing calls this directly
no test coverage detected