@@ -163,19 +163,6 @@ Result prepareUpsert(ShardId shardId, UpdateRequest request, final GetResult get
163163 return new Result (indexRequest , DocWriteResponse .Result .CREATED , null , null );
164164 }
165165
166- /**
167- * Calculate the version to use for the update request, using either the existing version if internal versioning is used, or the get
168- * result document's version if the version type is "FORCE".
169- */
170- static long calculateUpdateVersion (UpdateRequest request , GetResult getResult ) {
171- if (request .versionType () != VersionType .INTERNAL ) {
172- assert request .versionType () == VersionType .FORCE ;
173- return request .version (); // remember, match_any is excluded by the conflict test
174- } else {
175- return getResult .getVersion ();
176- }
177- }
178-
179166 /**
180167 * Calculate a routing value to be used, either the included index request's routing, or retrieved document's routing when defined.
181168 */
@@ -195,7 +182,6 @@ static String calculateRouting(GetResult getResult, @Nullable IndexRequest updat
195182 * containing a new {@code IndexRequest} to be executed on the primary and replicas.
196183 */
197184 Result prepareUpdateIndexRequest (ShardId shardId , UpdateRequest request , GetResult getResult , boolean detectNoop ) {
198- final long updateVersion = calculateUpdateVersion (request , getResult );
199185 final IndexRequest currentRequest = request .doc ();
200186 final String routing = calculateRouting (getResult , currentRequest );
201187 final Tuple <XContentType , Map <String , Object >> sourceAndContent = XContentHelper .convertToMap (getResult .internalSourceRef (), true );
@@ -215,7 +201,8 @@ Result prepareUpdateIndexRequest(ShardId shardId, UpdateRequest request, GetResu
215201 } else {
216202 final IndexRequest finalIndexRequest = Requests .indexRequest (request .index ())
217203 .type (request .type ()).id (request .id ()).routing (routing )
218- .source (updatedSourceAsMap , updateSourceContentType ).version (updateVersion ).versionType (request .versionType ())
204+ .source (updatedSourceAsMap , updateSourceContentType )
205+ .setIfSeqNo (getResult .getSeqNo ()).setIfPrimaryTerm (getResult .getPrimaryTerm ())
219206 .waitForActiveShards (request .waitForActiveShards ()).timeout (request .timeout ())
220207 .setRefreshPolicy (request .getRefreshPolicy ());
221208 return new Result (finalIndexRequest , DocWriteResponse .Result .UPDATED , updatedSourceAsMap , updateSourceContentType );
@@ -228,7 +215,6 @@ Result prepareUpdateIndexRequest(ShardId shardId, UpdateRequest request, GetResu
228215 * primary and replicas.
229216 */
230217 Result prepareUpdateScriptRequest (ShardId shardId , UpdateRequest request , GetResult getResult , LongSupplier nowInMillis ) {
231- final long updateVersion = calculateUpdateVersion (request , getResult );
232218 final IndexRequest currentRequest = request .doc ();
233219 final String routing = calculateRouting (getResult , currentRequest );
234220 final Tuple <XContentType , Map <String , Object >> sourceAndContent = XContentHelper .convertToMap (getResult .internalSourceRef (), true );
@@ -256,14 +242,16 @@ Result prepareUpdateScriptRequest(ShardId shardId, UpdateRequest request, GetRes
256242 case INDEX :
257243 final IndexRequest indexRequest = Requests .indexRequest (request .index ())
258244 .type (request .type ()).id (request .id ()).routing (routing )
259- .source (updatedSourceAsMap , updateSourceContentType ).version (updateVersion ).versionType (request .versionType ())
245+ .source (updatedSourceAsMap , updateSourceContentType )
246+ .setIfSeqNo (getResult .getSeqNo ()).setIfPrimaryTerm (getResult .getPrimaryTerm ())
260247 .waitForActiveShards (request .waitForActiveShards ()).timeout (request .timeout ())
261248 .setRefreshPolicy (request .getRefreshPolicy ());
262249 return new Result (indexRequest , DocWriteResponse .Result .UPDATED , updatedSourceAsMap , updateSourceContentType );
263250 case DELETE :
264251 DeleteRequest deleteRequest = Requests .deleteRequest (request .index ())
265252 .type (request .type ()).id (request .id ()).routing (routing )
266- .version (updateVersion ).versionType (request .versionType ()).waitForActiveShards (request .waitForActiveShards ())
253+ .setIfSeqNo (getResult .getSeqNo ()).setIfPrimaryTerm (getResult .getPrimaryTerm ())
254+ .waitForActiveShards (request .waitForActiveShards ())
267255 .timeout (request .timeout ()).setRefreshPolicy (request .getRefreshPolicy ());
268256 return new Result (deleteRequest , DocWriteResponse .Result .DELETED , updatedSourceAsMap , updateSourceContentType );
269257 default :
0 commit comments