fix: ensure no timeout on task async streams

This commit is contained in:
Zach Daniel 2024-08-19 11:10:05 -04:00
parent 6a86e2d5f6
commit 5bf53c8c07
2 changed files with 45 additions and 36 deletions

View file

@ -108,9 +108,12 @@ defmodule Igniter do
end) end)
paths paths
|> Task.async_stream(fn path -> |> Task.async_stream(
fn path ->
read_ex_source!(path) read_ex_source!(path)
end) end,
timeout: :infinity
)
|> Enum.reduce(igniter, fn {:ok, source}, igniter -> |> Enum.reduce(igniter, fn {:ok, source}, igniter ->
%{igniter | rewrite: Rewrite.put!(igniter.rewrite, source)} %{igniter | rewrite: Rewrite.put!(igniter.rewrite, source)}
end) end)

View file

@ -130,12 +130,15 @@ defmodule Igniter.Code.Module do
igniter igniter
|> Map.get(:rewrite) |> Map.get(:rewrite)
|> Task.async_stream(fn source -> |> Task.async_stream(
fn source ->
{source {source
|> Rewrite.Source.get(:quoted) |> Rewrite.Source.get(:quoted)
|> Zipper.zip() |> Zipper.zip()
|> move_to_defmodule(module_name), source} |> move_to_defmodule(module_name), source}
end) end,
timeout: :infinity
)
|> Enum.find_value({:error, igniter}, fn |> Enum.find_value({:error, igniter}, fn
{:ok, {{:ok, zipper}, source}} -> {:ok, {{:ok, zipper}, source}} ->
{:ok, {igniter, source, zipper}} {:ok, {igniter, source, zipper}}
@ -155,7 +158,8 @@ defmodule Igniter.Code.Module do
matching_modules = matching_modules =
igniter igniter
|> Map.get(:rewrite) |> Map.get(:rewrite)
|> Task.async_stream(fn source -> |> Task.async_stream(
fn source ->
source source
|> Rewrite.Source.get(:quoted) |> Rewrite.Source.get(:quoted)
|> Zipper.zip() |> Zipper.zip()
@ -184,7 +188,9 @@ defmodule Igniter.Code.Module do
end end
end) end)
|> elem(1) |> elem(1)
end) end,
timeout: :infinity
)
|> Enum.flat_map(fn {:ok, v} -> |> Enum.flat_map(fn {:ok, v} ->
v v
end) end)