diff options
author | Dan Gudmundsson <[email protected]> | 2017-05-02 12:22:44 +0200 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2017-05-02 12:22:44 +0200 |
commit | daca8c42a2ca170c0e187ad99203f2fa16d589eb (patch) | |
tree | f5df777a86dd2191f14d5ef9677eed578bc7ba67 | |
parent | 3c483c22bb4701ee8a26b7324cd1a7a6c22448ce (diff) | |
download | otp-daca8c42a2ca170c0e187ad99203f2fa16d589eb.tar.gz otp-daca8c42a2ca170c0e187ad99203f2fa16d589eb.tar.bz2 otp-daca8c42a2ca170c0e187ad99203f2fa16d589eb.zip |
Do not call which_applications()
Which may hang if an application start does wait for tables
during initilization.
-rw-r--r-- | lib/mnesia/src/mnesia_schema.erl | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/mnesia/src/mnesia_schema.erl b/lib/mnesia/src/mnesia_schema.erl index b0d7965886..5f269a0826 100644 --- a/lib/mnesia/src/mnesia_schema.erl +++ b/lib/mnesia/src/mnesia_schema.erl @@ -866,18 +866,18 @@ list2cs(List, ExtTypes) when is_list(List) -> is_list(DetsOpts) orelse mnesia:abort({badarg, Name, {dets, DetsOpts}}), [CheckProp(Prop, BadDetsOpts) || Prop <- DetsOpts], - case lists:keymember(mnesia, 1, application:which_applications()) of - true -> - Keys = check_keys(Name, List), - check_duplicates(Name, Keys); - false -> + case whereis(mnesia_controller) of + undefined -> %% check_keys/2 cannot be executed when mnesia is not %% running, due to it not being possible to read what ext %% backends are loaded. - %%% this doesn't work - disabled for now: - %%%Keys = check_keys(Name, List, record_info(fields, cstruct)), - %%%check_duplicates(Name, Keys) - ignore + %% this doesn't work - disabled for now: + %%Keys = check_keys(Name, List, record_info(fields, cstruct)), + %%check_duplicates(Name, Keys) + ignore; + Pid when is_pid(Pid) -> + Keys = check_keys(Name, List), + check_duplicates(Name, Keys) end, Cs0 = #cstruct{name = Name, |