Age | Commit message (Collapse) | Author |
|
It is equivalent to calling application:set_env/4 on
each application individually, except it is more efficient.
When given duplicate apps or duplicate keys, set_env/1
and set_env/2 will warn. The warning will also be emitted
during boot:
$ erl -config dupkeys.config -s erlang halt
2019-02-27 11:16:02.653100 application: kernel; duplicate parameter: key1
=WARNING REPORT==== 27-Feb-2019::11:16:02.653100 ===
application: kernel; duplicate parameter: key1
$ erl -config dupapps.config -s erlang halt
2019-02-27 11:16:02.653100 duplicate application config: kernel
=WARNING REPORT==== 27-Feb-2019::11:16:02.653100 ===
duplicate application config: kernel
Prior to this patch, the behaviour was unspecified,
and duplicate keys and duplicate apps would behave
different depending on the amount of config, the name
of the config files, and how those configs would be
listed. The goal is to raise an error in the future.
|
|
Included config files relative to sys.config directory
OTP-15137
|
|
Change the way included config files are searched in sys.config.
Search first relative to sys.config directory, then relative
to current working directory, for backward compatibility.
This permit same result when using a sys.config file in a release
or starting manually a node with -config.
Credit to Siri Hansen for test case.
|
|
|
|
Log events issued via error_logger:info_msg or
error_logger:info_report are now forwarded to Logger with level
'notice' instead of 'info'.
Log events issued by gen_* behaviours are also changed from level
'info' to level 'notice'.
Progress reports are still 'info', and can therefore easily be
included/excluded by changing the primary log level. By default, they
are not logged.
|
|
|
|
|
|
During application load, the included_applications key from the .app
file would earlier be duplicated as an application environment
variable. Due to this, its value could be retrieved in any of the
following ways:
application:get_key(App,included_applications).
application:get_env(App,included_applications).
It would also be included in the resulting list from the following calls:
application:get_all_key(App).
application:get_all_env(App).
This commit removes the duplication, and included_applications will no
longer be returned by application:get_env/2 or application:get_all_env/1.
The reason for this change is mainly to avoid confusion, but also to
avoid the potensial inconsistency which would occur if the environment
variable was changed during runtime by calls to
application:put_env(App,included_applications,NewInclApps).
|
|
|
|
|
|
|
|
|
|
|
|
I was going through application_controller.erl looking for why
something was behaving a certain way, saw a comment about removing
this duplicated code one day, and decided to move that a step forward.
|
|
If the Config given to application_controller:change_application_data
included other config files, it was only expanded for already existing
(loaded) applications. If an upgrade added a new application which had
config data in an included config file, the new application did not
get correct config data.
This is now changed so config data will be expanded for all
applications.
|
|
* josevalim/jv-persistent-set-env:
Allow persistent option on set_env/4 and unset_env/3
OTP-11708
|
|
An environment key set with the persistent option will not
be overridden by the ones configured in the application resource
file on load. This means persistent values will stick after the
application is loaded and also on application reload.
|
|
|
|
|
|
|
|
|
|
This is what a sample crash message looks like before applying patch:
Kernel pid terminated (application_controller)
({application_start_failure,cmp,{{bad_return_value,
{doc_root_not_exists,[46,47,119,119,119]}},{cmp_app,start,[normal,[]]}}})
This is what a sample crash message looks like after applying patch:
Kernel pid terminated (application_controller)
({application_start_failure,cmp,{{bad_return_value,
{doc_root_not_exists,"./www"}},{cmp_app,start,[normal,[]]}}})
|
|
It was possible to insert {Mod::atom(),Vsn::term()} instead of
Mod::atom() in the modules list in a .app file. This was not visible
in the documentation of .app files, but it was visible in the
documentation of application:load/[1,2] (where the .app file term can
be used directly as first argument).
The Vsn part was never used, so this possibility has now been removed.
|
|
When a node is shutting down, application_controller will do
exit(Pid,shutdown) on all application masters, and wait for
{'EXIT',Pid,_}. If, for some reason, the application master does not
terminate then application_controller will hang forever waiting for
this 'EXIT' message.
To overcome this problem, a configurable timer is added to kernel -
the enviroment variable 'shutdown_timeout'. If this variable is set to
a positive integer T, application_controller will do exit(Pid,kill)
after T milli seconds if no 'EXIT' message is received.
|
|
|
|
* ks/types:
file.hrl: Move out type declarations
kernel: Add types and specs
OTP-8494 ks/types
|
|
|
|
|