When making a change to the search topology, you need to have at least one index component in the active state with no warnings for each partition. This makes sense if you are adding additional partitions which would cause the indexed documents to be repartitioned. In that case you would need a valid copy of every document in the index to redistribute. Or, if you add additional replicas, you need a source to populate that replica with indexed documents. Unfortunately the constraint of having an indexer controller up in each partition applies to all topology changes. For examples, you could not add an additional admin component if one of you partitions is down.
Here is the error you'll see if you try to activate an new topology in this state:
PS C:\Users\SPFarm> Set-SPEnterpriseSearchTopology -Identity $newTopologySet-SPEnterpriseSearchTopology : 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+ Set-SPEnterpriseSearchTopology -Identity $newTopology+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidData: (Microsoft.Offic...tSearchTopology:SetSearchTopology) [Set-SPEnterpriseSearchTopology], SearchTopologyActivationException + FullyQualifiedErrorId : Microsoft.Office.Server.Search.Cmdlet.SetSearchTopology
This is current as of the March 2013 Public Update. This appears to be yet another reason to assure your active topology is fault-tolerant and not to rely on adding additional components in the event of a failure.
Thanks for your post. I would have never guessed why I could not activate the new topology. In my case I had redundant Query Processing and Index Components running in 2 servers but both of them had issues starting the NodeRunner process. NTDLL.DLL issue on Windows 2012. I ended up having to recreate my Search Service Application. Error details:
Faulting application name: NodeRunner.exe, version: 15.0.4420.1017, time stamp: 0x506723c5
Faulting module name: ntdll.dll, version: 6.2.9200.16420, time stamp: 0x505ab405
Exception code: 0xc00000fd
Fault offset: 0x0000000000024a11
Faulting process id: 0xe68
Faulting application start time: 0x01ce673bc8c536a8
Faulting application path: E:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\NodeRunner.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 074b3ab9-d32f-11e2-940f-00155d84100b
Faulting package full name:
Faulting package-relative application ID:
I am facing this issue , is there a solution to this?