@@ -246,13 +246,7 @@ merge(connected, Nodes, #state{failed_to_connect = FailedToConnect,
246246 connected = Connected } = State ) ->
247247 NewConnected = lists :usort (Nodes ++ Connected ),
248248 NewNodes = NewConnected -- Connected ,
249- [begin
250- erlang :monitor_node (Node , true ),
251- maybe_set_master (Node , State ),
252- % % connect_nodes is based on cast,
253- % % so it won't cause the deadlock.
254- connect_nodes (Node , NewConnected )
255- end || Node <- NewNodes ],
249+ [connect_new_node (Node , NewConnected , State ) || Node <- NewNodes ],
256250 State # state {connected = NewConnected ,
257251 failed_to_connect = FailedToConnect -- Nodes ,
258252 connection_lost = ConnectionLost -- Nodes };
@@ -266,6 +260,14 @@ merge(failed_to_connect, Nodes, #state{failed_to_connect = FailedToConnect} = St
266260merge (slave , Nodes , # state {slave = Slave } = State ) ->
267261 State # state {slave = lists :usort (Nodes ++ Slave )}.
268262
263+ -spec connect_new_node (node (), [node ()], state ()) -> ok .
264+ connect_new_node (Node , NewConnected , State ) ->
265+ erlang :monitor_node (Node , true ),
266+ maybe_set_master (Node , State ),
267+ % % connect_nodes is based on cast,
268+ % % so it won't cause the deadlock.
269+ connect_nodes (Node , NewConnected ).
270+
269271-spec state_to_map (state ()) -> #{any () => any ()}.
270272state_to_map (# state {} = State ) ->
271273 Fields = record_info (fields , state ),
0 commit comments