Sitecore SearchStax Component showing different results on every page refresh issue, troubleshooting, solution
Hi Fellas,
In today's blog post I will share a scenario which will help you also in your implementation, what is important here is to understand the issue when it is produced.
Generally, it is always puzzling why certain components show different results on different page refresh, and because my team members also spent same amount of time on both of the different scenarios and hence, I thought to get this article out, I will explain those two scenarios and also provide solution at the end, Though solution is easy and available on lot of sites but important here is finding out what is the issue and what are the steps to identify it, so in this blog post my focus is to show you the steps of identification rather than solution.
Scenario
Here are those two scenarios
Sccenario-1
On a home page we have a Sitecore component, which has a custom resolver, and that resolver basically reads from solr index and hits the query and returns the JSON result, and that is being read in JSS component, now every page refresh it was showing different results.
Scenario-2
Another puzzling scenario was, when our QA raised our video feed component is showing feeds in alternate refresh, because we had scenario-1 already happened where we spent good amount of time, so solving scneario-2 was not hard but because same code returns different results from index makes you puzzle and that is where I mentioned, Understanding the process before solving is interesting.
Troubleshooting
Well because it is a SOLR query which is returning different results, so we knew something is wrong there, and we are using SearchStax so we have multiple replicas of one index, we straight away checked the replicas we found following
Now, it is clear that some documents are missing from index replicas and clearly replicas are out of sync as one of the replicas is showing less documents
So, what happens is depending on page refresh sometimes it returns data from on replica and another page refresh it returns data from another replica and because there are docs missing, it is not able to return any results and hence the miss match.
Now, to further troubleshoot and know if our specific documents which our component is trying to fetch data for, we took the query from Sitecore log and there is a way to fire that query in individual replicas, that means if our theory is correct, those queries against three replicas should return different results.
There is a good documentation available on Identical Queries Produce Inconsistent Results - SearchStax Help Center and we followed that
Basically, we had three replicas so in three different browser tab we hit following queries
1) https://<<Our cloud solr instance URL>>/solr/sitecore_web_index_shard1_replica_n1/select?q=<<solr query which we found in log for that component>>
2) https://<<Our cloud solr instance URL>>/solr/sitecore_web_index_shard1_replica_n2/select?q=<<solr query which we found in log for that component>>
3) https://<<Our cloud solr instance URL>>/solr/sitecore_web_index_shard1_replica_n4/select?q=<<solr query which we found in log for that component>>
You see those replica names those you can get from going into collection and then shard like below
and all three tabs revealed inconsistent results as shown below
Hence it was proved that what is the issue and how to sync these replicas? So all data was published the issue was that somehow all replicas are not in sync
and because we are using searchstax, we asked them to do a Rolling Restart
As I said in this article, instead of the solution, the process of identifying is little important here because that is where maximum time goes, so next time when you land into this kind of scenario, you know what steps to perform to identify the issue :)
Comments
Post a Comment