Fix SourceOnlySnapshotIT (#53462)

The tests in this class had been failing for a while, but went unnoticed as not tested by CI (see #53442).

The reason the tests fail is that the can-match phase is smarter now, and filters out access to a non-existing field.

Closes #53442
This commit is contained in:
Yannick Welsch 2020-03-12 14:14:36 +01:00
parent af987fb2d4
commit 48124807d5
1 changed files with 6 additions and 6 deletions

View File

@ -106,9 +106,9 @@ public class SourceOnlySnapshotIT extends ESIntegTestCase {
}); });
assertTrue(e.toString().contains("_source only indices can't be searched or filtered")); assertTrue(e.toString().contains("_source only indices can't be searched or filtered"));
e = expectThrows(SearchPhaseExecutionException.class, () -> // can-match phase pre-filters access to non-existing field
client().prepareSearch(sourceIdx).setQuery(QueryBuilders.termQuery("field1", "bar")).get()); assertEquals(0,
assertTrue(e.toString().contains("_source only indices can't be searched or filtered")); client().prepareSearch(sourceIdx).setQuery(QueryBuilders.termQuery("field1", "bar")).get().getHits().getTotalHits().value);
// make sure deletes do not work // make sure deletes do not work
String idToDelete = "" + randomIntBetween(0, builders.length); String idToDelete = "" + randomIntBetween(0, builders.length);
expectThrows(ClusterBlockException.class, () -> client().prepareDelete(sourceIdx, "_doc", idToDelete) expectThrows(ClusterBlockException.class, () -> client().prepareDelete(sourceIdx, "_doc", idToDelete)
@ -131,9 +131,9 @@ public class SourceOnlySnapshotIT extends ESIntegTestCase {
SearchPhaseExecutionException e = expectThrows(SearchPhaseExecutionException.class, () -> SearchPhaseExecutionException e = expectThrows(SearchPhaseExecutionException.class, () ->
client().prepareSearch(sourceIdx).setQuery(QueryBuilders.idsQuery().addIds("" + randomIntBetween(0, builders.length))).get()); client().prepareSearch(sourceIdx).setQuery(QueryBuilders.idsQuery().addIds("" + randomIntBetween(0, builders.length))).get());
assertTrue(e.toString().contains("_source only indices can't be searched or filtered")); assertTrue(e.toString().contains("_source only indices can't be searched or filtered"));
e = expectThrows(SearchPhaseExecutionException.class, () -> // can-match phase pre-filters access to non-existing field
client().prepareSearch(sourceIdx).setQuery(QueryBuilders.termQuery("field1", "bar")).get()); assertEquals(0,
assertTrue(e.toString().contains("_source only indices can't be searched or filtered")); client().prepareSearch(sourceIdx).setQuery(QueryBuilders.termQuery("field1", "bar")).get().getHits().getTotalHits().value);
// make sure deletes do not work // make sure deletes do not work
String idToDelete = "" + randomIntBetween(0, builders.length); String idToDelete = "" + randomIntBetween(0, builders.length);
expectThrows(ClusterBlockException.class, () -> client().prepareDelete(sourceIdx, "_doc", idToDelete) expectThrows(ClusterBlockException.class, () -> client().prepareDelete(sourceIdx, "_doc", idToDelete)