// add a new task int TaskManager::insert_task(const TabletLocation & location, TaskInfo & task) { int ret = OB_SUCCESS; task.set_location(location); task.set_token(task_token_); int64_t timestamp = tbsys::CTimeUtil::getTime(); task.set_timestamp(timestamp); std::map<ObServer, int64_t>::const_iterator it; tbsys::CThreadGuard lock(&lock_); task.set_id(++task_id_alloc_); ++total_task_count_; wait_queue_.insert(pair<uint64_t, TaskInfo>(task.get_id(), task)); for (int64_t i = 0; i < location.size(); ++i) { // TODO server counter for select task it = server_manager_.find(location[i].chunkserver_); if (it != server_manager_.end()) { server_manager_[location[i].chunkserver_] = it->second + 1; } else { server_manager_.insert(pair<ObServer, int64_t>(location[i].chunkserver_, 1)); } } TBSYS_LOG(DEBUG, "insert task succ:id[%lu], table_name[%.*s], range[%s], count[%lu]", task_id_alloc_, task.get_param().get_table_name().length(), task.get_param().get_table_name().ptr(), to_cstring(*task.get_param().get_range()), total_task_count_); #if false std::map<uint64_t, TaskInfo>::iterator temp_it; for (temp_it = wait_queue_.begin(); temp_it != wait_queue_.end(); ++temp_it) { TBSYS_LOG(TRACE, "dump task range:task[%ld], range[%p:%s], key_obj[%p:%p]", temp_it->first, temp_it->second.get_param().get_range(), to_cstring(*temp_it->second.get_param().get_range()), temp_it->second.get_param().get_range()->start_key_.ptr(), temp_it->second.get_param().get_range()->end_key_.ptr()); } #endif return ret; }
int TaskFactory::insert_new_task(const TabletLocation & list, TaskInfo & task) { int ret = OB_SUCCESS; // alarm instantly if (0 == list.size()) { TBSYS_LOG(ERROR, "check task server list count failed:task[%lu], count[%lu]", task.get_id(), list.size()); } // remain do insert task ret = task_manager_->insert_task(list, task); if (ret != OB_SUCCESS) { TBSYS_LOG(ERROR, "insert a new task failed:ret[%d]", ret); } else { TBSYS_LOG(TRACE, "insert a new task succ:task[%lu], table_name[%.*s], tablet[%s]", task.get_id(), task.get_param().get_table_name().length(), task.get_param().get_table_name().ptr(), to_cstring(*task.get_param().get_range())); } return ret; }