Skip to content

Fix two data races in the branch names cache

Nick Thomas requested to merge repository-set-cache-races into master

What does this MR do?

Expiry of the branch name cache could race with checking inclusion, in such a way that a branch may be marked as non-existent when it does in fact exist.

This MR uses Redis transactions to atomically take the existence of the set at the same time as the smembers / sismembers call, so we can distinguish between "an empty value exists in the cache" and "the cache is empty".

Does this MR meet the acceptance criteria?


Availability and Testing


If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • 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

Related to #326066 (closed)

Edited by Nick Thomas

Merge request reports