Search: Search requests hangs when no indices exists, closes #209.
This commit is contained in:
parent
d0eb836c4a
commit
bcbc0dd741
|
@ -52,7 +52,7 @@ public class SearchPhaseExecutionException extends ElasticSearchException {
|
||||||
|
|
||||||
private static final String buildMessage(String phaseName, String msg, ShardSearchFailure[] shardFailures) {
|
private static final String buildMessage(String phaseName, String msg, ShardSearchFailure[] shardFailures) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("Failed to execute [").append(phaseName).append("] ").append(msg);
|
sb.append("Failed to execute phase [").append(phaseName).append("], ").append(msg);
|
||||||
if (shardFailures != null && shardFailures.length > 0) {
|
if (shardFailures != null && shardFailures.length > 0) {
|
||||||
sb.append("; shardFailures ");
|
sb.append("; shardFailures ");
|
||||||
for (ShardSearchFailure shardFailure : shardFailures) {
|
for (ShardSearchFailure shardFailure : shardFailures) {
|
||||||
|
|
|
@ -41,6 +41,7 @@ import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.util.settings.Settings;
|
import org.elasticsearch.util.settings.Settings;
|
||||||
import org.elasticsearch.util.trove.ExtTIntArrayList;
|
import org.elasticsearch.util.trove.ExtTIntArrayList;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
@ -110,6 +111,11 @@ public abstract class TransportSearchTypeAction extends BaseAction<SearchRequest
|
||||||
shardsIts = indicesService.searchShards(clusterState, request.indices(), request.queryHint());
|
shardsIts = indicesService.searchShards(clusterState, request.indices(), request.queryHint());
|
||||||
expectedSuccessfulOps = shardsIts.size();
|
expectedSuccessfulOps = shardsIts.size();
|
||||||
expectedTotalOps = shardsIts.totalSizeActive();
|
expectedTotalOps = shardsIts.totalSizeActive();
|
||||||
|
|
||||||
|
if (expectedSuccessfulOps == 0) {
|
||||||
|
// not search shards to search on...
|
||||||
|
throw new SearchPhaseExecutionException("initial", "No indices / shards to search on, requested indices are " + Arrays.toString(request.indices()), buildShardFailures());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
|
|
|
@ -59,6 +59,16 @@ public class DocumentActionsTests extends AbstractNodesTests {
|
||||||
startNode("server2");
|
startNode("server2");
|
||||||
client1 = getClient1();
|
client1 = getClient1();
|
||||||
client2 = getClient2();
|
client2 = getClient2();
|
||||||
|
|
||||||
|
// no indices, check that simple operations fail
|
||||||
|
try {
|
||||||
|
client1.prepareCount("test").setQuery(termQuery("_type", "type1")).setOperationThreading(BroadcastOperationThreading.NO_THREADS).execute().actionGet();
|
||||||
|
assert false : "should fail";
|
||||||
|
} catch (Exception e) {
|
||||||
|
// all is well
|
||||||
|
}
|
||||||
|
client1.prepareCount().setQuery(termQuery("_type", "type1")).setOperationThreading(BroadcastOperationThreading.NO_THREADS).execute().actionGet();
|
||||||
|
|
||||||
createIndex();
|
createIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,21 @@ public class SimpleIndicesBoostSearchTests extends AbstractNodesTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIndicesBoost() throws Exception {
|
public void testIndicesBoost() throws Exception {
|
||||||
|
// execute a search before we create an index
|
||||||
|
try {
|
||||||
|
client.prepareSearch().setQuery(termQuery("test", "value")).execute().actionGet();
|
||||||
|
assert false : "should fail";
|
||||||
|
} catch (Exception e) {
|
||||||
|
// ignore, no indices
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
client.prepareSearch("test").setQuery(termQuery("test", "value")).execute().actionGet();
|
||||||
|
assert false : "should fail";
|
||||||
|
} catch (Exception e) {
|
||||||
|
// ignore, no indices
|
||||||
|
}
|
||||||
|
|
||||||
client.admin().indices().create(createIndexRequest("test1")).actionGet();
|
client.admin().indices().create(createIndexRequest("test1")).actionGet();
|
||||||
client.admin().indices().create(createIndexRequest("test2")).actionGet();
|
client.admin().indices().create(createIndexRequest("test2")).actionGet();
|
||||||
client.index(indexRequest("test1").type("type1").id("1")
|
client.index(indexRequest("test1").type("type1").id("1")
|
||||||
|
|
Loading…
Reference in New Issue