Page MenuHomePhabricator

Allow index extensions to skip indexing if the object has not changed

Authored by epriestley on Dec 21 2015, 7:18 PM.



Fixes T9890. This allows IndexExtensions to emit an object version.

Before we build indexes, we check if the indexed version is the same as the current version. If it is, we just don't call that extension.

T9890 has a case where this is useful: a script went crazy and posted thousands of comments to a single task.

Without versioning, that results in the same comments being indexed over and over again. With versioning, most of the queue could just exit without doing any work.

Test Plan
  • Added a sleep(1) to the actual indexing, used bin/search index --background to queue up a lot of tasks, ran them with bin/phd debug task, saw them complete very quickly with only one actual index operation performed.
  • Used bin/search index --trace and bin/search index --trace --background to observe the behavior of queries against the index version store, which looked sensible.
  • Made comments/transactions, saw versions update.
  • Used bin/remove destroy, verified index versions were purged.

Diff Detail

rP Phabricator
Lint Not Applicable
Tests Not Applicable

Event Timeline

epriestley retitled this revision from to Allow index extensions to skip indexing if the object has not changed.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: chad.
chad edited edge metadata.
This revision is now accepted and ready to land.Dec 21 2015, 8:33 PM
This revision was automatically updated to reflect the committed changes.