|
31 | 31 | import org.elasticsearch.cluster.service.ClusterService; |
32 | 32 | import org.elasticsearch.common.Strings; |
33 | 33 | import org.elasticsearch.common.breaker.CircuitBreaker; |
| 34 | +import org.elasticsearch.common.breaker.CircuitBreakingException; |
34 | 35 | import org.elasticsearch.common.bytes.BytesReference; |
35 | 36 | import org.elasticsearch.common.io.stream.BytesStreamOutput; |
36 | 37 | import org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput; |
@@ -262,11 +263,16 @@ protected MultiSearchResponse shardOperation(Request request, ShardId shardId) t |
262 | 263 | return context.getFieldType(field); |
263 | 264 | }); |
264 | 265 | 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)); |
269 | | - hits[j] = hit; |
| 266 | + try { |
| 267 | + BytesReference source = visitor.source(); |
| 268 | + hit.unfilteredSourceRef(source); |
| 269 | + breaker.addEstimateBytesAndMaybeBreak(source.length(), "enrich_msearch"); |
| 270 | + hit.sourceRef(filterSource(fetchSourceContext, source)); |
| 271 | + hits[j] = hit; |
| 272 | + } catch (CircuitBreakingException e) { |
| 273 | + hit.decRef(); |
| 274 | + throw e; |
| 275 | + } |
270 | 276 | } |
271 | 277 | items[i] = new MultiSearchResponse.Item(createSearchResponse(topDocs, hits), null); |
272 | 278 | } |
|
0 commit comments