SharePoint 2013 Search not working because of Configuration cache

Today, I had an issue with SharePoint Content Search Web Parts, it kept showing a message about something wrong happened, I logged into the application server that has the search component running and checked the content sources and found that the crawler is stuck for over 200 hours.

I tried restarting the search controller and it failed to start due to log in failure, well, the password for the service account was changed 😦

I set the new password and started the services, ran the crawler and still the web parts showing errors and no results are showing.

I opened Google Chrome PostMan and  tried issuing a REST request to the search API and I got an XML response with the following exception

-1, Microsoft.Office.Server.Search.REST.SearchServiceException

Next thing was to have a look at the event viewer and this is from where i started, i found the following error:

An update conflict has occurred, and you must re-try this action. The object SearchRuntimeService 

It seems that for some reason, the SharePoint Configuration Cache became inconsistent across all servers, so I followed the steps in the below link and from 2 App servers and 4 WFE, only 1 App server didn’t work and the value inside the cache.ini file didn’t change and the number of XML files were fewer than the rest of servers.

After a lot of search, I had no other option but to rerun the configuration wizard on this App server, and guess what? The Config Wizard stopped after the second step.

After going through the log file, I found that there was a missing DLL related to one of our custom developed timer jobs, Once I installed this DLL, the config wizard completed successfully, the cache.ini file has the updated file and finally I got SharePoint search working as expected.

S0, What is SharePoint Configuration Cache?

It is a setup of XML + INI files stored at C:\ProgramData\Microsoft\SharePoint\Config\<GUID>, on all SharePoint farm servers, it contains a copy of objects stored in the Farm Configuration database, If for any reason the configuration files became inconsistent, you will have stop the timer service, clear this folder except for the cache.ini file, set the value of the cache.ini file to 1 and start the timer service again, this will ensure that all files are updated with the latest configuration for the farm.