Description
Steps to reproduce:
- Create a two node cluster
- Create a collection called "source" with 1 shard, 1 replica
- Add 1000 docs with prefix a!
- Add 100 docs with prefix b! and c! each
- Create a new target collection with 1 shard, 1 replica and ensure that it is created on a different node than "source"
- Issue a migrate API call with an async parameter:
http://localhost:8983/solr/admin/collections?action=migrate&split.key=a!&collection=gettingstarted&target.collection=target&wt=json&async=acid
The above fails with:
ERROR - 2015-03-23 22:50:11.349; org.apache.solr.common.SolrException; Collection: gettingstarted operation: migrate failed:org.apache.solr.common.SolrException: Invalid status request: notfoundretried 6times at org.apache.solr.cloud.OverseerCollectionProcessor.waitForCoreAdminAsyncCallToComplete(OverseerCollectionProcessor.java:2807) at org.apache.solr.cloud.OverseerCollectionProcessor.waitForAsyncCallsToComplete(OverseerCollectionProcessor.java:2753) at org.apache.solr.cloud.OverseerCollectionProcessor.completeAsyncRequest(OverseerCollectionProcessor.java:2229) at org.apache.solr.cloud.OverseerCollectionProcessor.migrateKey(OverseerCollectionProcessor.java:2200) at org.apache.solr.cloud.OverseerCollectionProcessor.migrate(OverseerCollectionProcessor.java:1984) at org.apache.solr.cloud.OverseerCollectionProcessor.processMessage(OverseerCollectionProcessor.java:637) at org.apache.solr.cloud.OverseerCollectionProcessor$Runner.run(OverseerCollectionProcessor.java:2864) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
Thanks to mewmewball for finding this bug.