From 244ea56d0f945eb699154f211bf152b78d15c8d5 Mon Sep 17 00:00:00 2001 From: "byte[]" Date: Wed, 18 May 2022 22:45:32 -0400 Subject: [PATCH] Improve performance of bulk renames --- lib/philomena/images/thumbnailer.ex | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/philomena/images/thumbnailer.ex b/lib/philomena/images/thumbnailer.ex index b0e6cd1d..6d96256e 100644 --- a/lib/philomena/images/thumbnailer.ex +++ b/lib/philomena/images/thumbnailer.ex @@ -134,13 +134,19 @@ defmodule Philomena.Images.Thumbnailer do end defp bulk_rename(file_names, source_prefix, target_prefix) do - Enum.map(file_names, fn name -> - source = Path.join(source_prefix, name) - target = Path.join(target_prefix, name) + file_names + |> Task.async_stream( + fn name -> + source = Path.join(source_prefix, name) + target = Path.join(target_prefix, name) + Objects.copy(source, target) - Objects.copy(source, target) - Objects.delete(source) - end) + name + end, + timeout: :infinity + ) + |> Stream.map(fn {:ok, name} -> name end) + |> bulk_delete(source_prefix) end defp bulk_delete(file_names, prefix) do