Fix issue 3989

Multi term vector request never returned if shards for all requested documents
were non existent.

closes #3989
This commit is contained in:
Britta Weber 2013-10-28 11:29:20 +01:00
parent dbef64009f
commit 1510cd6923
2 changed files with 17 additions and 2 deletions

View File

@ -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

View File

@ -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"));
}
}