@@ -139,7 +139,7 @@ private static BulkItemResultHolder executeIndexRequest(final IndexRequest index
139139 return new BulkItemResultHolder (null , indexResult , bulkItemRequest );
140140 } else {
141141 IndexResponse response = new IndexResponse (primary .shardId (), indexRequest .type (), indexRequest .id (),
142- indexResult .getSeqNo (), indexResult .getVersion (), indexResult .isCreated ());
142+ indexResult .getSeqNo (), indexResult .getPrimaryTerm (), indexResult . getVersion (), indexResult .isCreated ());
143143 return new BulkItemResultHolder (response , indexResult , bulkItemRequest );
144144 }
145145 }
@@ -152,7 +152,7 @@ private static BulkItemResultHolder executeDeleteRequest(final DeleteRequest del
152152 return new BulkItemResultHolder (null , deleteResult , bulkItemRequest );
153153 } else {
154154 DeleteResponse response = new DeleteResponse (primary .shardId (), deleteRequest .type (), deleteRequest .id (),
155- deleteResult .getSeqNo (), deleteResult .getVersion (), deleteResult .isFound ());
155+ deleteResult .getSeqNo (), deleteResult .getPrimaryTerm (), deleteResult . getVersion (), deleteResult .isFound ());
156156 return new BulkItemResultHolder (response , deleteResult , bulkItemRequest );
157157 }
158158 }
@@ -272,7 +272,7 @@ private static BulkItemResultHolder executeUpdateRequest(UpdateRequest updateReq
272272 int requestIndex , UpdateHelper updateHelper ,
273273 LongSupplier nowInMillis ,
274274 final MappingUpdatePerformer mappingUpdater ) throws Exception {
275- Engine .Result updateOperationResult = null ;
275+ Engine .Result result = null ;
276276 UpdateResponse updateResponse = null ;
277277 BulkItemRequest replicaRequest = request .items ()[requestIndex ];
278278 int maxAttempts = updateRequest .retryOnConflict ();
@@ -284,7 +284,7 @@ private static BulkItemResultHolder executeUpdateRequest(UpdateRequest updateReq
284284 } catch (Exception failure ) {
285285 // we may fail translating a update to index or delete operation
286286 // we use index result to communicate failure while translating update request
287- updateOperationResult = new Engine .IndexResult (failure , updateRequest .version (), SequenceNumbersService .UNASSIGNED_SEQ_NO );
287+ result = new Engine .IndexResult (failure , updateRequest .version (), SequenceNumbersService .UNASSIGNED_SEQ_NO );
288288 break ; // out of retry loop
289289 }
290290 // execute translated update request
@@ -294,34 +294,41 @@ private static BulkItemResultHolder executeUpdateRequest(UpdateRequest updateReq
294294 IndexRequest indexRequest = translate .action ();
295295 MappingMetaData mappingMd = metaData .mappingOrDefault (indexRequest .type ());
296296 indexRequest .process (mappingMd , request .index ());
297- updateOperationResult = executeIndexRequestOnPrimary (indexRequest , primary , mappingUpdater );
297+ result = executeIndexRequestOnPrimary (indexRequest , primary , mappingUpdater );
298298 break ;
299299 case DELETED :
300300 DeleteRequest deleteRequest = translate .action ();
301- updateOperationResult = executeDeleteRequestOnPrimary (deleteRequest , primary );
301+ result = executeDeleteRequestOnPrimary (deleteRequest , primary );
302302 break ;
303303 case NOOP :
304304 primary .noopUpdate (updateRequest .type ());
305305 break ;
306306 default : throw new IllegalStateException ("Illegal update operation " + translate .getResponseResult ());
307307 }
308- if (updateOperationResult == null ) {
308+ if (result == null ) {
309309 // this is a noop operation
310310 updateResponse = translate .action ();
311311 break ; // out of retry loop
312- } else if (updateOperationResult .hasFailure () == false ) {
312+ } else if (result .hasFailure () == false ) {
313313 // enrich update response and
314314 // set translated update (index/delete) request for replica execution in bulk items
315- switch (updateOperationResult .getOperationType ()) {
315+ switch (result .getOperationType ()) {
316316 case INDEX :
317+ assert result instanceof Engine .IndexResult : result .getClass ();
317318 IndexRequest updateIndexRequest = translate .action ();
318- final IndexResponse indexResponse = new IndexResponse ( primary . shardId (),
319- updateIndexRequest .type (), updateIndexRequest .id (), updateOperationResult .getSeqNo (),
320- updateOperationResult .getVersion (), ((Engine .IndexResult ) updateOperationResult ).isCreated ());
319+ final IndexResponse indexResponse =
320+ new IndexResponse ( primary . shardId (), updateIndexRequest .type (), updateIndexRequest .id (), result .getSeqNo (), result . getPrimaryTerm (),
321+ result .getVersion (), ((Engine .IndexResult ) result ).isCreated ());
321322 BytesReference indexSourceAsBytes = updateIndexRequest .source ();
322- updateResponse = new UpdateResponse (indexResponse .getShardInfo (),
323- indexResponse .getShardId (), indexResponse .getType (), indexResponse .getId (), indexResponse .getSeqNo (),
324- indexResponse .getVersion (), indexResponse .getResult ());
323+ updateResponse = new UpdateResponse (
324+ indexResponse .getShardInfo (),
325+ indexResponse .getShardId (),
326+ indexResponse .getType (),
327+ indexResponse .getId (),
328+ indexResponse .getSeqNo (),
329+ indexResponse .getPrimaryTerm (),
330+ indexResponse .getVersion (),
331+ indexResponse .getResult ());
325332 if ((updateRequest .fetchSource () != null && updateRequest .fetchSource ().fetchSource ()) ||
326333 (updateRequest .fields () != null && updateRequest .fields ().length > 0 )) {
327334 Tuple <XContentType , Map <String , Object >> sourceAndContent =
@@ -333,29 +340,36 @@ private static BulkItemResultHolder executeUpdateRequest(UpdateRequest updateReq
333340 replicaRequest = new BulkItemRequest (request .items ()[requestIndex ].id (), updateIndexRequest );
334341 break ;
335342 case DELETE :
343+ assert result instanceof Engine .DeleteResult : result .getClass ();
336344 DeleteRequest updateDeleteRequest = translate .action ();
337345 DeleteResponse deleteResponse = new DeleteResponse (primary .shardId (),
338- updateDeleteRequest .type (), updateDeleteRequest .id (), updateOperationResult .getSeqNo (),
339- updateOperationResult .getVersion (), ((Engine .DeleteResult ) updateOperationResult ).isFound ());
340- updateResponse = new UpdateResponse (deleteResponse .getShardInfo (),
341- deleteResponse .getShardId (), deleteResponse .getType (), deleteResponse .getId (), deleteResponse .getSeqNo (),
342- deleteResponse .getVersion (), deleteResponse .getResult ());
346+ updateDeleteRequest .type (), updateDeleteRequest .id (), result .getSeqNo (), result .getPrimaryTerm (),
347+ result .getVersion (), ((Engine .DeleteResult ) result ).isFound ());
348+ updateResponse = new UpdateResponse (
349+ deleteResponse .getShardInfo (),
350+ deleteResponse .getShardId (),
351+ deleteResponse .getType (),
352+ deleteResponse .getId (),
353+ deleteResponse .getSeqNo (),
354+ deleteResponse .getPrimaryTerm (),
355+ deleteResponse .getVersion (),
356+ deleteResponse .getResult ());
343357 updateResponse .setGetResult (updateHelper .extractGetResult (updateRequest ,
344358 request .index (), deleteResponse .getVersion (), translate .updatedSourceAsMap (),
345359 translate .updateSourceContentType (), null ));
346360 // set translated request as replica request
347361 replicaRequest = new BulkItemRequest (request .items ()[requestIndex ].id (), updateDeleteRequest );
348362 break ;
349363 }
350- assert updateOperationResult .getSeqNo () != SequenceNumbersService .UNASSIGNED_SEQ_NO ;
364+ assert result .getSeqNo () != SequenceNumbersService .UNASSIGNED_SEQ_NO ;
351365 // successful operation
352366 break ; // out of retry loop
353- } else if (updateOperationResult .getFailure () instanceof VersionConflictEngineException == false ) {
367+ } else if (result .getFailure () instanceof VersionConflictEngineException == false ) {
354368 // not a version conflict exception
355369 break ; // out of retry loop
356370 }
357371 }
358- return new BulkItemResultHolder (updateResponse , updateOperationResult , replicaRequest );
372+ return new BulkItemResultHolder (updateResponse , result , replicaRequest );
359373 }
360374
361375 static boolean shouldExecuteReplicaItem (final BulkItemRequest request , final int index ) {
@@ -496,7 +510,7 @@ public static Engine.IndexResult executeIndexRequestOnPrimary(IndexRequest reque
496510 mappingUpdater .updateMappings (mappingUpdate , primary .shardId (), request .type ());
497511 }
498512 } catch (MapperParsingException | IllegalArgumentException failure ) {
499- return new Engine .IndexResult (failure , request .version ());
513+ return new Engine .IndexResult (failure , request .version (), primary . getPrimaryTerm () );
500514 }
501515
502516 // Verify that there are no more mappings that need to be applied. If there are failures, a
@@ -509,7 +523,7 @@ public static Engine.IndexResult executeIndexRequestOnPrimary(IndexRequest reque
509523 } catch (MapperParsingException | IllegalStateException e ) {
510524 // there was an error in parsing the document that was not because
511525 // of pending mapping updates, so return a failure for the result
512- return new Engine .IndexResult (e , request .version ());
526+ return new Engine .IndexResult (e , request .version (), primary . getPrimaryTerm () );
513527 }
514528 } else {
515529 // There was no mapping update, the operation is the same as the pre-update version.
0 commit comments