| 811 | } |
| 812 | |
| 813 | void ImpalaHttpHandler::FillSessionsInfo(Document* document) { |
| 814 | lock_guard<mutex> l(server_->session_state_map_lock_); |
| 815 | Value sessions(kArrayType); |
| 816 | int num_active = 0; |
| 817 | for (const ImpalaServer::SessionStateMap::value_type& session : |
| 818 | server_->session_state_map_) { |
| 819 | shared_ptr<ImpalaServer::SessionState> state = session.second; |
| 820 | Value session_json(kObjectType); |
| 821 | Value type(PrintValue(state->session_type), document->GetAllocator()); |
| 822 | session_json.AddMember("type", type, document->GetAllocator()); |
| 823 | |
| 824 | session_json.AddMember("inflight_queries", |
| 825 | static_cast<uint64_t>(state->inflight_queries.size()), |
| 826 | document->GetAllocator()); |
| 827 | session_json.AddMember("total_queries", state->total_queries, |
| 828 | document->GetAllocator()); |
| 829 | |
| 830 | Value user(state->connected_user, document->GetAllocator()); |
| 831 | session_json.AddMember("user", user, document->GetAllocator()); |
| 832 | |
| 833 | Value delegated_user(state->do_as_user, document->GetAllocator()); |
| 834 | session_json.AddMember("delegated_user", delegated_user, document->GetAllocator()); |
| 835 | |
| 836 | Value session_id(PrintId(session.first), document->GetAllocator()); |
| 837 | session_json.AddMember("session_id", session_id, document->GetAllocator()); |
| 838 | |
| 839 | Value connection_ids(PrintIdSet(state->connections, "\n"), |
| 840 | document->GetAllocator()); |
| 841 | session_json.AddMember("connection_ids", connection_ids, document->GetAllocator()); |
| 842 | |
| 843 | Value default_db(state->database, document->GetAllocator()); |
| 844 | session_json.AddMember("default_database", default_db, document->GetAllocator()); |
| 845 | |
| 846 | Value start_time(ToStringFromUnixMillis(session.second->start_time_ms, |
| 847 | TimePrecision::Second), document->GetAllocator()); |
| 848 | session_json.AddMember("start_time", start_time, document->GetAllocator()); |
| 849 | session_json.AddMember( |
| 850 | "start_time_sort", session.second->start_time_ms, document->GetAllocator()); |
| 851 | |
| 852 | Value last_accessed(ToStringFromUnixMillis(session.second->last_accessed_ms, |
| 853 | TimePrecision::Second), document->GetAllocator()); |
| 854 | session_json.AddMember("last_accessed", last_accessed, document->GetAllocator()); |
| 855 | session_json.AddMember( |
| 856 | "last_accessed_sort", session.second->last_accessed_ms, document->GetAllocator()); |
| 857 | |
| 858 | session_json.AddMember("session_timeout", state->session_timeout, |
| 859 | document->GetAllocator()); |
| 860 | session_json.AddMember("expired", state->expired, document->GetAllocator()); |
| 861 | session_json.AddMember("closed", state->closed, document->GetAllocator()); |
| 862 | if (!state->expired && !state->closed) ++num_active; |
| 863 | session_json.AddMember("ref_count", state->ref_count, document->GetAllocator()); |
| 864 | sessions.PushBack(session_json, document->GetAllocator()); |
| 865 | } |
| 866 | |
| 867 | document->AddMember("sessions", sessions, document->GetAllocator()); |
| 868 | document->AddMember("num_sessions", |
| 869 | static_cast<uint64_t>(server_->session_state_map_.size()), |
| 870 | document->GetAllocator()); |
nothing calls this directly
no test coverage detected