diff options
| author | Michael Klishin <mklishin@pivotal.io> | 2017-03-14 00:11:46 +0300 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2017-03-14 00:11:46 +0300 |
| commit | 2f909df3dc3750f8cb6b1a9854c2ccd6ff6c661a (patch) | |
| tree | e6367698d607c50433704d18086dfc48e865a9cf /src | |
| parent | c87f3acd4fd23e1204e30ad021c65aa8655e3dd3 (diff) | |
| download | rabbitmq-server-git-2f909df3dc3750f8cb6b1a9854c2ccd6ff6c661a.tar.gz | |
rabbit_hipe: handle eperm errors better
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_hipe.erl | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/rabbit_hipe.erl b/src/rabbit_hipe.erl index b869b824df..bb13a3baf4 100644 --- a/src/rabbit_hipe.erl +++ b/src/rabbit_hipe.erl @@ -38,8 +38,12 @@ hipe_compile() -> compile_to_directory(Dir0) -> Dir = rabbit_file:filename_as_a_directory(rabbit_data_coercion:to_list(Dir0)), - ok = prepare_ebin_directory(Dir), - hipe_compile(fun (Mod) -> compile_and_save(Mod, Dir) end, true). + case prepare_ebin_directory(Dir) of + ok -> + hipe_compile(fun (Mod) -> compile_and_save(Mod, Dir) end, true); + {error, Err} -> + {error, Err} + end. needs_compilation(Mod, Force) -> Exists = code:which(Mod) =/= non_existing, @@ -110,9 +114,13 @@ split0([], Ls) -> Ls; split0([I | Is], [L | Ls]) -> split0(Is, Ls ++ [[I | L]]). prepare_ebin_directory(Dir) -> - ok = rabbit_file:ensure_dir(Dir), - ok = delete_beam_files(Dir), - ok. + case rabbit_file:ensure_dir(Dir) of + ok -> + ok = delete_beam_files(Dir), + ok; + {error, eperm} -> + {error, eperm} + end. delete_beam_files(Dir) -> {ok, Files} = file:list_dir(Dir), |
