| 350 | } |
| 351 | |
| 352 | TabletNodePtr TabletNodeManager::DelTabletNode(const std::string& addr) { |
| 353 | TabletNodePtr state(nullptr); |
| 354 | |
| 355 | MutexLock lock(&mutex_); |
| 356 | TabletNodeList::iterator it = tabletnode_list_.find(addr); |
| 357 | if (it == tabletnode_list_.end()) { |
| 358 | LOG(ERROR) << "tabletnode [" << addr << "] does not exist"; |
| 359 | return state; |
| 360 | } |
| 361 | state = it->second; |
| 362 | state->DoStateTransition(NodeEvent::kZkSessionTimeout); |
| 363 | // state->SetState(kOffLine, NULL); |
| 364 | tabletnode_list_.erase(it); |
| 365 | |
| 366 | // delete node may block, so we'd better release the mutex before that |
| 367 | LOG(INFO) << "delete tabletnode: " << addr << ", uuid: " << state->uuid_; |
| 368 | return state; |
| 369 | } |
| 370 | |
| 371 | void TabletNodeManager::UpdateTabletNode(const std::string& addr, const TabletNode& state) { |
| 372 | MutexLock lock(&mutex_); |