diff --git a/lib/flame/code_sync.ex b/lib/flame/code_sync.ex index c59c473..b7f6d6a 100644 --- a/lib/flame/code_sync.ex +++ b/lib/flame/code_sync.ex @@ -10,7 +10,8 @@ defmodule FLAME.CodeSync.PackagedStream do deleted_paths: [], purge_modules: [], verbose: false, - compress: false + compress: false, + chunk_size: 64_000 end defmodule FLAME.CodeSync do @@ -32,7 +33,8 @@ defmodule FLAME.CodeSync do deleted_paths: [], purge_modules: [], verbose: false, - compress: false + compress: false, + chunk_size: 64_000 def new(opts \\ []) do Keyword.validate!(opts, [ @@ -42,7 +44,8 @@ defmodule FLAME.CodeSync do :sync_beams, :start_apps, :verbose, - :compress + :compress, + :chunk_size ]) copy_paths = @@ -76,7 +79,8 @@ defmodule FLAME.CodeSync do extract_dir: Keyword.get(opts, :extract_dir, {Function, :identity, ["/"]}), start_apps: Keyword.get(opts, :start_apps, true), verbose: Keyword.get(opts, :verbose, false), - compress: Keyword.get(opts, :compress, false) + compress: Keyword.get(opts, :compress, false), + chunk_size: Keyword.get(opts, :chunk_size, 64_000) }) end @@ -169,7 +173,7 @@ defmodule FLAME.CodeSync do :ok = :erl_tar.close(tar) - File.stream!(out_path, [], 64_000) + File.stream!(out_path, [], code.chunk_size) end %PackagedStream{ @@ -183,7 +187,8 @@ defmodule FLAME.CodeSync do apps_to_start: code.apps_to_start, stream: out_stream, verbose: code.verbose, - compress: code.compress + compress: code.compress, + chunk_size: code.chunk_size } end diff --git a/lib/flame/pool.ex b/lib/flame/pool.ex index 05401a3..a2d05c6 100644 --- a/lib/flame/pool.ex +++ b/lib/flame/pool.ex @@ -222,7 +222,8 @@ defmodule FLAME.Pool do :sync_beams, :start_apps, :verbose, - :compress + :compress, + :chunk_size ]) GenServer.start_link(__MODULE__, opts, name: Keyword.fetch!(opts, :name)) @@ -403,6 +404,7 @@ defmodule FLAME.Pool do if code_sync_opts = opts[:code_sync] do code_sync = CodeSync.new(Keyword.put(code_sync_opts, :sync_beams, [])) %CodeSync.PackagedStream{} = parent_stream = CodeSync.package_to_stream(code_sync) + IO.inspect(File.stat!(parent_stream.stream.path)) parent_stream end diff --git a/lib/flame/runner.ex b/lib/flame/runner.ex index 6153b99..0ce239f 100644 --- a/lib/flame/runner.ex +++ b/lib/flame/runner.ex @@ -306,11 +306,12 @@ defmodule FLAME.Runner do # ensure app is fully started if parent connects before up if otp_app, do: {:ok, _} = Application.ensure_all_started(otp_app) + if base_sync_stream, do: CodeSync.extract_packaged_stream(base_sync_stream) + if beams_stream, do: CodeSync.extract_packaged_stream(beams_stream) + :ok = Terminator.schedule_idle_shutdown(term, idle_after, idle_check, single_use) - if base_sync_stream, do: CodeSync.extract_packaged_stream(base_sync_stream) - if beams_stream, do: CodeSync.extract_packaged_stream(beams_stream) :ok end) @@ -348,7 +349,8 @@ defmodule FLAME.Runner do :tmp_dir, :extract_dir, :verbose, - :compress + :compress, + :chunk_size ]) {idle_shutdown_after_ms, idle_check} =