| 739 | |
| 740 | |
| 741 | void ProcessList::killAllQueries() |
| 742 | { |
| 743 | std::vector<std::shared_ptr<QueryStatus>> cancelled_processes; |
| 744 | |
| 745 | SCOPE_EXIT({ |
| 746 | std::lock_guard lock(mutex); |
| 747 | for (auto & cancelled_process : cancelled_processes) |
| 748 | cancelled_process->is_cancelling = false; |
| 749 | cancelled_cv.notify_all(); |
| 750 | }); |
| 751 | |
| 752 | { |
| 753 | std::lock_guard lock(mutex); |
| 754 | cancelled_processes.reserve(processes.size()); |
| 755 | for (const auto & [user, user_queries] : user_to_queries) |
| 756 | { |
| 757 | for (const auto & [query_id, status] : user_queries.queries) |
| 758 | { |
| 759 | cancelled_processes.push_back(status); |
| 760 | status->is_cancelling = true; |
| 761 | } |
| 762 | } |
| 763 | } |
| 764 | |
| 765 | for (auto & cancelled_process : cancelled_processes) |
| 766 | { |
| 767 | try |
| 768 | { |
| 769 | cancelled_process->cancelQuery(true, false); |
| 770 | } |
| 771 | catch (...) |
| 772 | { |
| 773 | tryLogCurrentException(__PRETTY_FUNCTION__, "Kill query failed with id: "+ cancelled_process->client_info.current_query_id + ""); |
| 774 | } |
| 775 | } |
| 776 | } |
| 777 | |
| 778 | |
| 779 | QueryStatusInfo QueryStatus::getInfo(bool get_thread_list, bool get_profile_events, bool get_settings) const |
no test coverage detected