Skip to content

Draft: Add indexing pausing queue

What does this MR do and why?

This is broken into two parts:

  1. Add pausing service: !116040 (closed)
  2. Handle paused items in indexing queue 👈 (this MR)

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

How to set up and validate locally

  1. Pause indexing for the NoteIndex
    Search::IndexingPausingService.new.pause!(index_type: Search::NoteIndex)
  2. Add an item to processing queue
    Elastic::ProcessBookkeepingService.track!(Note.first)
  3. Check queued items for indexing
    pry(main)> Elastic::ProcessBookkeepingService.queued_items
    => {1=>[["Note 1 note_1 project_1", 22.0]]}
  4. Check paused queued items
    pry(main)> Search::PausedBookkeepingService.queued_items
    => {}
  5. Execute process bookkeeping. It will move paused items to paused queue
    Elastic::ProcessBookkeepingService.new.execute
  6. Check queued items for indexing
    pry(main)> Elastic::ProcessBookkeepingService.queued_items
    => {}
  7. Check paused queued items
    pry(main)> Search::PausedBookkeepingService.queued_items
    => {1=>[["Note 1 note_1 project_1", 1.0]]}
  8. Unpause pause queue
    Search::PausedBookkeepingService.unpause!
  9. Check paused queued items
    pry(main)> Search::PausedBookkeepingService.queued_items
    => {}
  10. Check queued items for indexing
    pry(main)> Elastic::ProcessBookkeepingService.queued_items
    => {1=>[["Note 1 note_1 project_1", 22.0]]}

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by John Mason

Merge request reports