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

Method QueryStateHandler

be/src/service/impala-http-handler.cc:718–794  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

716}
717
718void ImpalaHttpHandler::QueryStateHandler(const Webserver::WebRequest& req,
719 Document* document) {
720 AddQueryRecordTips(document);
721
722 set<QueryStateRecord, QueryStateRecord::StartTimeComparator>
723 sorted_query_records;
724
725 server_->query_driver_map_.DoFuncForAllEntries(
726 [&](const std::shared_ptr<QueryDriver>& query_driver) {
727 sorted_query_records.insert(
728 QueryStateRecord(*query_driver->GetActiveClientRequestState()));
729 });
730
731 unordered_set<TUniqueId> in_flight_query_ids;
732 Value in_flight_queries(kArrayType);
733 int64_t num_waiting_queries = 0;
734 for (const QueryStateRecord& record: sorted_query_records) {
735 Value record_json(kObjectType);
736 QueryStateToJson(record, &record_json, document, true);
737
738 if (record_json["waiting"].GetBool()) ++num_waiting_queries;
739
740 in_flight_queries.PushBack(record_json, document->GetAllocator());
741 in_flight_query_ids.insert(record.id);
742 }
743 document->AddMember("in_flight_queries", in_flight_queries, document->GetAllocator());
744 document->AddMember("num_in_flight_queries",
745 static_cast<uint64_t>(sorted_query_records.size()),
746 document->GetAllocator());
747 document->AddMember("num_executing_queries",
748 sorted_query_records.size() - num_waiting_queries,
749 document->GetAllocator());
750 document->AddMember("num_waiting_queries", num_waiting_queries,
751 document->GetAllocator());
752 document->AddMember("waiting-tooltip", "These queries are no longer executing, either "
753 "because they encountered an error or because they have returned all of their "
754 "results, but they are still active so that their results can be inspected. To "
755 "free the resources they are using, they must be closed.",
756 document->GetAllocator());
757
758 Value completed_queries(kArrayType);
759 {
760 lock_guard<mutex> l(server_->query_log_lock_);
761 for (const shared_ptr<QueryStateRecord>& log_entry :
762 server_->query_log_) {
763 // Don't show duplicated entries between in-flight and completed queries.
764 if (in_flight_query_ids.find(log_entry->id) != in_flight_query_ids.end()) continue;
765 Value record_json(kObjectType);
766 QueryStateToJson(*log_entry, &record_json, document, false);
767 completed_queries.PushBack(record_json, document->GetAllocator());
768 }
769 }
770 document->AddMember("completed_queries", completed_queries, document->GetAllocator());
771 document->AddMember("completed_log_size", FLAGS_query_log_size,
772 document->GetAllocator());
773 document->AddMember("completed_log_size_in_bytes", FLAGS_query_log_size_in_bytes,
774 document->GetAllocator());
775

Callers

nothing calls this directly

Calls 11

QueryStateRecordClass · 0.85
NetworkAddressPBToStringFunction · 0.85
PrintIdFunction · 0.85
DoFuncForAllEntriesMethod · 0.80
PushBackMethod · 0.80
insertMethod · 0.45
AddMemberMethod · 0.45
sizeMethod · 0.45
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected