@Override protected void shardOperationOnReplica(ReplicaOperationRequest 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.REPLICA); // IndexDeleteAction doesn't support version type at the moment. Hard coded for the INTERNAL // version delete.versionType(VersionType.INTERNAL.versionTypeForReplicationAndRecovery()); assert delete.versionType().validateVersion(delete.version()); indexShard.delete(delete); if (request.refresh()) { try { indexShard.refresh(new Engine.Refresh("refresh_flag_delete").force(false)); } catch (Exception e) { // ignore } } }
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()); }