Troubleshooting list indexing issues


Description

The List Manager application creates and manages lists that other applications and modules use, for example, Email Experience Manager (EXM). List Manager uses sitecore_analytics_index as a data source. During processing, the sitecore_analytics_index populates from the analytics database. List locking ensures that all contacts in the list are indexed and ready. Lists lock after every add, remove, or clear operation. A special agent checks if all operations have finished, and unlocks the lists.

In Sitecore XP 8.2.2 and later versions, you can disable list locking by enabling the \App_Config\Include\ListManagement\Sitecore.ListManagement.DisableListLocking.config.disabled file.

This article describes the most common issues that can make list indexing stuck, describes how the list can be re-indexed, and contains the information that Sitecore Support requires to troubleshoot issues with the List Manager.

Note: The ability to disable List Locking was introduced in Sitecore XP 8.2 and List Locking has been deprecated in Sitecore XP 9.0. However, it is necessary to still be aware of the way that lists behave when they are edited concurrently. For more information, see the following article: List Locking.

General Recommendations

Scenario: List indexing does not finish.

What can be checked and fixed:

After checking the listed suggestions, try to re-index the list as described in the following How To Re-Index The Affected List section. If re-indexing does not help or the issue happens frequently, refer to the Troubleshooting Data section.

How To Re-Index The Affected List

To re-index the list:

  1. Install the patch that corresponds to your Sitecore XP version:
  2. Open the /sitecore/admin/listmanager.aspx page.
  3. Select the affected list from the drop-down menu and click Check.
  4. Depending on the results:
    • If the number of contacts in the index is smaller than the number in the analytics database, click the Re-index button and wait for the process to finish.
    • If the number of contacts in the analytics database is smaller than the number in the index, it may mean that some contacts were removed manually from the analytics database or the data was not re-indexed after changing. If the data wasn't removed from the database manually, click the Remove obsolete contacts button. If the data was removed manually, rebuild the reporting database.
    • If the number of contacts in the analytics database and index is the same, but differs from the number on the list item, locate the list item under the /sitecore/system/List Manager/All Lists one and change the Recipients field to the correct value. In most cases, the list must be unlocked after 15 seconds. Otherwise, you can unlock it manually from List Manager dashboard.

Note: If the number of contacts in the analytics database differs from the number of contacts on the list item, the issue is most likely caused by incorrect code that was used to add contacts to the list. If a contact is added to a list using the analytics API (by modifying contact tags), it is important to increment the Recipient field value of the list item in the master database. This action can be difficult to perform on Content Delivery servers where the Master database is not available. For scaled environments, it is required to use the EXM API, which performs all needed operations.

Collecting Troubleshooting Data

If you performed the previous actions and the issue still exists and is reproducible, contact Sitecore Support and provide the following information:

Enabling Extended Logging [Optional]

Sometimes, when troubleshooting list indexing issues, you must enable extended logging to find the root cause of the problem. This section is optional and you can perform the following steps if a support engineer requests this from you:

  1. In the \App_Config\Sitecore.config file (for XP 8.1 and later) or the \Web.config file (for XP 8.0), change the priority value to DEBUG for the <root> node:
    <root>
      <priority value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
  2. In the \App_Config\Include\Sitecore.ContentSearch.config file, change the level value to DEBUG for the Crawling logger:
    <logger name="Sitecore.Diagnostics.Crawling" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="CrawlingLogFileAppender"/>
    </logger>
  3. Enable the \App_Config\Include\Sitecore.ContentSearch.VerboseLogging.config file.