| 1961 | } |
| 1962 | |
| 1963 | void Coordinator::ExecQueryRpcStats::PrintWarnings() { |
| 1964 | if (rpcs_above_warning_threshold_ == 0) return; |
| 1965 | LOG(WARNING) << "ExecQueryFInstances RPCs for " << rpcs_above_warning_threshold_ |
| 1966 | << " out of " << execquery_rpc_sizes_->TotalNumValues() |
| 1967 | << " exceed the warning threshold of " |
| 1968 | << PrettyPrinter::Print(FLAGS_large_execquery_rpc_threshold_bytes, TUnit::BYTES) |
| 1969 | << ". Average RPC size: " |
| 1970 | << PrettyPrinter::Print(execquery_rpc_sizes_->value(), TUnit::BYTES) |
| 1971 | << " Shared TQueryCtx: " << PrettyPrinter::Print(tqueryctx_size_, TUnit::BYTES) |
| 1972 | << " (" << PrettyPrinter::Print(descriptor_table_size_, TUnit::BYTES) |
| 1973 | << " from descriptor table)"; |
| 1974 | LOG(WARNING) << "Additional information about the " << largest_rpc_warnings_.size() |
| 1975 | << " largest RPCs:"; |
| 1976 | // Print the warnings from largest to smallest using a reverse iterator |
| 1977 | DCHECK_LE(largest_rpc_warnings_.size(), MAX_EXEC_RPC_WARNINGS); |
| 1978 | for (auto it = largest_rpc_warnings_.crbegin(); |
| 1979 | it != largest_rpc_warnings_.crend(); ++it) { |
| 1980 | LOG(WARNING) << it->second; |
| 1981 | } |
| 1982 | // We no longer need the warnings structure, so free the memory. |
| 1983 | largest_rpc_warnings_.clear(); |
| 1984 | } |
no test coverage detected