Indexing pause framework

Background

I believe that we need to start designing indexing pause framework to allow us to selectively pause indexing operations.

Proposal

We can start with something like:

  • document_type (blobs, issues)
  • alias_name/index_name

This framework needs to be extendable so that we can eventually reach project_id granularity. The first use-case for this framework can be Zero downtime reindexing should pause only the ... (#381705)

I think it should be a postgresql table. We can call it advanced_search_pause_rules

name type comment
id bigint PRIMARY KEY
rule jsonb NOT NULL
created_at timestamp NOT NULL
updated_at timestamp NOT NULL

We then can cache all the rules based on MAX(updated_at) so that we don't need to read the table every time.

Edited by 🤖 GitLab Bot 🤖