2

I am hoping to understand the cause of this and hopefully find a solution - I have looked at every possible solution, but haven't been able to fix it.

Sitecore v10.0.2 using Solr 8.4.

  • In my current set up, Core DB is shared between CM and CD servers. Index update strategy for web dB is onPublishEndAsyncSingleInstance combined with remoteRebuild.

  • I created a new item and published it. Item was published to the web db, but the item didn't appear in the index(but item was updated in the index when I
    set up the solr as local standalone instance
    ).

  • I thought perhaps core db might have a play in this. So, I checked the event queue settings to see if it was set to true & it is.

  • When we trigger sitecore web index rebuild from sitecore
    interface(control panel) then only remote solr instances indexes are getting updated.

  • All the events are processed in the event queue according to
    EventQueueStats.aspx & in the event queue table as well.

What could be the cause of it?

6
  • 1
    Do you have a dedicated Solr instance per CD? Do the CD roles have the the Indexing role?
    – mikaelnet
    Dec 22, 2021 at 14:07
  • Hi @mikaelnet , No we don't have a dedicated solr instance per CD , we just have two solr cloud instances & each solr cloud has three nodes in it. And CD doesn't have the indexing role.
    – Harish
    Dec 22, 2021 at 14:20
  • Are you seeing any errors in the solr logs? You can easily view them via this URL, or similar depending on your configuration: localhost:8983/solr/#/~logging Dec 22, 2021 at 16:41
  • 1
    I think your CD role needs to have Indexing role to work. Try to add that and see if it makes a difference Dec 22, 2021 at 17:53
  • Hi @JonKoivula , Thanks for your input. Adding the indexing role to CD servers worked.
    – Harish
    Dec 23, 2021 at 6:59

3 Answers 3

2

Since you mentioned in one of the comments that you're using Solr Cloud with 3 nodes, I just wanted to share the setup I've found working well for most scenarios:

Use just the onPublishEndAsyncSingleInstance strategy on the web-related indexes, such as sitecore_web_index. Skip the remoteRebuild. Set the strategy to manual on non-indexing servers and ensure one server is assigned to handle the indexing. Usually I let the CM server do the indexing, since a bit of extra load on that machine doesn't affect the site performance for visitors.

The Sitecore config parts handling the indexing strategies could end up something like this:

<strategies hint="list:AddStrategy">
  <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/onPublishEndAsyncSingleInstance" role:require="Standalone OR (ContentManagement AND Indexing) OR (ContentDelivery AND Indexing)" />
  <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/manual" role:require="(ContentManagement AND !Indexing) OR (ContentDelivery AND !Indexing)" />
</strategies>

You AppSettings can thereby be kept as-is, <add key="role:define" value="Standalone"/>, for local development and in production/multi-server roles, you can define CM as ContentManagement, Indexing (and potentially Processing and Reporting if it suits your infra architecture) and the CD as just ContentDelivery.

Solr Cloud also works very well with switching indexes. It is essential that just machine is responsible for building each index. Otherwise they may overwrite each other, and with switching indexes they may fight over what index should be the primary one.

0

Adding the indexing role to content delivery servers fixed the issue.

0

Make sure Content Delivery have Indexing role. Then it will index everything to Solr sitecore_web_index when publish is done.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.