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

Method LoadTablet

src/tabletnode/remote_tabletnode.cc:236–261  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

234RemoteTabletNode::~RemoteTabletNode() {}
235
236void RemoteTabletNode::LoadTablet(google::protobuf::RpcController* controller,
237 const LoadTabletRequest* request, LoadTabletResponse* response,
238 google::protobuf::Closure* done) {
239 uint64_t id = request->sequence_id();
240 response->set_sequence_id(id);
241 LOG(INFO) << "accept RPC (LoadTablet) id: " << id
242 << ", src: " << tera::utils::GetRemoteAddress(controller);
243 const std::string& tablet_path = request->path();
244 std::lock_guard<std::mutex> lock(tablets_ctrl_mutex_);
245 if (tablets_ctrl_status_.find(tablet_path) != tablets_ctrl_status_.end()) {
246 ThreadPool::Task query_task = std::bind(&RemoteTabletNode::DoQueryTabletLoadStatus, this,
247 controller, request, response, done);
248 lightweight_ctrl_thread_pool_->AddTask(query_task);
249 return;
250 }
251 if (ctrl_thread_pool_->PendingNum() > FLAGS_tera_tabletnode_ctrl_thread_num) {
252 response->set_status(kTabletNodeIsBusy);
253 done->Run();
254 return;
255 }
256
257 tablets_ctrl_status_[tablet_path] = TabletCtrlStatus::kCtrlWaitLoad;
258 ThreadPool::Task callback =
259 std::bind(&RemoteTabletNode::DoLoadTablet, this, controller, request, response, done);
260 ctrl_thread_pool_->AddTask(callback);
261}
262
263void RemoteTabletNode::UnloadTablet(google::protobuf::RpcController* controller,
264 const UnloadTabletRequest* request,

Callers 1

DoLoadTabletMethod · 0.45

Calls 4

GetRemoteAddressFunction · 0.85
AddTaskMethod · 0.80
PendingNumMethod · 0.80
RunMethod · 0.45

Tested by

no test coverage detected