|
30 | 30 | import org.elasticsearch.cluster.routing.ShardsIterator; |
31 | 31 | import org.elasticsearch.cluster.service.ClusterService; |
32 | 32 | import org.elasticsearch.common.Strings; |
| 33 | +import org.elasticsearch.common.breaker.CircuitBreaker; |
33 | 34 | import org.elasticsearch.common.bytes.BytesReference; |
34 | 35 | import org.elasticsearch.common.io.stream.BytesStreamOutput; |
35 | 36 | import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput; |
@@ -221,6 +222,7 @@ protected ShardsIterator shards(ClusterState state, InternalRequest request) { |
221 | 222 | protected MultiSearchResponse shardOperation(Request request, ShardId shardId) throws IOException { |
222 | 223 | final IndexService indexService = indicesService.indexService(shardId.getIndex()); |
223 | 224 | final IndexShard indexShard = indicesService.getShardOrNull(shardId); |
| 225 | + final CircuitBreaker breaker = indicesService.getCircuitBreakerService().getBreaker(CircuitBreaker.REQUEST); |
224 | 226 | try (Engine.Searcher searcher = indexShard.acquireSearcher("enrich_msearch")) { |
225 | 227 | final FieldsVisitor visitor = new FieldsVisitor(true); |
226 | 228 | /* |
@@ -259,8 +261,11 @@ protected MultiSearchResponse shardOperation(Request request, ShardId shardId) t |
259 | 261 | } |
260 | 262 | return context.getFieldType(field); |
261 | 263 | }); |
262 | | - final SearchHit hit = new SearchHit(scoreDoc.doc, visitor.id()); |
263 | | - hit.sourceRef(filterSource(fetchSourceContext, visitor.source())); |
| 264 | + final SearchHit hit = new SearchHit(scoreDoc.doc, visitor.id(), breaker); |
| 265 | + BytesReference source = visitor.source(); |
| 266 | + hit.unfilteredSourceRef(source); |
| 267 | + breaker.addEstimateBytesAndMaybeBreak(source.length(), "enrich_msearch"); |
| 268 | + hit.sourceRef(filterSource(fetchSourceContext, source)); |
264 | 269 | hits[j] = hit; |
265 | 270 | } |
266 | 271 | items[i] = new MultiSearchResponse.Item(createSearchResponse(topDocs, hits), null); |
|
0 commit comments