Age | Commit message (Collapse) | Author |
|
After introducing maps for supervisor flags and child specs two tests
in behaviour_SUITE started failing:
behaviour_SUITE:custom_sup - failed because the type of the Period
(MaxT) property had been changed (corrected) from non_neg_integer() to
pos_integer() in the specification of the init callback in
supervisor.erl
behaviour_SUITE:supervisor_incorrect_return - same as above, plus the
introduction of #{} as possible value for the supervisor flags and
child_specs.
|
|
|
|
|
|
Takes the name of the child (or Pid, in the case of a
simple_one_for_one supervisor) and returns the map which specifies the
child.
|
|
Earlier, supervisor flags and child specs were given as tuples. While
this is kept for backwards compatibility, it is now also allowed to
give these parameters as maps:
-type sup_flags() :: #{strategy => strategy(), % optional
intensity => non_neg_integer(), % optional
period => pos_integer()} % optional
-type child_spec() :: #{id => child_id(), % mandatory
start => mfargs(), % mandatory
restart => restart(), % optional
shutdown => shutdown(), % optional
type => worker(), % optional
modules => modules()} % optional
Default values are as follows:
Supervisor flags:
strategy: one_for_one
intensity: 1
period: 5
Child specs:
restart: permanent
type: worker
shutdown: 5000 for workers, 'infinity' for supervisors
modules: [M], where M comes from the child's start {M,F,A}
Some of these default values are quite hard to decide on, since there
really is no "most common way". It always depends on the use case. So
we decided that the most important reason for having default values is
to lower the start barrier and get "something" running. For production
use, most systems must be fine tuned in this respect anyway.
This is how we reasoned about it:
Strategy: just pick one - and 'one_for_one' was most used in OTP.
Max restart frequency (intensity/period): by allowing one restart only
we keep the important supervisor feature of restarting children, but
we also avoid the possibility of scaling to a huge amount of restarts
if the supervisor tree is deep.
Restart: just pick one - and 'permanent' is fairly common.
Shutdown for workers: to avoid the confusion of why the terminate
function is not executed, we decided not to use 'brutal_kill'. Which
number to use is probably not that important, so we chose 5000.
Shutdown for supervisors: the recommended shutdown value for
supervisors is 'infinity', so we decied to use that. Having the same
(integer) value as for workers can give very strange results.
Type: just pick one - and we believe that 'worker' is most common
|
|
Remove duplicated code related to checking of supervisor flags.
|
|
Add tests of code_change/3 and error handling of supervisor flags.
|
|
|
|
OTP-12224
* vinoski/edlin-ctrl-u:
Make shell ctrl-u save killed text correctly
|
|
|
|
* ia/ssl/link-fix:
ssl: Fix link error in documentation
|
|
|
|
OTP-12221
* s1n4/httpc_doc_typo:
httpc: Fix a typo in the documentation
|
|
* egil/maps/variable-keys/OTP-12218: (22 commits)
compiler: Update test for Maps aliasing
compiler: Properly support Map aliasing
compiler: Refactor Map pairs aliasing
compiler: Fix harmless need_heap error for Maps
stdlib: Update Map tests
stdlib: Use environment bindings for Maps keys in erl_eval matching
debugger: Update Map tests
compiler: Update Map tests
compiler: Fix v3_core Maps pair chains
compiler: Use expressions in core patterns
compiler: Use variables in Map cerl inliner
compiler: Reintroduce binary limit for Map keys
compiler: Shameless v3_core hack for variables
compiler: Use variables in Map beam assmebler
compiler: Use variables in Map kernel pass
compiler: Use variables in Map core pass
compiler: Normalize unary ops on Maps key literals
stdlib: Update Map tests
stdlib: erl_lint Map key variables
compiler: Maps are always patterns never values in matching
...
|
|
|
|
|
|
Matching of type:
#{K := V1} = #{K := V2} = M,
Will alias (coalesce) to
#{K := V1 = V2} = M.
|
|
Conflicts:
lib/stdlib/src/stdlib.appup.src
|
|
* siri/appups-17.4:
Fix stdlib.appup for OTP-17.4
|
|
* siri/filename-join-2/OTP-12158:
Fix handling of single dot in filename:join/2
|
|
|
|
OTP-12214
* goofansu/fix-gen-event-comment:
Fix typo in erlang-mode comment
|
|
|
|
|
|
Need heap for maps is zero and fall through is also zero.
|
|
Fix edlin to correctly save text killed with ctrl-u. Prior to this fix,
entering text into the Erlang shell and then killing it with ctrl-u
followed by yanking it back with ctrl-y would result in the yanked text
being the reverse of the original killed text.
Add a test for the fix to interactive_shell_SUITE.
(This is the same fix as in PR#416, but that PR was never completed.)
|
|
|
|
* ap/attribute_fun_arity_in_map/OTP-12213:
stdlib: Test Map attributes via erl_pp
stdlib: erl_parse abstract Maps
stdlib: Refactor ?line in erl_pp_SUITE:misc_attrs
stdlib: Refactor Maps farity attributes
Allow Name/Arity syntax in maps inside attributes
|
|
Conflicts:
lib/stdlib/src/erl_pp.erl
|
|
* egil/fix-erl_pp/OTP-12190:
stdlib: Handle key type expressions
|
|
|
|
* siri/new-dialyzer-gen_event/OTP-12206:
Fix dialyzer warnings for unmatched return in gen_event
|
|
|
|
* capflam/filelib_wildcard_fix:
Fix filelib:wildcard/2 when 'Cwd' ends with a dot
|
|
|
|
* vladdu/jinterface_code_cleanup/OTP-12211:
fix warning: Socket's InputStream not closed
silence 'potential resource leak' warnings
don't warn about some unused fields/variables
handle warnings about potential null pointers
keep all method parameters final
renamed method parameters hiding fields
add 'break' statements to make compiler happy
remove warnings from OtpMD5
rename OtpNode.flags to connFlags
rename OtpNode.Acceptor.port to acceptorPort
rename field 'self' to 'localNode'
mark deprecated unused private constructor
simplify 'if' statements
remove warnings: @Override, switch fall-through
make serialVersionUID fields private
remove unnecessary syntax (casts)
remove unused variables
removed unnecessary semicolons, imports, labels
remove unnecessary null pointer checks
remove unnecessary Cloneable and Serializable
|
|
* vladdu/jinterface_findbugs/OTP-12210:
OtpErlangList.clone must not return null
handle empty .erlang.cookie without crashing
|
|
|
|
|
|
|
|
|
|
This was introduced by PR 445, commit
2e78c5f3e7f9991484ceb5d56e5b0086331101be.
|
|
|
|
Conflicts:
OTP_VERSION
lib/ssh/test/ssh_connection_SUITE.erl
|
|
|
|
|
|
* bruce-yinhe/fix-crypto-doc-typo:
Fix a typo in crypto doc
|
|
|
|
* siri/dont-check-appup-from-current-vsn:
Do not test appup of core apps for upgrade from current vsn
|
|
* lars/orber/ipv6-service-context/OTP-12193:
[orber] Fix problem with IPv6 addresses in service context
|