diff --git a/lib/mix/lib/mix/sync/lock.ex b/lib/mix/lib/mix/sync/lock.ex index dc65e57713c..62369a6e0fe 100644 --- a/lib/mix/lib/mix/sync/lock.ex +++ b/lib/mix/lib/mix/sync/lock.ex @@ -97,7 +97,7 @@ defmodule Mix.Sync.Lock do opts = Keyword.validate!(opts, [:on_taken]) hash = key |> :erlang.md5() |> Base.url_encode64(padding: false) - path = Path.join([System.tmp_dir!(), "mix_lock", hash]) + path = Path.join(base_path(), hash) pdict_key = {__MODULE__, path} has_lock? = Process.get(pdict_key, false) @@ -119,6 +119,13 @@ defmodule Mix.Sync.Lock do end end + defp base_path do + user = System.get_env("USER", "default") + path = Path.join([System.tmp_dir!(), "mix_lock_#{Base.url_encode64(user, padding: false)}"]) + File.mkdir_p!(path) + path + end + defp lock_disabled?(), do: System.get_env("MIX_OS_CONCURRENCY_LOCK") in ~w(0 false) defp lock(path, on_taken) do diff --git a/lib/mix/lib/mix/sync/pubsub.ex b/lib/mix/lib/mix/sync/pubsub.ex index 8c72406e944..b048f69f2a5 100644 --- a/lib/mix/lib/mix/sync/pubsub.ex +++ b/lib/mix/lib/mix/sync/pubsub.ex @@ -272,9 +272,16 @@ defmodule Mix.Sync.PubSub do defp hash(key), do: :erlang.md5(key) + defp base_path do + user = System.get_env("USER", "default") + path = Path.join([System.tmp_dir!(), "mix_pubsub_#{Base.url_encode64(user, padding: false)}"]) + File.mkdir_p!(path) + path + end + defp path(hash) do hash = Base.url_encode64(hash, padding: false) - Path.join([System.tmp_dir!(), "mix_pubsub", hash]) + Path.join(base_path(), hash) end defp recv(socket, size, timeout \\ :infinity) do