diff --git a/src/main/java/org/elasticsearch/action/termvector/TransportMultiTermVectorsAction.java b/src/main/java/org/elasticsearch/action/termvector/TransportMultiTermVectorsAction.java index e1f232bb758..4574004ab92 100644 --- a/src/main/java/org/elasticsearch/action/termvector/TransportMultiTermVectorsAction.java +++ b/src/main/java/org/elasticsearch/action/termvector/TransportMultiTermVectorsAction.java @@ -85,9 +85,13 @@ public class TransportMultiTermVectorsAction extends TransportAction<MultiTermVe } shardRequest.add(i, termVectorRequest); } - + + if (shardRequests.size() == 0) { + // only failures.. + listener.onResponse(new MultiTermVectorsResponse(responses.toArray(new MultiTermVectorsItemResponse[responses.length()]))); + } + final AtomicInteger counter = new AtomicInteger(shardRequests.size()); - for (final MultiTermVectorsShardRequest shardRequest : shardRequests.values()) { shardAction.execute(shardRequest, new ActionListener<MultiTermVectorsShardResponse>() { @Override diff --git a/src/test/java/org/elasticsearch/action/termvector/MultiTermVectorsTests.java b/src/test/java/org/elasticsearch/action/termvector/MultiTermVectorsTests.java index d8648c50c5a..fa2f0c7db86 100644 --- a/src/test/java/org/elasticsearch/action/termvector/MultiTermVectorsTests.java +++ b/src/test/java/org/elasticsearch/action/termvector/MultiTermVectorsTests.java @@ -23,8 +23,11 @@ import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.Fields; import org.elasticsearch.action.termvector.MultiTermVectorsItemResponse; import org.elasticsearch.action.termvector.MultiTermVectorsRequestBuilder; +import org.elasticsearch.action.termvector.MultiTermVectorsResponse; +import org.elasticsearch.action.termvector.TermVectorRequestBuilder; import org.junit.Test; +import static org.hamcrest.Matchers.equalTo; public class MultiTermVectorsTests extends AbstractTermVectorTests { @Test @@ -61,4 +64,12 @@ public class MultiTermVectorsTests extends AbstractTermVectorTests { } } + public void testMissingIndexThrowsMissingIndex() throws Exception { + TermVectorRequestBuilder requestBuilder = client().prepareTermVector("testX", "typeX", Integer.toString(1)); + MultiTermVectorsRequestBuilder mtvBuilder = new MultiTermVectorsRequestBuilder(client()); + mtvBuilder.add(requestBuilder.request()); + MultiTermVectorsResponse response = mtvBuilder.execute().actionGet(); + assertThat(response.getResponses().length, equalTo(1)); + assertThat(response.getResponses()[0].getFailure().getMessage(), equalTo("[" + response.getResponses()[0].getIndex() + "] missing")); + } }