MCPcopy Create free account
hub / github.com/4paradigm/OpenMLDB / SendIndexData

Method SendIndexData

src/tablet/tablet_impl.cc:4473–4523  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4471}
4472
4473void TabletImpl::SendIndexData(
4474 RpcController* controller,
4475 const ::fedb::api::SendIndexDataRequest* request,
4476 ::fedb::api::GeneralResponse* response, Closure* done) {
4477 brpc::ClosureGuard done_guard(done);
4478 std::shared_ptr<::fedb::api::TaskInfo> task_ptr;
4479 if (request->has_task_info() && request->task_info().IsInitialized()) {
4480 if (AddOPTask(request->task_info(),
4481 ::fedb::api::TaskType::kSendIndexData, task_ptr) < 0) {
4482 response->set_code(-1);
4483 response->set_msg("add task failed");
4484 return;
4485 }
4486 }
4487 do {
4488 std::shared_ptr<Table> table = GetTable(request->tid(), request->pid());
4489 if (!table) {
4490 PDLOG(WARNING, "table is not exist. tid %u, pid %u", request->tid(),
4491 request->pid());
4492 response->set_code(::fedb::base::ReturnCode::kTableIsNotExist);
4493 response->set_msg("table is not exist");
4494 break;
4495 }
4496 MemTable* mem_table = dynamic_cast<MemTable*>(table.get());
4497 if (mem_table == NULL) {
4498 PDLOG(WARNING, "table is not memtable. tid %u, pid %u",
4499 request->tid(), request->pid());
4500 response->set_code(::fedb::base::ReturnCode::kTableTypeMismatch);
4501 response->set_msg("table is not memtable");
4502 break;
4503 }
4504 std::map<uint32_t, std::string> pid_endpoint_map;
4505 for (int idx = 0; idx < request->pairs_size(); idx++) {
4506 pid_endpoint_map.insert(std::make_pair(
4507 request->pairs(idx).pid(), request->pairs(idx).endpoint()));
4508 }
4509 response->set_code(::fedb::base::ReturnCode::kOk);
4510 response->set_msg("ok");
4511 if (pid_endpoint_map.empty()) {
4512 PDLOG(INFO, "pid endpoint map is empty. tid %u, pid %u",
4513 request->tid(), request->pid());
4514 SetTaskStatus(task_ptr, ::fedb::api::TaskStatus::kDone);
4515 } else {
4516 task_pool_.AddTask(boost::bind(&TabletImpl::SendIndexDataInternal,
4517 this, table, pid_endpoint_map,
4518 task_ptr));
4519 }
4520 return;
4521 } while (0);
4522 SetTaskStatus(task_ptr, ::fedb::api::TaskStatus::kFailed);
4523}
4524
4525void TabletImpl::SendIndexDataInternal(
4526 std::shared_ptr<::fedb::storage::Table> table,

Callers 1

TEST_FFunction · 0.45

Calls 4

insertMethod · 0.80
AddTaskMethod · 0.80
getMethod · 0.45
emptyMethod · 0.45

Tested by 1

TEST_FFunction · 0.36