Skip to content

Search: Counts endpoint respond with 408 for query timeouts

What does this MR do?

Related to #334961 (closed)

Detect and respond to the search/count endpoint with a 408 Request Timeout response code and empty JSON response if an ActiveRecord::QueryTimeout occurs.

Screenshots or Screencasts (strongly suggested)

When timeouts occur the counts will not load as shown below

image

How to test

I've provided a small patch that will force the search count queries to timeout.

  1. Download the patch force_count_timeout.txt
  2. Fetch and checkout this branch git fetch origin 334961-search-counts-endpoint-instead-of-responding-with-500-respond-with-408-request-timeout & git checkout 334961-search-counts-endpoint-instead-of-responding-with-500-respond-with-408-request-timeout
  3. Copy the entire file contents from the patch you downloaded in step 1
  4. Run the command pbpaste | git apply from your /gitlab directory - This should add some local code changes
  5. Navigate to Global Search http://127.0.0.1:3000/search and search something
  6. All of the count tab calls should timeout, but if it doesn't try a few more times/changing tabs/etc.
  7. You can verify the timeouts using the developer tools or the development.log

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Terri Chu

Merge request reports