|  | @@ -74,6 +74,7 @@ import org.junit.Before;
 | 
	
		
			
				|  |  |  import java.io.IOException;
 | 
	
		
			
				|  |  |  import java.lang.reflect.Proxy;
 | 
	
		
			
				|  |  |  import java.util.Collections;
 | 
	
		
			
				|  |  | +import java.util.function.Supplier;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import static org.hamcrest.Matchers.containsString;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -84,7 +85,7 @@ import static org.hamcrest.Matchers.containsString;
 | 
	
		
			
				|  |  |  public class TemplateQueryParserTests extends ESTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private Injector injector;
 | 
	
		
			
				|  |  | -    private QueryShardContext context;
 | 
	
		
			
				|  |  | +    private Supplier<QueryShardContext> contextFactory;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Before
 | 
	
		
			
				|  |  |      public void setup() throws IOException {
 | 
	
	
		
			
				|  | @@ -134,7 +135,8 @@ public class TemplateQueryParserTests extends ESTestCase {
 | 
	
		
			
				|  |  |          ScriptService scriptService = injector.getInstance(ScriptService.class);
 | 
	
		
			
				|  |  |          SimilarityService similarityService = new SimilarityService(idxSettings, Collections.emptyMap());
 | 
	
		
			
				|  |  |          MapperRegistry mapperRegistry = new IndicesModule().getMapperRegistry();
 | 
	
		
			
				|  |  | -        MapperService mapperService = new MapperService(idxSettings, analysisService, similarityService, mapperRegistry, () -> context);
 | 
	
		
			
				|  |  | +        MapperService mapperService = new MapperService(idxSettings, analysisService, similarityService, mapperRegistry, () ->
 | 
	
		
			
				|  |  | +            contextFactory.get());
 | 
	
		
			
				|  |  |          IndicesFieldDataCache cache = new IndicesFieldDataCache(settings, new IndexFieldDataCache.Listener() {});
 | 
	
		
			
				|  |  |          IndexFieldDataService indexFieldDataService =new IndexFieldDataService(idxSettings, cache, injector.getInstance(CircuitBreakerService.class), mapperService);
 | 
	
		
			
				|  |  |          BitsetFilterCache bitsetFilterCache = new BitsetFilterCache(idxSettings, new BitsetFilterCache.Listener() {
 | 
	
	
		
			
				|  | @@ -149,7 +151,7 @@ public class TemplateQueryParserTests extends ESTestCase {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          IndicesQueriesRegistry indicesQueriesRegistry = injector.getInstance(IndicesQueriesRegistry.class);
 | 
	
		
			
				|  |  | -        context = new QueryShardContext(idxSettings, bitsetFilterCache, indexFieldDataService, mapperService,
 | 
	
		
			
				|  |  | +        contextFactory =  () -> new QueryShardContext(idxSettings, bitsetFilterCache, indexFieldDataService, mapperService,
 | 
	
		
			
				|  |  |                  similarityService, scriptService, indicesQueriesRegistry, proxy, null, null, null);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -164,7 +166,7 @@ public class TemplateQueryParserTests extends ESTestCase {
 | 
	
		
			
				|  |  |          String templateString = "{" + "\"query\":{\"match_{{template}}\": {}}," + "\"params\":{\"template\":\"all\"}" + "}";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          XContentParser templateSourceParser = XContentFactory.xContent(templateString).createParser(templateString);
 | 
	
		
			
				|  |  | -        context.reset();
 | 
	
		
			
				|  |  | +        QueryShardContext context = contextFactory.get();
 | 
	
		
			
				|  |  |          templateSourceParser.nextToken();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          Query query = QueryBuilder.rewriteQuery(TemplateQueryBuilder.fromXContent(context.newParseContext(templateSourceParser)),
 | 
	
	
		
			
				|  | @@ -176,7 +178,7 @@ public class TemplateQueryParserTests extends ESTestCase {
 | 
	
		
			
				|  |  |          String templateString = "{" + "  \"inline\" : \"{ \\\"match_{{#use_it}}{{template}}{{/use_it}}\\\":{} }\"," + "  \"params\":{"
 | 
	
		
			
				|  |  |                  + "    \"template\":\"all\"," + "    \"use_it\": true" + "  }" + "}";
 | 
	
		
			
				|  |  |          XContentParser templateSourceParser = XContentFactory.xContent(templateString).createParser(templateString);
 | 
	
		
			
				|  |  | -        context.reset();
 | 
	
		
			
				|  |  | +        QueryShardContext context = contextFactory.get();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          Query query = QueryBuilder.rewriteQuery(TemplateQueryBuilder.fromXContent(context.newParseContext(templateSourceParser)), context).toQuery(context);
 | 
	
		
			
				|  |  |          assertTrue("Parsing template query failed.", query instanceof MatchAllDocsQuery);
 | 
	
	
		
			
				|  | @@ -192,7 +194,7 @@ public class TemplateQueryParserTests extends ESTestCase {
 | 
	
		
			
				|  |  |                  + "  \"params\":{" + "    \"size\":2" + "  }\n" + "}";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          XContentParser templateSourceParser = XContentFactory.xContent(templateString).createParser(templateString);
 | 
	
		
			
				|  |  | -        context.reset();
 | 
	
		
			
				|  |  | +        QueryShardContext context = contextFactory.get();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              TemplateQueryBuilder.fromXContent(context.newParseContext(templateSourceParser)).rewrite(context);
 | 
	
	
		
			
				|  | @@ -206,7 +208,7 @@ public class TemplateQueryParserTests extends ESTestCase {
 | 
	
		
			
				|  |  |          String templateString = "{ \"file\": \"storedTemplate\" ,\"params\":{\"template\":\"all\" } } ";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          XContentParser templateSourceParser = XContentFactory.xContent(templateString).createParser(templateString);
 | 
	
		
			
				|  |  | -        context.reset();
 | 
	
		
			
				|  |  | +        QueryShardContext context = contextFactory.get();
 | 
	
		
			
				|  |  |          templateSourceParser.nextToken();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -219,7 +221,7 @@ public class TemplateQueryParserTests extends ESTestCase {
 | 
	
		
			
				|  |  |          String templateString = "{ \"file\": \"storedTemplate\" ,\"params\":{\"template\":\"all\" } } ";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          XContentParser templateSourceParser = XContentFactory.xContent(templateString).createParser(templateString);
 | 
	
		
			
				|  |  | -        context.reset();
 | 
	
		
			
				|  |  | +        QueryShardContext context = contextFactory.get();
 | 
	
		
			
				|  |  |          templateSourceParser.nextToken();
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              TemplateQueryBuilder.fromXContent(context.newParseContext(templateSourceParser)).toQuery(context);
 |