aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src/net_kernel.erl
AgeCommit message (Collapse)Author
2018-03-21Implementation of true asynchronous signaling between processesRickard Green
Communication between Erlang processes has conceptually always been performed through asynchronous signaling. The runtime system implementation has however previously preformed most operation synchronously. In a system with only one true thread of execution, this is not problematic (often the opposite). In a system with multiple threads of execution (as current runtime system implementation with SMP support) it becomes problematic. This since it often involves locking of structures when updating them which in turn cause resource contention. Utilizing true asynchronous communication often avoids these resource contention issues. The case that triggered this change was contention on the link lock due to frequent updates of the monitor trees during communication with a frequently used server. The signal order delivery guarantees of the language makes it hard to change the implementation of only some signals to use true asynchronous signaling. Therefore the implementations of (almost) all signals have been changed. Currently the following signals have been implemented as true asynchronous signals: - Message signals - Exit signals - Monitor signals - Demonitor signals - Monitor triggered signals (DOWN, CHANGE, etc) - Link signals - Unlink signals - Group leader signals All of the above already defined as asynchronous signals in the language. The implementation of messages signals was quite asynchronous to begin with, but had quite strict delivery constraints due to the ordering guarantees of signals between a pair of processes. The previously used message queue partitioned into two halves has been replaced by a more general signal queue partitioned into three parts that service all kinds of signals. More details regarding the signal queue can be found in comments in the erl_proc_sig_queue.h file. The monitor and link implementations have also been completely replaced in order to fit the new asynchronous signaling implementation as good as possible. More details regarding the new monitor and link implementations can be found in the erl_monitor_link.h file.
2018-03-02kernel,stdlib: Remove obsolete use of send with 'noconnect'Sverker Eriksson
as workarounds to avoid blocking auto-connect, which is now asynchronous in OTP-21. Also changed old catch to more efficient try-catch.
2017-11-15Move new|abort_connection_id to erts_internalSverker Eriksson
and drop _id suffix.
2017-11-15Cleanup net_kernelSverker Eriksson
2017-11-15Improve connection abortingSverker Eriksson
2017-11-15erts: Keep magic ref to DistEntry in net_kernelSverker Eriksson
to make sure it's kept alive.
2017-11-15erts: Introduce asynchronous auto-connectSverker Eriksson
2017-11-15kernel: Move auto connect into net_kernel serverSverker Eriksson
as a preparation for async auto-connect requests.
2017-09-07Merge branch 'maint'Siri Hansen
2017-09-05kernel: Improve handling of UnicodeHans Bolinder
2017-08-28Support for distribution controller processesRickard Green
2017-05-04Update copyright yearRaimo Niskanen
2017-04-28kernel: Do not allow unicode in nodenamesZandra Norman
Verify that unicode isn't used in a node name and logi an info message if it is. Filter the head part of the name a bit harder to work with epmd.
2016-09-19Allow for easier enabling of distribution debugLuis Rascao
Also update already deprecated calls.
2016-08-15kernel: Add net_kernel:setopts/2 and getopts/2Sverker Eriksson
2016-08-11kernel: Cleanup code with fancy record syntaxSverker Eriksson
2016-03-15update copyright-yearHenrik Nord
2016-03-14Make distribution failures during start-up easier to readBjörn Gustavsson
When an attempt is made to start a distributed Erlang node with the same name as an existing node, the crash reports for several supervisors would be displayed. Only the first line contains useful information. The verbiage is annoying for old hands and could easily scare newcomers away for good. For all the common distribution failures during start-up, write a simple message and terminate the emulator using halt/1. Here is an example of what will be printed: Protocol 'inet_tcp': the name somename@somehost seems to be in use by another Erlang node
2016-03-11net_kernel: Separate exports into documented and non-documented groupsBjörn Gustavsson
2016-03-11Clean up splitting of node namesBjörn Gustavsson
2015-06-18Change license text to APLv2Bruce Yinhe
2013-05-06Fix unmatched_return warnings in kernelSiri Hansen
2013-05-06Fix unmatched_returns warnings in STDLIB and KernelHans Bolinder
2013-01-25Update copyright yearsBjörn-Egil Dahlberg
2013-01-25Make adjustments for UnicodeHans Bolinder
2012-01-27Move types and specs from erl_bif_types.erl to modulesHans Bolinder
2011-05-09Types and specifications have been modified and addedHans Bolinder
2011-04-08Merge branch 'mk/net-kernel-epmd-return-list' into devHenrik Nord
* mk/net-kernel-epmd-return-list: Fix list returned by net_kernel:epmd_module OTP-9215
2011-03-11Update copyright yearsBjörn-Egil Dahlberg
2011-03-01Fix three dialyzer warnings in kernelSverker Eriksson
Joint effort by Kostis, pan, egil & sverker
2010-12-15Fix list returned by net_kernel:epmd_moduleMarkus Knofe
Function epmd_module of net_kernel returns a list instead of an atom, when the epmd_module-flag is used.
2010-09-02Merge branch 'maint-r13' into devHans Bolinder
Conflicts: lib/kernel/doc/src/notes.xml lib/kernel/vsn.mk
2010-08-25Fix a bug that could cause the net_kernel process to crash.Hans Bolinder
A bug introduced in kernel-2.13.5.3 has been fixed. If running net_kernel:set_net_ticktime/1 twice within the TransitionPerod the second call caused the net_kernel process to crash with a badmatch.
2010-08-20kernel: Patch 1124Hans Bolinder
OTP-8686 A bug introduced in kernel-2.13.5.3 has been fixed.
2010-08-20kernel: Patch 1121Hans Bolinder
OTP-8643 Under certain circumstances the net kernel could hang. (Thanks to Scott Lystig Fritchie.)
2010-06-08OTP-8686 Bugfix net_kernelHans Bolinder
A bug introduced in kernel-2.13.5.3 has been fixed.
2010-06-01Add catch all handle_call to net_kernelAntonio SJ Musumeci
Of the core networking apps only net_kernel fails to have a catchall for unknown gen_server:call messages causing it to exit and eventually bring down kernal_sup and beam if it had not been manually started. For stability and consistancy it has been altered to include a catchall which does not reply.
2010-06-01OTP-8643 Improvements of net_kernelHans Bolinder
Under certain circumstances the net kernel could hang. (Thanks to Scott Lystig Fritchie.)
2009-11-20The R13B03 release.OTP_R13B03Erlang/OTP