A few tests have failed on jenkins where the very first call to Solr to set the policy fails because no live nodes were found. This commit adds a 30 second (max) wait for nodes to be registered live in ZK before attempting to run any test.
This commit adds support for preferredOperation configuration for NodeLostTrigger. The ComputePlanAction now creates DeleteNodeSuggester for each lost node serially when preferredOperation=deletenode. A new section for node lost trigger with exampls is added to the ref guide.
This commit adds support for preferredOperation configuration parameter which defaults to movereplica. Changes ComputePlanAction to add all (collection,shard) pair as hints to AddReplicaSuggester when addreplica is selected as the preferred operation.
This is due to a change in behavior made in this issue where collection metadata creation was moved before attempting to use policy to place replicas. This change reverts the behavior by explicitly deleting the metadata when an AssignmentException occurs. Since the policy depends on collection metadata such as WITH_COLLECTION and COLOCATED_WITH properties, moving metadata creation after policy use would have resulted in passing these properties through the entire call stack quite invasively. Therefore the current approach is adopted.
Fixed SolrDocument's confusion of field-attached child documents in addField()
Fixed AtomicUpdateDocumentMerger's confusion of field-attached child documents in isAtomicUpdate()
Extracted a new method to ensure a given number of jettys are always running in the test setup. Also, delete all collections created by other test methods.
While the startJettySolrRunner adds the given jetty instance to the internal list of jetty instances, the stopJettySolrRunner method does not remove the given instance from the list. This leads to inconsistencies such as stopped jettys retained in the internal list and duplicate (stopped) jettys. This commit also fixes TestCollectionsAPIViaSolrCloudCluster to deal with this change.
Sometimes deletion of the withCollection succeeds even though the linked collection exists, if the delete request is sent immediately after the creation of the linked collection. This is because of a race between the delete request and the zookeeper update made by create collection such that the COLOCATED_WITH property is not visible to the overseer collection processor during the delete request. Therefore, we now wait until the property is visible before returning a success to the user. The test also adds more asserts so that a similar race will fail the test immediately with a proper assert message.
The testSplitAfterSplit and testSplitAfterSplit2 tests only differ in the kind of fault injection being used. The rest of the test code is exactly the same so the common code is extracted into a new method called splitAfterSplit.