Categories
Announcement Sitecore

New feature in Sitecore 10.1 – SolR Indexing retry

In Sitecore 10.1 (released in February 2021) was introduced a new functionality that will make indexing data to SolR to retry an operation if the first attempt to run the operation fails.

Makes sense to activate this functionality when there are network problems on your SolR setup or there are other kind of availability issues.

The setting for this functionality is located in Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config in this section

  <sitecore>
    <contentSearch>
      <indexConfigurations>
          <!- here -->
      </indexConfigurations>
    </contentSearch>
  </sitecore>

and the default option is NoRetryRetryer that never retries. And is configured like this:

<solrRetryer type="Sitecore.ContentSearch.SolrProvider.Availability.Retryer.NoRetryRetryer, Sitecore.ContentSearch.SolrProvider" singleInstance="true" />

There are 2 other strategies that can be enabled:

FixedIntervalsRetryer: this strategy retries in fixed intervals that you specify.

For example, with the following configuration, Solr retries three times (in addition to the first try). The first attempt is after one second, the second attempt after two seconds, and the third attempt after three seconds:

<solrRetryer type="Sitecore.ContentSearch.SolrProvider.Availability.Retryer.FixedIntervalsRetryer, Sitecore.ContentSearch.SolrProvider" singleInstance="true" >
       <sleepDurations hint="list:AddSleepDuration">
              <interval>00:00:01</interval>
              <interval>00:00:02</interval>
              <interval>00:00:03</interval>
       </sleepDurations>
</solrRetryer>

ExponentialRetryer: this strategy retries using an exponential backoff algorithm. You enable and configure the strategy this way:

<solrRetryer type="Sitecore.ContentSearch.SolrProvider.Availability.Retryer.ExponentialRetryer, Sitecore.ContentSearch.SolrProvider" singleInstance="true">
       <param desc="retryCount">3</param>
       <param desc="deltaBackoff">00:00:01</param>
       <param desc="maxBackoff">00:00:05</param>
       <param desc="minBackoff">00:00:01</param>
</solrRetryer>

Indeed you can create a custom retryer and customize it, as you probably deduced that:

  1. Create a class that inherits the Sitecore.ContentSearch.SolrProvider.Availability.Retryer.BaseRetryer class.
  2. Implement the methods you need.
  3. Enable the custom retryer in the solrRetryer section of the Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config file.

PS: The official documentation is here: https://doc.sitecore.com/en/developers/101/platform-administration-and-architecture/configure-the-solr-retry-strategy.html

By Sebastian Tecsi

Sitecore MVP 2018-2021
Sitecore Architect

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.