aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src/application_controller.erl
AgeCommit message (Collapse)Author
2019-03-01Add application:set_env/1 and application:set_env/2José Valim
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.
2018-06-15Merge pull request #1838 from crownedgrouse/masterSiri Hansen
Included config files relative to sys.config directory OTP-15137
2018-06-14Included config files relative to sys.config dircrownedgrouse
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.
2018-06-12Merge pull request #1835 from sirihansen/siri/logger-fixSiri Hansen
2018-06-11[logger] Change default primary log level to 'notice'Siri Hansen
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.
2018-06-08[logger] Change base OTP domain from [beam,erlang,otp] to [otp]Siri Hansen
2018-06-08kernel: Use ~0pHans Bolinder
2018-05-04Don't save included_applications as application environment variableSiri Hansen
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).
2018-04-26Start using logger internally in kernel and stdlibSiri Hansen
2017-03-08kernel: Fix handling of locations and annotationsHans Bolinder
2016-03-15update copyright-yearHenrik Nord
2015-06-18Change license text to APLv2Bruce Yinhe
2015-05-13Use read_concurrency for application environmentRichard Carlsson
2015-02-16Add helper function to reduce code duplicationAndy Ledvina
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.
2014-04-11Store expanded config in application_controller:change_application_dataSiri Hansen
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.
2014-02-14Merge branch 'josevalim/jv-persistent-set-env'Henrik Nord
* josevalim/jv-persistent-set-env: Allow persistent option on set_env/4 and unset_env/3 OTP-11708
2014-02-11Allow persistent option on set_env/4 and unset_env/3José Valim
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.
2013-05-06Fix unmatched_returns warnings in STDLIB and KernelHans Bolinder
2013-02-13[kernel] FIx a bug that could cause crash with wrong reasonHans Bolinder
2013-02-11Make Unicode correctionsHans Bolinder
2013-01-25Make adjustments for UnicodeHans Bolinder
2012-12-10Fix printout of application crash message on startupserge
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,[]]}}})
2012-09-13Don't allow {Mod,Vsn} in modules list in .app fileSiri Hansen
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.
2011-11-15Add env var shutdown_timeout to kernel to avoid deadlock on node shutdownSiri Hansen
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.
2010-04-28kernel: Clean up as suggested by tidierKostis Sagonas
2010-03-09Merge branch 'ks/types' into devErlang/OTP
* ks/types: file.hrl: Move out type declarations kernel: Add types and specs OTP-8494 ks/types
2010-03-07kernel: Add types and specsKostis Sagonas
2009-11-20The R13B03 release.OTP_R13B03Erlang/OTP