aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-03-13Let a throttling callback discard a received messageAnders Svensson
This can be used as a simple form of overload protection, discarding the message before it's passed into diameter to become one more request process in a flood. Replying with 3004 would be more appropriate when the request has been directed at a specific server (the RFC's requirement) however, and possibly it should be possible for a callback to do this as well.
2016-03-13Let throttling callback return a notification pidAnders Svensson
In addition to returning ok or {timeout, Tmo}, let a throttling callback for message reception return a pid(), which is then notified if the message in question is either discarded or results in a request process. Notification is by way of messages of the form {diameter, discard | {request, pid()}} where the pid is that of a request process resulting from the received message. This allows the notification process to keep track of the maximum number of request processes a peer connection can have given rise to.
2016-03-13Make throttling callbacks on message receptionAnders Svensson
The callback is now applied to the atom 'false' when asking if another message should be received on the socket, and to a received binary message after reception. Throttling on received messages makes it possible to distinguish between requests and answers. There is no callback on outgoing messages since these don't have to go through the transport process, even if they currently do.
2016-03-13Add diameter_tcp option throttle_cbAnders Svensson
To let a callback module decide whether or to receive another message from the peer, so that backpressure can be applied when it's inappropriate. This is to let a callback protect against reading more than can be processed, which is otherwise possible since diameter_tcp otherwise always asks for more. A callback is made after each message, and can answer to continue reading or to ask again after a timeout. It's each message instead of each packet partly for simplicity, but also since this should be sufficiently fine-grained. Per packet would require some interaction with the fragment timer that flushes partial messages that haven't been completely received.
2016-03-11Fix module_info_SUITEBjörn-Egil Dahlberg
2016-03-11Fix send_term_SUITEBjörn-Egil Dahlberg
2016-03-11Cleaner map_SUITEBjörn-Egil Dahlberg
2016-03-11Remove ?line macrosBjörn-Egil Dahlberg
2016-03-11Eliminate use of doc and suite clausesBjörn-Egil Dahlberg
Those clause are obsolete and never used by common_test.
2016-03-11Replace ?t with test_serverBjörn-Egil Dahlberg
The macro ?t is deprecated. Replace its use with 'test_server'.
2016-03-11Eliminate use of ?config() macroBjörn-Egil Dahlberg
2016-03-11Replace use of test_server:format/2 with io:format/2Björn-Egil Dahlberg
2016-03-11Eliminate use of test_server:fail/0,1Björn-Egil Dahlberg
2016-03-11Modernize use of timetrapsBjörn-Egil Dahlberg
2016-03-11Don't throw exceptions from rpc:call() and rpc:block_call()Björn Gustavsson
The documentation for rpc:call() says: Evaluates apply(Module, Function, Args) on the node Node and returns the corresponding value Res, or {badrpc, Reason} if the call fails. What is not said that rpc:call() can generate an exception if the 'rex' process on the other node is killed: (kalle@host)1> Rex = rpc:call(arne@host, erlang, whereis, [rex]). <6937.14.0> (kalle@host)2> rpc:call(arne@host, erlang, exit, [Rex,kill]). ** exception exit: {killed, {gen_server,call, [{rex,arne@host}, {call,erlang,exit,[<6937.14.0>,kill],<0.33.0>}, infinity]}} in function rpc:rpc_check/1 (rpc.erl, line 361) On the other hand, if the other node shuts down for some other reason, we'll get a {badrpc,nodedown} result: (kalle@host)5> rpc:call(arne@host, erlang, halt, []). {badrpc,nodedown} There does not seem to be any reason to handle the two cases differently. If the 'rex' process is terminated on the other node, it will shut down shortly thereafter. Therefore, change rpc:call() and rpc:block_call() to always return {badrpc,Reason} is the call fails: (kalle@host)1> Rex = rpc:call(arne@host, erlang, whereis, [rex]). <6937.14.0> (kalle@host)2> rpc:call(arne@host, erlang, exit, [Rex,kill]). {badrpc,{'EXIT',{killed,{gen_server,call, [{rex,arne@host}, {call,erlang,exit,[<7126.14.0>,kill],<0.33.0>}, infinity]}}}}
2016-03-11Reduce code duplication in called_node_dies/1 and friendsBjörn Gustavsson
2016-03-11Merge branch 'rickard/doc-fix'Rickard Green
* rickard/doc-fix: Fix doc build
2016-03-11Merge branch 'vinoski/ds-avoid-lock'Rickard Green
* vinoski/ds-avoid-lock: Skip run queue lock check for dirty schedulers
2016-03-11Merge branch 'rickard/ds-sched-suspend'Rickard Green
* rickard/ds-sched-suspend: Improved scheduler suspend functionality
2016-03-11net_kernel: Separate exports into documented and non-documented groupsBjörn Gustavsson
2016-03-11erl_distribution: Simplify start_link/0 and friendsBjörn Gustavsson
start_link/0 and friends are too convoluted for me.
2016-03-11Reorder and comment API functionsBjörn Gustavsson
Move all functions meant to be called from other modules before the internal functions. Comment them to make it clearer what their purpose are.
2016-03-11Clean up splitting of node namesBjörn Gustavsson
2016-03-11Merge branch 'bjorn/kernel/modernize-tests'Björn Gustavsson
* bjorn/kernel/modernize-tests: Remove ?line macros Fix comments gen_tcp_misc_SUITE: Use unique node names Eliminate use of the ?t macro Eliminate use of doc and suite clauses Replace use of test_server:capture*/0 with ct:capture*/0 Eliminate use test_server:format() Eliminate use of test_server:sleep/1 Eliminate use of test_server:fail/0,1 Eliminate use of ?config() macro Modernize timetraps disk_log_SUITE: Remove vestiges of VxWorks support Conflicts: lib/kernel/test/code_SUITE.erl
2016-03-11Update primary bootstrapBjörn Gustavsson
2016-03-11Merge branch 'bjorn/compiler/opt/OTP-12951'Björn Gustavsson
* bjorn/compiler/opt/OTP-12951: beam_block: Eliminate unsafe optimization
2016-03-11Merge branch 'maint'Lars Thorsen
2016-03-11Update preloaded modulesLars Thorsen
2016-03-11Merge branch 'maint'Lars Thorsen
2016-03-10Improved scheduler suspend functionalityRickard Green
- The calling process is now suspended while synchronizing scheduler suspends via erlang:system_flag(schedulers_online, _) and erlang:system_flag(multi_scheduling, _), instead of blocking the scheduler thread in the BIF call waiting for the operation to synchronize. Besides releasing the scheduler for other work (or immediate suspend) it also makes it possible to abort the operation by killing the process. - erlang:system_flag(schedulers_online, _) now only wait for normal schedulers to complete before it returns. This since it may take a very long time before all dirty schedulers suspends. - erlang:system_flag(multi_scheduling, block_normal|unblock_normal) which only operate on normal schedulers has been introduced. This since there are use cases where suspend of dirty schedulers are not of interest (hipe loader). - erlang:system_flag(multi_scheduling, block) still blocks all dirty schedulers as well as all normal schedulers except one since it is hard to redefine what multi scheduling block means. - The three operations: - changing amount of schedulers online - blocking/unblocking normal multi scheduling - blocking/unblocking full multi scheduling can now be done in parallel. This is important since otherwise a full multi scheduling block would potentially delay the other operations for a very long time.
2016-03-10hipe_icode_fp: simplify match/2Magnus Lång
2016-03-10public_key: Handle PEM encoded EC public keysIngela Anderton Andin
Also add missing test for PEM encoded private EC keys.
2016-03-10Remove ?line macrosBjörn Gustavsson
While we are it, also re-ident the files.
2016-03-10Fix commentsBjörn Gustavsson
Remove out-commented code. Make sure that comments that are not at the end of a line starts with two '%' characters and not just one. That will become important later when we'll remove all ?line macros and ask Emacs to re-indent the files.
2016-03-10gen_tcp_misc_SUITE: Use unique node namesBjörn Gustavsson
Use unique node names to ensure that one failed test case will not cause other test cases to fail if a slave node was left.
2016-03-10Update primary bootstrapLars Thorsen
2016-03-10Merge branch 'maint'Siri Hansen
2016-03-10Merge branch 'siri/common_test/fix-doc-links' into maintSiri Hansen
* siri/common_test/fix-doc-links: Fix link errors in common_test documentation Document that any ssh option is allowed in ct_netconfc Conflicts: lib/common_test/doc/src/ct_hooks_chapter.xml lib/common_test/doc/src/ct_netconfc.xml
2016-03-10Merge branch 'siri/ct_netconfc/doc-allow-ssh-options/OTP-13338' into maintSiri Hansen
* siri/ct_netconfc/doc-allow-ssh-options/OTP-13338: Document that any ssh option is allowed in ct_netconfc
2016-03-10Merge branch 'siri/code_SUITE-fix' into maintSiri Hansen
* siri/code_SUITE-fix: Change '==' to '=' in code_SUITE:bad_erl_libs
2016-03-10Merge branch 'maint'Peter Andersson
2016-03-10Eliminate use of the ?t macroBjörn Gustavsson
2016-03-10Eliminate use of doc and suite clausesBjörn Gustavsson
Those clause are obsolete and never used by common_test.
2016-03-10Replace use of test_server:capture*/0 with ct:capture*/0Björn Gustavsson
2016-03-10Eliminate use test_server:format()Björn Gustavsson
Replace with io:format/2 or ct:pal/3.
2016-03-10Eliminate use of test_server:sleep/1Björn Gustavsson
2016-03-10Merge branch 'peppe/common_test/cth_improvements_docs' into maintPeter Andersson
* peppe/common_test/cth_improvements_docs: Document new CT Hook functions
2016-03-10Merge branch 'peppe/common_test/html_improvements_docs' into maintPeter Andersson
* peppe/common_test/html_improvements_docs: Document the new HTML improvements
2016-03-10Merge branch 'peppe/common_test/new_docs' into maintPeter Andersson
* peppe/common_test/new_docs: Some minor fixes Stop using edoc for the reference manual Common Test: Editorial changes 3 Common Test: Editorial changes 2 Common Test: Editorial changes 1
2016-03-10Updated OTP versionOTP-17.5.6.9Erlang/OTP