summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/erl_node_tables.h
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'rickard/creation-fix/24.3.4/OTP-18570' into ↵Rickard Green2023-04-291-0/+8
|\ | | | | | | | | | | | | rickard/creation-fix/25.3.1/OTP-18570 * rickard/creation-fix/24.3.4/OTP-18570: [erts] ensure no mix of external and internal identifiers
| * [erts] ensure no mix of external and internal identifiersRickard Green2023-04-291-0/+8
| | | | | | | | | | | | | | | | Silently reject proposed creation and select another one when a node goes alive if there are external identifiers in the system with the proposed creation and the same node name that are to be used. Such identifiers would not work as expected in various situations, and are not from the instance of the node that are about to go alive.
* | Update copyright yearErlang/OTP2023-03-061-1/+1
| |
* | [erts] Support for truly asynchronous distributed signalingRickard Green2023-01-171-8/+5
| |
* | Update copyright yearRickard Green2021-12-161-1/+1
| |
* | Fix typos in erts/emulator/beamKian-Meng, Ang2021-11-301-1/+1
|/
* Merge branch 'maint'Rickard Green2020-03-131-1/+1
|\ | | | | | | | | * maint: Update copyright year
| * Update copyright yearRickard Green2020-03-131-1/+1
| |
* | Improve distribution handshakeSverker Eriksson2020-01-141-3/+2
| |
* | Guarantee nodedown before nodeup messagesSverker Eriksson2019-10-151-0/+2
| |
* | Merge branch 'rickard/iovec-22.0/OTP-15618' into rickard/iovec/OTP-15618Rickard Green2019-09-251-18/+12
|\ \ | | | | | | | | | | | | | | | * rickard/iovec-22.0/OTP-15618: Utilize new dist_ctrl_get_data() features in tls_sender Utilize I/O vectors for outgoing distribution data
| * | Utilize I/O vectors for outgoing distribution dataRickard Green2019-09-241-18/+12
| | |
* | | Merge branch 'maint'Rickard Green2019-07-221-4/+35
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | * maint: Fix etp-ets-tables Fix node refc test for free processes hanging around Enhanced node refc bookkeeping Fix node container refc tests of ETS Fix node refc test of external data Node container refc test for persistent terms Include persistent term storage in node/dist refc check Fix node refc test for system message queue
| * | Enhanced node refc bookkeepingRickard Green2019-07-221-4/+35
| |/
* | epmd: Support 32-bit creation values in local nodeSverker Eriksson2019-05-141-1/+1
|/ | | | This reverts revert-commit d293c3ff700c1a0992a32dc3da9ae18964893c23.
* Merge branch 'sverker/revert-big-creation'Sverker Eriksson2019-04-111-1/+1
|\ | | | | | | | | | | | | | | | | | | | | * sverker/revert-big-creation: Revert "erts: Make DFLAG_BIG_CREATION mandatory" Revert "erts: Remove old encoding of pids, ports and refs" Revert "erl_interface: Remove old encoding of pid,port,refs" Revert "epmd: Support 32-bit creation values in local node" Revert "jinterface: Remove old encoding of pid,port,refs" Revert "erl_interface: Support 32-bit creation local cnode" Revert "erts: Document new EPMD response ALIVE2_X_RESP"
| * Revert "epmd: Support 32-bit creation values in local node"Sverker Eriksson2019-04-091-1/+1
| | | | | | | | | | | | | | | | This reverts commit bd8f6106d44a58c261920eef72842bb3bc5a4968. PLUS a little change in epmd_srv.c:750 ("4" -> "replylen") that was part of e2cf4a8a4b03b9f430ba228276c3b2629159e832 by mistake.
* | erts: Fix buffer alignment bug in alloc_dist_obufLukas Larsson2019-04-091-0/+1
|/ | | | Cannot do unaligned word writes on sparc!
* Merge branch 'sverker/enable-big-creation/OTP-15603'Sverker Eriksson2019-03-221-1/+1
|\ | | | | | | | | | | | | | | | | | | | | * sverker/enable-big-creation/OTP-15603: epmd: Support 32-bit creation values in local node erts: Robustify epmd reply function erts: Reject decoded local refs with too large first word erts: Fix bug in list_to_ref erl_interface: Remove old encoding of pid,port,refs erts: Remove old encoding of pids, ports and refs erts: Make DFLAG_BIG_CREATION mandatory
| * epmd: Support 32-bit creation values in local nodeSverker Eriksson2019-03-221-1/+1
| | | | | | | | | | | | | | | | * Increase distribution version from 5 to 6 * Introduce new ALIVE2_X_RESP with 32-bit creation as reply to ALIVE2_REQ when sender dist version >= 6 * Still reply old ALIVE2_RESP with tiny creation 1..3 if sender dist version < 6.
* | Add possibility to also get size of data from erlang:dist_ctrl_get_data()Rickard Green2019-03-191-0/+1
|/
* erts: Add ERL_NODE_BOOKKEEP to node tables refcLukas Larsson2019-02-221-4/+65
|
* erts: Implement fragmentation of distrubution messagesLukas Larsson2019-02-221-2/+15
|
* Consolidate distribution entry state transitionsSverker Eriksson2018-09-181-3/+4
| | | | | | | | | | * Make connection_id part of the distribution handle as {ConnId, DistEntry} in order for BIFs to verify correct connection. * Make distribution handle opaque to net_kernel. * Remove some unsafe lockless reads of DistEntry.flags * Change state ERTS_DE_STATE_EXITING to be more of an internal state that prevents erts from enqueue, encode or schedule new data to be sent. Otherwise it should behave like ERTS_DE_STATE_CONNECTED.
* Implementation of true asynchronous signaling between processesRickard Green2018-03-211-35/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* erts: Refactor DistEntry.status flags into a stateSverker Eriksson2018-03-021-4/+7
| | | | | | | | | | | | | | | | Just to simplify and get 4 distinctive states IDLE, PENDING, CONNECTED and EXITING. The old possible flag combos were: 0 PENDING CONNECTED CONNECTED|EXITING EXITING The two EXITING states did not serve any purpose other then as a slight optimization in monitor_node(_,false,_) to shortcut EXITING when there can be no monitors.
* erts: Optimize dist transcoding toward erl_/jinterfaceSverker Eriksson2018-03-021-0/+1
| | | | | to only transcode if output buffer actually contains unsupported BIT_BINARY_EXT or EXPORT_EXT.
* erts: Put pending DistrEntry in separate listSverker Eriksson2017-11-151-0/+3
|
* erts: Keep magic ref to DistEntry in net_kernelSverker Eriksson2017-11-151-0/+1
| | | | to make sure it's kept alive.
* erts: Transcode tuple fallbacksSverker Eriksson2017-11-151-0/+3
| | | | | | | | | | | | | When finalizing outgoing distribution messages we transcode them into using tuple fallbacks if the receiver does not support bitstrings and export-funs. This can only happen if the message was first encoded toward a pending connection when the receiver was unknown. It's an optimistic approach optmimized for modern beam nodes, that expect real bitstrings and funs (since <R13). Only erl_interface/jinterface lack this support.
* erts: Fix auto-connect toward erl_interface/jinterfaceSverker Eriksson2017-11-151-0/+1
|
* erts: Introduce asynchronous auto-connectSverker Eriksson2017-11-151-4/+3
|
* erts: Remove some dead codeSverker Eriksson2017-11-151-3/+0
|
* erts: Add lcnt prototype for dist locks updateLukas Larsson2017-10-181-0/+1
|
* Merge branch 'rickard/dist/OTP-14459' into rickard/dist/master/OTP-14459Rickard Green2017-08-281-23/+30
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: erts/emulator/beam/bif.c erts/emulator/beam/dist.c erts/emulator/beam/dist.h erts/emulator/beam/erl_bif_info.c erts/emulator/beam/erl_node_tables.c erts/emulator/beam/erl_node_tables.h erts/emulator/beam/external.c
| * Optimize dist entry managementRickard Green2017-08-281-10/+10
| |
| * Support for distribution controller processesRickard Green2017-08-281-3/+13
| |
| * Change some dist-entry typesRickard Green2017-07-041-2/+2
| |
* | erts: Replace usage of all erts_smp prefixes to just ertsLukas Larsson2017-07-171-29/+28
| |
* | erts: Cleanup removal of non-smp emulatorsLukas Larsson2017-07-171-1/+1
| |
* | Allow toggling lock counting at runtimeJohn Högberg2017-07-061-0/+4
|/ | | | | | | | The implementation is still hidden behind ERTS_ENABLE_LOCK_COUNT, and all categories are still enabled by default, but the actual counting can be toggled at will. OTP-13170
* Update copyright yearRaimo Niskanen2017-05-041-1/+1
|
* Atomic reference count of binaries also in non-SMPRickard Green2017-02-061-4/+4
| | | | | | | | | | | | | NIF resources was not handled in a thread-safe manner in the runtime system without SMP support. As a consequence of this fix, the following driver functions are now thread-safe also in the runtime system without SMP support: - driver_free_binary() - driver_realloc_binary() - driver_binary_get_refc() - driver_binary_inc_refc() - driver_binary_dec_refc()
* erts: Refactor crash dumping with cbprintfSverker Eriksson2016-11-171-3/+3
| | | | | | Instead of passing around a file descriptor use a function pointer to facilitate more advanced backend write logic such as size limitation or compression.
* Merge branch 'henrik/update-copyrightyear'Henrik Nord2016-04-131-1/+1
|\ | | | | | | | | * henrik/update-copyrightyear: update copyright-year
| * update copyright-yearHenrik Nord2016-03-151-1/+1
| |
* | erts: Support 32-bit creation for external pid,port,refsSverker Eriksson2016-04-071-1/+1
|/ | | | from future nodes.
* erts: Refactor out erts functions from hashLukas Larsson2015-12-151-0/+1
|
* erts: Remove HALFWORD_HEAP definitionBjörn-Egil Dahlberg2015-06-241-1/+1
|
* Change license text to APLv2Bruce Yinhe2015-06-181-9/+10
|