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

Method ShowOPStatus

src/nameserver/name_server_impl.cc:3031–3089  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3029}
3030
3031void NameServerImpl::ShowOPStatus(RpcController* controller, const ShowOPStatusRequest* request,
3032 ShowOPStatusResponse* response, Closure* done) {
3033 brpc::ClosureGuard done_guard(done);
3034 if (!running_.load(std::memory_order_acquire)) {
3035 response->set_code(::fedb::base::ReturnCode::kNameserverIsNotLeader);
3036 response->set_msg("nameserver is not leader");
3037 PDLOG(WARNING, "cur nameserver is not leader");
3038 return;
3039 }
3040 std::map<uint64_t, std::shared_ptr<OPData>> op_map;
3041 std::lock_guard<std::mutex> lock(mu_);
3042 DeleteDoneOP();
3043 for (const auto& op_data : done_op_list_) {
3044 if (request->has_name() && op_data->op_info_.name() != request->name()) {
3045 continue;
3046 }
3047 if (request->has_pid() && op_data->op_info_.pid() != request->pid()) {
3048 continue;
3049 }
3050 op_map.insert(std::make_pair(op_data->op_info_.op_id(), op_data));
3051 }
3052 for (const auto& op_list : task_vec_) {
3053 if (op_list.empty()) {
3054 continue;
3055 }
3056 for (const auto& op_data : op_list) {
3057 if (request->has_name() && op_data->op_info_.name() != request->name()) {
3058 continue;
3059 }
3060 if (request->has_db() && op_data->op_info_.db() != request->db()) {
3061 continue;
3062 }
3063 if (request->has_pid() && op_data->op_info_.pid() != request->pid()) {
3064 continue;
3065 }
3066 op_map.insert(std::make_pair(op_data->op_info_.op_id(), op_data));
3067 }
3068 }
3069 for (const auto& kv : op_map) {
3070 OPStatus* op_status = response->add_op_status();
3071 op_status->set_op_id(kv.second->op_info_.op_id());
3072 op_status->set_op_type(::fedb::api::OPType_Name(kv.second->op_info_.op_type()));
3073 op_status->set_name(kv.second->op_info_.name());
3074 op_status->set_db(kv.second->op_info_.db());
3075 op_status->set_pid(kv.second->op_info_.pid());
3076 op_status->set_status(::fedb::api::TaskStatus_Name(kv.second->op_info_.task_status()));
3077 op_status->set_for_replica_cluster(kv.second->op_info_.for_replica_cluster());
3078 if (kv.second->task_list_.empty() || kv.second->op_info_.task_status() == ::fedb::api::kInited) {
3079 op_status->set_task_type("-");
3080 } else {
3081 std::shared_ptr<Task> task = kv.second->task_list_.front();
3082 op_status->set_task_type(::fedb::api::TaskType_Name(task->task_info_->task_type()));
3083 }
3084 op_status->set_start_time(kv.second->op_info_.start_time());
3085 op_status->set_end_time(kv.second->op_info_.end_time());
3086 }
3087 response->set_code(::fedb::base::ReturnCode::kOk);
3088 response->set_msg("ok");

Callers

nothing calls this directly

Calls 2

insertMethod · 0.80
emptyMethod · 0.45

Tested by

no test coverage detected