Wednesday, May 14, 2014

SharePoint 2013: Unable to change topology when Generation controller is not active

Problem

You are attempting to modify the existing farm search topology by adding a second WFE and adding index and query components to this second WFE.  Within your SharePoint Management PowerShell window, you clone the current enterprise search topology, and make the appropriate modifications, but when you then try to activate it, you are presented with the following error: 
Exception calling "Activate" with "0" argument(s): "Topology activation failed. Management called failed with System.InvalidOperationException: 'Unable to change topology when Generation controller is not active' at at Microsoft.Ceres.SearchCore.IndexController.IndexController.IsEmptyIndex(String indexSystemName) at Microsoft.Ceres.SearchCore.IndexController.IndexControllerManagementAgent.WrapCall[T](Func`2 original)" At line:1 char:1 + $Clone.Activate() + ~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SearchTopologyActivationException SharePoint 2013 Unable to change topology when Generation controller is not active
You then check the Search Service Topology and note that the index component on the WFE currently hosting the index and query components is in a degraded state.  This is the only index component for the farm.  You then engage in troubleshooting.

Troubleshooting
  1. Action: attempted to reset index.
    • Result: would not complete.
  2. Action: attempted to delete Search Service Application
    • Result: would not complete.
  3. Action: perform steps as in reference [2], then removed and re-installed the Search Service application.
    • Result: was able to perform a delete of the Search Service Application and then build a new search service application.
  4. Action: viewed search topology on Search Service Administration page.
    • Result: index partition no longer displays in degraded state.
Solution
  1. Get out of any still running index reset or search application deletion prompts that display that they are still busy.
  2. If you are not there already, remote into the farm server hosting the search service.
  3. Stop the SharePoint Timer Service on this server.
  4. Open up Windows Explorer, and then navigate to C:\ProgramData\Microsoft\SharePoint\Config\.  You'll see one or more folders at this location named by a GUID.  Look for the most recent one. 
    Note: this posting assumes that the SharePoint 2013 binaries were installed default (to the C: drive).
  5. Open this folder.  You will see a number of XML files. 
  6. Delete all XML files in this folder only.
  7. Now look for the file cache.ini.  It should be the only one remaining.
  8. Open this file in a text editor.  It will contain a single six-digit number.
  9. Edit this number randomly, but keeping it at six-digits.
  10. Save the file.
  11. Restart the SharePoint Timer Service.
  12. Now delete the Search Service Application.
  13. Rebuild the Search Service Application.
References
  1. Create new Index Component and add it to a clone topology?
  2. SharePoint 2013 Unable to change topology when Generation controller is not active
  3. An update conflict has occurred, and you must re-try this action. The object SearchServiceApplication Name={FAST SSA} was updated by {account}, in OWSTIMER (5836) process, on machine {server name}.
  4. One or more servers is not responding (SharePoint Foundation 2010)
Notes
  • If your site displays an HTTP 500 Internal Server error page, after performing these stops (specifically, stopping and starting the SharePoint Timer Service), check IIS to verify that all application pools are started on the WFE you were working on.

No comments: