private WriteResult<DeleteResponse> shardDeleteOperation( BulkShardRequest request, DeleteRequest deleteRequest, IndexShard indexShard) { Engine.Delete delete = indexShard.prepareDelete( deleteRequest.type(), deleteRequest.id(), deleteRequest.version(), deleteRequest.versionType(), Engine.Operation.Origin.PRIMARY); indexShard.delete(delete); // update the request with the version so it will go to the replicas deleteRequest.versionType(delete.versionType().versionTypeForReplicationAndRecovery()); deleteRequest.version(delete.version()); assert deleteRequest.versionType().validateVersionForWrites(deleteRequest.version()); DeleteResponse deleteResponse = new DeleteResponse( request.index(), deleteRequest.type(), deleteRequest.id(), delete.version(), delete.found()); return new WriteResult(deleteResponse, delete.getTranslogLocation()); }
@Override protected PrimaryResponse<ShardDeleteResponse, ShardDeleteRequest> shardOperationOnPrimary( ClusterState clusterState, PrimaryOperationRequest shardRequest) { ShardDeleteRequest request = shardRequest.request; IndexShard indexShard = indicesService .indexServiceSafe(shardRequest.request.index()) .shardSafe(shardRequest.shardId); Engine.Delete delete = indexShard .prepareDelete(request.type(), request.id(), request.version()) .origin(Engine.Operation.Origin.PRIMARY); indexShard.delete(delete); // update the version to happen on the replicas request.version(delete.version()); if (request.refresh()) { try { indexShard.refresh(new Engine.Refresh("refresh_flag_delete").force(false)); } catch (Exception e) { // ignore } } ShardDeleteResponse response = new ShardDeleteResponse(delete.version(), delete.found()); return new PrimaryResponse<ShardDeleteResponse, ShardDeleteRequest>( shardRequest.request, response, null); }