MCPcopy Create free account
hub / github.com/apache/impala / PoolToJsonLocked

Method PoolToJsonLocked

be/src/scheduling/admission-controller.cc:2960–3014  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2958}
2959
2960void AdmissionController::PoolToJsonLocked(const string& pool_name,
2961 rapidjson::Value* resource_pools, rapidjson::Document* document) {
2962 auto it = pool_stats_.find(pool_name);
2963 if (it == pool_stats_.end()) return;
2964 PoolStats* stats = &it->second;
2965 RequestQueue& queue = request_queue_map_[pool_name];
2966 // Get the pool stats
2967 using namespace rapidjson;
2968 Value pool_info_json(kObjectType);
2969 stats->ToJson(&pool_info_json, document);
2970
2971 // Get the queued queries
2972 Value queued_queries(kArrayType);
2973 queue.Iterate([&queued_queries, document](QueueNode* node) {
2974 if (node->group_states.empty()) {
2975 Value query_info(kObjectType);
2976 query_info.AddMember("query_id", "N/A", document->GetAllocator());
2977 query_info.AddMember("mem_limit", 0, document->GetAllocator());
2978 query_info.AddMember("mem_limit_to_admit", 0, document->GetAllocator());
2979 query_info.AddMember("num_backends", 0, document->GetAllocator());
2980 queued_queries.PushBack(query_info, document->GetAllocator());
2981 return true;
2982 }
2983 ScheduleState* state = node->group_states.begin()->state.get();
2984 Value query_info(kObjectType);
2985 Value query_id(PrintId(state->query_id()).c_str(), document->GetAllocator());
2986 query_info.AddMember("query_id", query_id, document->GetAllocator());
2987 query_info.AddMember(
2988 "mem_limit", state->per_backend_mem_limit(), document->GetAllocator());
2989 query_info.AddMember("mem_limit_to_admit", state->per_backend_mem_to_admit(),
2990 document->GetAllocator());
2991 query_info.AddMember(
2992 "coord_mem_limit", state->coord_backend_mem_limit(), document->GetAllocator());
2993 query_info.AddMember("coord_mem_to_admit", state->coord_backend_mem_to_admit(),
2994 document->GetAllocator());
2995 query_info.AddMember("num_backends", state->per_backend_schedule_states().size(),
2996 document->GetAllocator());
2997 queued_queries.PushBack(query_info, document->GetAllocator());
2998 return true;
2999 });
3000 pool_info_json.AddMember("queued_queries", queued_queries, document->GetAllocator());
3001
3002 // Get the queued reason for the query at the head of the queue.
3003 if (!queue.empty()) {
3004 Value head_queued_reason(
3005 queue.head()
3006 ->profile->GetInfoString(PROFILE_INFO_KEY_LAST_QUEUED_REASON)
3007 ->c_str(),
3008 document->GetAllocator());
3009 pool_info_json.AddMember(
3010 "head_queued_reason", head_queued_reason, document->GetAllocator());
3011 }
3012
3013 resource_pools->PushBack(pool_info_json, document->GetAllocator());
3014}
3015
3016void AdmissionController::PoolToJson(const string& pool_name,
3017 rapidjson::Value* resource_pools, rapidjson::Document* document) {

Callers

nothing calls this directly

Calls 15

PrintIdFunction · 0.85
PushBackMethod · 0.80
per_backend_mem_limitMethod · 0.80
GetInfoStringMethod · 0.80
headMethod · 0.80
getMethod · 0.65
findMethod · 0.45
endMethod · 0.45
ToJsonMethod · 0.45

Tested by

no test coverage detected