Skip to content

Fix ElasticDeleteProjectWorker delete commits, index_status

What does this MR do?

This ElasticDeleteProjectWorker is a sidekiq worker that is responsible for clearing project data out of our Elasticsearch index. It does this using a Delete by query which attempts to find all associated (child records) for the project and delete them as well as the project

This MR fixes 2 problems with ElasticDeleteProjectWorker:

  1. Previously this worker was not correctly deleting commits as they did not have a project_id #327829 (closed). We do have a commit.rid which is the project_id set so we need to use this in our delete_by_query
  2. We had another weird bug #259721 (closed) where we were not correctly clearing index_status after running this worker. When this worker was created this made sense because it was only used when a project was deleted. But on GitLab.com we also use this when a project subscription expires. Therefore any projects that had expired subscriptions then later renewed were considered to already be indexed based on index_status which caused most of the repository to be missed.

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

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 #259721 (closed)

Edited by Dylan Griffith

Merge request reports