summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Larsson <lukas@erlang.org>2020-02-21 15:43:03 +0100
committerLukas Larsson <lukas@erlang.org>2020-02-21 15:43:03 +0100
commitdcaf14493012458d983a618985d3c7869aa316e3 (patch)
tree6b08f9adc2d110444bd0d40053473af00c0b3078
parent4b8e4ac6b6d0bf9b421184b400eefe5751ae4b88 (diff)
parent09f1fd5ad2f0b5a29d8ca961f27757f7f86405ad (diff)
downloaderlang-dcaf14493012458d983a618985d3c7869aa316e3.tar.gz
Merge branch 'maint'
-rw-r--r--.travis.yml4
-rw-r--r--erts/doc/src/epmd.xml6
-rw-r--r--lib/kernel/src/logger_proxy.erl18
-rw-r--r--lib/kernel/test/logger_proxy_SUITE.erl14
-rwxr-xr-xscripts/bundle-otp4
5 files changed, 37 insertions, 9 deletions
diff --git a/.travis.yml b/.travis.yml
index 29ef5429f4..2f063bfd8d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -121,8 +121,8 @@ matrix:
api_key:
secure: vW5PN6zng5H5+TCvwfwpGZsABrdCWYcFwDm3KXq+plsecBmTayu/0jgNso5Z97FbzDGVTLHWchvywEYQWnmrEByyOrqH73v1LN6JEfN99VpSrdFr15IzhblcyU1R9ugYc3WEoYjX0Q1uGelDSWRuuQOPbzy8mZf3D4rSGonyraP7jPTdHhs5P3ZWk6OMFz+tCdF4XohXqbhXIBOeH/EKg0svX2u5IcV01/YOL8LHWz6G7+gqBryEXx1+ngjQXQmMQwd7Yg3WOKE4XV9gX8ixZsbpUPZXAQKF+VOYdEgeiIr1hI0tBQUYX7FYEzYH5MCxqng5RdaPTOAm1oQroyGkIcWSXzDwN4AhJ7xqa/0NRdEaBPdQzPBCc+pVUDkxBR1ytXjBQqdQMnI6184TDiU5XBnj3kmieLkkKPKQNoPve/Y8Q8zutw4GNc7gixGcQCjtAFUbrT73QVRrezQH0qIdt23rivvf2R7CCOWSmgzowrswmtHdgeEVbodUIBPTNp7qzlUk9gDp6vW0XrOC4qEFI+VaY5PsEOXrrxZmI3gGGJgsbfzRvzvvupQcLNERniJ67r/uumbForpL0x1c65scKuMWwcn1wqt2OLbDoIIuM31Ph2HX/09TTqECU7CTvqLT5MnbZHXGjY9c3ch+sY3tSfaEX6aazl/Dqx28c7boCEw=
file:
- - ${TRAVIS_TAG}-bundle.txt
- - ${TRAVIS_TAG}-bundle.tar.gz
+ - ${TRAVIS_TAG}.0-bundle.txt
+ - ${TRAVIS_TAG}.0-bundle.tar.gz
on:
# We only deploy on pushes to tags that match the regexp
tags: true
diff --git a/erts/doc/src/epmd.xml b/erts/doc/src/epmd.xml
index 311483022d..75353cbc07 100644
--- a/erts/doc/src/epmd.xml
+++ b/erts/doc/src/epmd.xml
@@ -72,6 +72,12 @@
therefore required for an Erlang network to function
correctly.</p>
+ <note><p>On Windows the maximum number of nodes allowed in one
+ epmd instance is 60. This is because of limitations in the current
+ implementation. If you need more nodes, you should look into using
+ and erlang based epmd implementation such as
+ <url href="https://github.com/erlang/epmd">Erlang EPMD</url>.</p></note>
+
<taglist>
<tag>Starting the port mapper daemon</tag>
<item>
diff --git a/lib/kernel/src/logger_proxy.erl b/lib/kernel/src/logger_proxy.erl
index 10e53006b9..ead2d74f37 100644
--- a/lib/kernel/src/logger_proxy.erl
+++ b/lib/kernel/src/logger_proxy.erl
@@ -42,11 +42,16 @@
StringOrReport :: unicode:chardata() | logger:report(),
Meta :: logger:metadata().
log(RemoteLog) ->
- Olp = persistent_term:get(?MODULE),
- case logger_olp:get_pid(Olp) =:= self() of
+ Olp = persistent_term:get(?MODULE, undefined),
+ case (Olp =:= undefined) orelse (logger_olp:get_pid(Olp) =:= self()) of
true ->
%% This happens when the log event comes from the
%% emulator, and the group leader is on a remote node.
+ %%
+ %% OR
+ %%
+ %% when we are to log a remote message before the logger_proxy
+ %% has started
_ = handle_load(RemoteLog, no_state),
ok;
false ->
@@ -112,9 +117,12 @@ init([]) ->
%% Log event to send to the node where the group leader of it's client resides
handle_load({remote,Node,Log},State) ->
- %% If the connection is overloaded (send_nosuspend returns false),
- %% we drop the message.
- _ = erlang:send_nosuspend({?SERVER,Node},Log),
+ case erlang:send({?SERVER,Node},Log,[nosuspend]) of
+ _ok_or_nosuspend ->
+ %% If the connection is overloaded (send returns nosuspend),
+ %% we drop the message.
+ ok
+ end,
State;
%% Log event to log on this node
handle_load({log,Level,Format,Args,Meta},State) ->
diff --git a/lib/kernel/test/logger_proxy_SUITE.erl b/lib/kernel/test/logger_proxy_SUITE.erl
index 777531e4ed..bae2bd8d17 100644
--- a/lib/kernel/test/logger_proxy_SUITE.erl
+++ b/lib/kernel/test/logger_proxy_SUITE.erl
@@ -72,6 +72,7 @@ all() ->
[basic,
emulator,
remote,
+ remote_disconnect,
remote_emulator,
config,
restart_after,
@@ -118,6 +119,19 @@ remote(Config) ->
remote(cleanup,_Config) ->
ok = logger:remove_handler(?HNAME).
+remote_disconnect(Config) ->
+ {ok,_,Node} = logger_test_lib:setup(Config,[{logger,[{proxy,#{}}]}]),
+ ok = logger:add_handler(?HNAME,?MODULE,#{config=>self()}),
+ RemoteGL = rpc:call(Node, erlang, whereis, [user]),
+ net_kernel:disconnect(Node),
+ L1 = ?LOC#{ gl => RemoteGL }, logger:notice("Log from ~p; ~p",[?FUNCTION_NAME,?LINE],L1),
+ ok = ensure(L1),
+ L2 = ?LOC#{ gl => RemoteGL }, logger:notice([{test_case,?FUNCTION_NAME},{line,?LINE}],L2),
+ ok = ensure(L2),
+ ok.
+remote_disconnect(cleanup,_Config) ->
+ ok = logger:remove_handler(?HNAME).
+
remote_emulator(Config) ->
{ok,_,Node} = logger_test_lib:setup(Config,[{logger,[{proxy,#{}}]}]),
ok = logger:add_handler(?HNAME,?MODULE,#{config=>self()}),
diff --git a/scripts/bundle-otp b/scripts/bundle-otp
index aa1f166732..df82ff4fc5 100755
--- a/scripts/bundle-otp
+++ b/scripts/bundle-otp
@@ -6,8 +6,8 @@ if [ "$TRAVIS_PULL_REQUEST" = "false" -a "$TRAVIS_REPO_SLUG" != "erlang/otp" ];
exit 0
fi
-OTP_META_FILE=$ERL_TOP/${TRAVIS_TAG}-bundle.txt
-OTP_FILE=$ERL_TOP/${TRAVIS_TAG}-bundle.tar.gz
+OTP_META_FILE=$ERL_TOP/${TRAVIS_TAG}.0-bundle.txt
+OTP_FILE=$ERL_TOP/${TRAVIS_TAG}.0-bundle.tar.gz
REPOSITORIES="otp,$TRAVIS_TAG corba,.*"