Full search index rebuild may be initiated after each item update


Symptoms

When using the OnPublishEndAsynchronous or IntervalAsynchronous strategies to update search indexes, indexes may be fully rebuilt after every content item update. This can result in reduced site performance, high CPU load and high memory use.

The following messages may be logged when the issue occurs:

WARN  [Index=sitecore_web_index] The number of changes exceeded maximum threshold of '100000'.
WARN IndexCustodian. FullRebuild triggered on index sitecore_web_index

The issue is caused by the index strategies reading a large number of records from the EventQueue and History tables due to an incorrectly resolved timestamp for the last index update. When this happens, a full index rebuild is triggered due to a presumably high number of items that need to be re-indexed.

In most cases, this issue may be caused by an upgrade or large content migration process, as operations that make a lot of content changes fills up EventQueue and History tables and cause the issue.

Solution

For Sitecore CMS 7.2 Initial Release — Sitecore CMS 7.2 Update-3 and
for Sitecore XP 7.5 Initial Release — Sitecore XP 7.5 Update-2:

  1. Copy the Sitecore.Support.442487.dll assembly to the \bin directory of your website.
  2. Copy the Sitecore.Support.442487.config file to the \App_Config\Include directory of your website.

For Sitecore CMS 7.2 Update-4:

  1. Copy the Sitecore.Support.442487.dll assembly to the \bin directory of your website.
  2. Copy the Sitecore.Support.442487.config file to the \App_Config\Include directory of your website.

For Sitecore XP 8.0 Initial Release — Sitecore XP 8.0 Update-2:

  1. Apply the solution from the following source: Sitecore.Support.442487

For Sitecore XP 8.0 Update-3 — Sitecore XP 8.0 Update-5:

  1. Copy the Sitecore.Support.442487.dll assembly to the \bin directory of your website.
  2. Copy the Sitecore.Support.442487.config file to the \App_Config\Include directory of your website.