Meaningful errors on GraphQL query timeout
When timing out, the GraphQL error bubbles up to the user as "something went wrong". This is vague and a bit unhelpful as it's unclear whether it's an ops problem or a business logic error.
We should catch this as the timeout that it is and explain " took too long, please try again or contact your administrator" or something similar?
Backtrace:
PG::QueryCanceled: ERROR: canceling statement due to statement timeout
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:72:in `block in read_using_load_balancer',
ee/lib/gitlab/database/load_balancing/load_balancer.rb:34:in `read',
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:71:in `read_using_load_balancer',
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:44:in `select_all',
ee/lib/gitlab/graphql/loaders/bulk_epic_aggregate_loader.rb:32:in `map',
ee/lib/gitlab/graphql/loaders/bulk_epic_aggregate_loader.rb:32:in `execute',
ee/lib/gitlab/graphql/aggregations/epics/lazy_epic_aggregate.rb:77:in `load_records_into_tree',
ee/lib/gitlab/graphql/aggregations/epics/lazy_epic_aggregate.rb:44:in `epic_aggregate',
lib/gitlab/graphql/generic_tracing.rb:40:in `with_labkit_tracing',
lib/gitlab/graphql/generic_tracing.rb:30:in `platform_trace',
lib/gitlab/graphql/generic_tracing.rb:40:in `with_labkit_tracing',
lib/gitlab/graphql/generic_tracing.rb:30:in `platform_trace',
app/graphql/gitlab_schema.rb:43:in `multiplex',
app/controllers/graphql_controller.rb:68:in `execute_multiplex',
app/controllers/graphql_controller.rb:32:in `execute',
ee/lib/gitlab/ip_address_state.rb:10:in `with',
ee/app/controllers/ee/application_controller.rb:44:in `set_current_ip_address',
app/controllers/application_controller.rb:482:in `set_current_admin',
lib/gitlab/session.rb:11:in `with_session',
pp/controllers/application_controller.rb:473:in `set_session_storage',
lib/gitlab/i18n.rb:73:in `with_locale',
lib/gitlab/i18n.rb:79:in `with_user_locale',
app/controllers/application_controller.rb:467:in `set_locale',
lib/gitlab/error_tracking.rb:52:in `with_context',
app/controllers/application_controller.rb:532:in `sentry_context',
app/controllers/application_controller.rb:460:in `block in set_current_context',
lib/gitlab/application_context.rb:56:in `block in use',
lib/gitlab/application_context.rb:56:in `use',
lib/gitlab/application_context.rb:22:in `with_context',
app/controllers/application_controller.rb:451:in `set_current_context',
ee/lib/omni_auth/strategies/group_saml.rb:41:in `other_phase',
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call',
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call',
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call',
lib/gitlab/metrics/transaction.rb:56:in `run',
lib/gitlab/metrics/rack_middleware.rb:16:in `call',
lib/gitlab/request_profiler/middleware.rb:17:in `call',
ee/lib/gitlab/database/load_balancing/rack_middleware.rb:39:in `call',
lib/gitlab/jira/middleware.rb:19:in `call',
lib/gitlab/middleware/go.rb:20:in `call',
lib/gitlab/etag_caching/middleware.rb:21:in `call',
lib/gitlab/middleware/multipart.rb:172:in `call',
lib/gitlab/middleware/read_only/controller.rb:50:in `call',
lib/gitlab/middleware/read_only.rb:18:in `call',
lib/gitlab/middleware/same_site_cookies.rb:27:in `call',
lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call',
lib/gitlab/middleware/basic_health_check.rb:25:in `call',
lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call',
lib/gitlab/middleware/request_context.rb:23:in `call',
config/initializers/fix_local_cache_middleware.rb:9:in `call',
lib/gitlab/metrics/requests_rack_middleware.rb:76:in `call',
lib/gitlab/middleware/release_env.rb:12:in `call'
Edited by charlie ablett
