File 2091-kernel-Support-net_ticker_spawn_options-in-erl_uds_d.patch of Package erlang

From dee2f1c92c5081a7d02e2abd217baf133acf3ef9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20de=20Bretagne?=
 <jerome.debretagne@gmail.com>
Date: Tue, 14 Sep 2021 00:43:29 +0200
Subject: [PATCH] kernel: Support net_ticker_spawn_options in erl_uds_dist

This change allows user to specify extra spawn options for net ticker
processes in erl_uds_dist, as introduced with OTP-17617 in PR-5069.
---
 .../examples/erl_uds_dist/src/erl_uds_dist.erl  | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/lib/kernel/examples/erl_uds_dist/src/erl_uds_dist.erl b/lib/kernel/examples/erl_uds_dist/src/erl_uds_dist.erl
index 44035e8e42..af7a577b20 100644
--- a/lib/kernel/examples/erl_uds_dist/src/erl_uds_dist.erl
+++ b/lib/kernel/examples/erl_uds_dist/src/erl_uds_dist.erl
@@ -432,8 +432,7 @@ accept_loop(Kernel, ListeningSocket) ->
 accept_connection(AcceptPid, DistCtrl, MyNode, Allowed, SetupTime) ->
     spawn_opt(?MODULE, accept_supervisor,
               [self(), AcceptPid, DistCtrl, MyNode, Allowed, SetupTime],
-              %% Spawn on max priority
-              [link, {priority, max}]).
+              net_ticker_spawn_options()).
 
 accept_supervisor(Kernel, AcceptPid, DistCtrl, MyNode, Allowed, SetupTime) ->
     ?trace("~p~n", [{?MODULE, accept_connection, self()}]),
@@ -474,6 +473,17 @@ accept_supervisor(Kernel, AcceptPid, DistCtrl, MyNode, Allowed, SetupTime) ->
     end.
 
 
+%% ---------------------------------------------------------------------
+%% Allow to set different spawn options for dist_util processes using
+%% the net_ticker_spawn_options configuration parameter. Default is
+%% [link, {priority, max}] and these two options cannot be changed.
+%% ---------------------------------------------------------------------
+net_ticker_spawn_options() ->
+    Opts = application:get_env(kernel, net_ticker_spawn_options, []),
+    Opts1 = [{priority, max} | proplists:delete(priority, Opts)],
+    [link | proplists:delete(link, Opts1)].
+
+
 %% ---------------------------------------------------------------------
 %% Define common values of the handshake data record, defined in
 %% kernel/include/dist_util.hrl
@@ -666,8 +676,7 @@ getopts(ListeningSocket, Options) ->
 setup(Node, Type, MyNode, _LongOrShortNames, SetupTime) ->
     spawn_opt(?MODULE, setup_supervisor,
 	      [self(), Node, Type, MyNode, SetupTime],
-              %% Spawn on max priority
-              [link, {priority, max}]).
+              net_ticker_spawn_options()).
 
 setup_supervisor(Kernel, Node, Type, MyNode, SetupTime) ->
     ?trace("~p~n", [{?MODULE, setup, self(), Node}]),
-- 
2.31.1

openSUSE Build Service is sponsored by