Skip to content

Instance security dashboard vulnerability findings list times out

On gitlab.com, one of the pagination queries for the vulnerability findings list on the instance security dashboard times out. This does not occur on staging.gitlab.com.

Sentry: https://sentry.gitlab.net/gitlab/gitlabcom/issues/1176723/

PG::QueryCanceled: ERROR:  canceling statement due to statement timeout

  active_record/connection_adapters/postgresql_adapter.rb:611:in `async_exec_params'
    @connection.exec_params(sql, type_casted_binds)
  active_record/connection_adapters/postgresql_adapter.rb:611:in `block (2 levels) in exec_no_cache'
    @connection.exec_params(sql, type_casted_binds)
  active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
    yield
  active_support/concurrency/share_lock.rb:187:in `yield_shares'
    yield
  active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
    @lock.yield_shares(compatible: [:load]) do
...
(161 additional frame(s) were not displayed)

ActiveRecord::QueryCanceled: PG::QueryCanceled: ERROR:  canceling statement due to statement timeout
: SELECT COUNT(*) FROM (SELECT  1 AS one FROM "vulnerability_occurrences" INNER JOIN "vulnerability_occurrence_pipelines" ON "vulnerability_occurrence_pipelines"."occurrence_id" = "vulnerability_occurrences"."id" INNER JOIN "ci_pipelines" ON "ci_pipelines"."id" = "vulnerability_occurrence_pipelines"."pipeline_id" WHERE "ci_pipelines"."id" IN (SELECT max(id) as id FROM "ci_pipelines" WHERE (EXISTS (SELECT 1 FROM "vulnerability_occurrence_pipelines" WHERE (ci_pipelines.id=vulnerability_occurrence_pipelines.pipeline_id))) AND ("ci_pipelines"."status" IN ('success')) GROUP BY "ci_pipelines"."project_id") AND "vulnerability_occurrences"."project_id" IN (12022021, 12022036, 12022372, 11999364) AND (NOT EXISTS (SELECT 1 FROM "vulnerability_feedback" WHERE (vulnerability_occurrences.report_type = vulnerability_feedback.category) AND (vulnerability_occurrences.project_id = vulnerability_feedback.project_id) AND (ENCODE(vulnerability_occurrences.project_fingerprint, 'HEX') = vulnerability_feedback.project_fingerprint) AND "vulnerability_feedback"."feedback_type" = 0)) LIMIT 10001) subquery_for_count

ActiveRecord::QueryCanceled: PG::QueryCanceled: ERROR:  canceling statement due to statement timeout
: SELECT COUNT(*) FROM (SELECT  1 AS one FROM "vulnerability_occurrences" INNER JOIN "vulnerability_occurrence_pipelines" ON "vulnerability_occurrence_pipelines"."occurrence_id" = "vulnerability_occurrences"."id" INNER JOIN "ci_pipelines" ON "ci_pipelines"."id" = "vulnerability_occurrence_pipelines"."pipeline_id" WHERE "ci_pipelines"."id" IN (SELECT max(id) as id FROM "ci_pipelines" WHERE (EXISTS (SELECT 1 FROM "vulnerability_occurrence_pipelines" WHERE (ci_pipelines.id=vulnerability_occurrence_pipelines.pipeline_id))) AND ("ci_pipelines"."status" IN ('success')) GROUP BY "ci_pipelines"."project_id") AND "vulnerability_occurrences"."project_id" IN (12022021, 12022036, 12022372, 11999364) AND (NOT EXISTS (SELECT 1 FROM "vulnerability_feedback" WHERE (vulnerability_occurrences.report_type = vulnerability_feedback.category) AND (vulnerability_occurrences.project_id = vulnerability_feedback.project_id) AND (ENCODE(vulnerability_occurrences.project_fingerprint, 'HEX') = vulnerability_feedback.project_fingerprint) AND "vulnerability_feedback"."feedback_type" = 0)) LIMIT 10001) subquery_for_count
Edited by Avielle Wolfe