Skip to content

Commit 535ff5d

Browse files
authored
Merge pull request #191 from rabbitmq/replica-init-logging
Improve logging during replicat initialization
2 parents 6e6bf20 + ed6fd9b commit 535ff5d

File tree

2 files changed

+49
-31
lines changed

2 files changed

+49
-31
lines changed

src/osiris_replica.erl

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,15 @@ handle_continue(#{name := Name0,
281281
transport = Transport},
282282
log = Log,
283283
parse_state = undefined}};
284+
{error, {connection_refused = R, _}} ->
285+
%% we don't log details for connection_refused,
286+
%% they are already in the logs of the other node
287+
?WARN_(Name, "failed to start replica reader on node '~w'. "
288+
"Reason ~0p.", [Node, R]),
289+
{stop, {shutdown, R}, undefined};
284290
{error, Reason} ->
285-
?WARN_(Name, "failed to start replica reader. Reason ~0p", [Reason]),
291+
?WARN_(Name, "failed to start replica reader on node '~w'. "
292+
"Reason ~0p.", [Node, Reason]),
286293
{stop, {shutdown, Reason}, undefined}
287294
end
288295
end.
@@ -332,25 +339,31 @@ accept(Name, tcp, LSock, Process) ->
332339
end;
333340
accept(Name, ssl, LSock, Process) ->
334341
?DEBUG_(Name, "Starting socket acceptor for replication over TLS", []),
335-
{ok, Sock0} = ssl:transport_accept(LSock),
336-
SslOptions = application:get_env(osiris, replication_server_ssl_options, []),
337-
case ssl:handshake(Sock0, SslOptions) of
338-
{ok, Sock} ->
339-
_ = ssl:close(LSock),
340-
ok = ssl:controlling_process(Sock, Process),
341-
Process ! {socket, Sock},
342-
ok;
343-
{error, {tls_alert, {handshake_failure, _}}} ->
344-
?DEBUG_(Name, "Handshake failure, restarting listener...",
345-
[]),
346-
_ = spawn_link(fun() -> accept(Name, ssl, LSock, Process) end),
342+
case ssl:transport_accept(LSock) of
343+
{ok, Sock0} ->
344+
SslOpts = application:get_env(osiris, replication_server_ssl_options, []),
345+
case ssl:handshake(Sock0, SslOpts) of
346+
{ok, Sock} ->
347+
_ = ssl:close(LSock),
348+
ok = ssl:controlling_process(Sock, Process),
349+
Process ! {socket, Sock},
350+
ok;
351+
{error, {tls_alert, {handshake_failure, _}}} ->
352+
?DEBUG_(Name, "Handshake failure, restarting listener...",
353+
[]),
354+
_ = spawn_link(fun() -> accept(Name, ssl, LSock, Process) end),
355+
ok;
356+
{error, E} ->
357+
?DEBUG_(Name, "Error during handshake ~w", [E]);
358+
H ->
359+
?DEBUG_(Name, "Unexpected result from TLS handshake ~w", [H])
360+
end,
347361
ok;
348-
{error, E} ->
349-
?DEBUG_(Name, "Error during handshake ~w", [E]);
350-
H ->
351-
?DEBUG_(Name, "Unexpected result from TLS handshake ~w", [H])
352-
end,
353-
ok.
362+
{error, Err} ->
363+
?DEBUG_(Name, "ssl:transport_accept/1 failed with ~0p", [Err]),
364+
_ = ssl:close(LSock),
365+
ok
366+
end.
354367

355368
%%--------------------------------------------------------------------
356369
%% @private

src/osiris_replica_reader.erl

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,10 @@ init(#{hosts := Hosts,
117117

118118
?DEBUG("~ts: trying to connect to replica at ~0p", [Name, Hosts]),
119119

120-
case maybe_connect(Name, Transport, Hosts, Port, connect_options())
121-
of
120+
case maybe_connect(Name, Transport, Hosts, Port, connect_options()) of
122121
{ok, Sock, Host} ->
123-
?DEBUG_(Name, "successfully connected to host ~0p port ~b",
124-
[Host, Port]),
122+
?INFO_(Name, "replica reader successfully connected to host ~0p port ~b",
123+
[Host, Port]),
125124
CntId = {?MODULE, ExtRef, Host, Port},
126125
CntSpec = {CntId, ?COUNTER_FIELDS},
127126
Config = #{counter_spec => CntSpec, transport => Transport},
@@ -177,7 +176,7 @@ init(#{hosts := Hosts,
177176
{error, Reason} ->
178177
?WARN_(Name, "could not connect replica reader to replica at ~0p port ~b, Reason: ~0p",
179178
[Hosts, Port, Reason]),
180-
{stop, Reason}
179+
{error, Reason}
181180
end.
182181

183182
%%--------------------------------------------------------------------
@@ -391,34 +390,40 @@ setopts(tcp, Sock, Opts) ->
391390
setopts(ssl, Sock, Opts) ->
392391
ok = ssl:setopts(Sock, Opts).
393392

394-
maybe_connect(_Name, _, [], _Port, _Options) ->
393+
394+
maybe_connect(Name, T, Hosts, Port, Options) ->
395+
maybe_connect(Name, T, Hosts, Port, Options, []).
396+
397+
maybe_connect(Name, _, [], Port, _Options, Acc) ->
398+
?INFO_(Name, "could not connect replica reader to replica on port ~b, "
399+
"reason(s): ~0p", [Port, Acc]),
395400
{error, connection_refused};
396-
maybe_connect(Name, tcp, [H | T], Port, Options) ->
401+
maybe_connect(Name, tcp, [H | T], Port, Options, Acc) ->
397402
?DEBUG_(Name, "trying to connect to ~0p on port ~b", [H, Port]),
398403
case gen_tcp:connect(H, Port, Options) of
399404
{ok, Sock} ->
400405
{ok, Sock, H};
401406
{error, Reason} ->
402407
?DEBUG_(Name, "connection refused, reason: ~w host:~0p - port: ~0p",
403408
[Reason, H, Port]),
404-
maybe_connect(Name, tcp, T, Port, Options)
409+
maybe_connect(Name, tcp, T, Port, Options, [{H, Reason} | Acc])
405410
end;
406-
maybe_connect(Name, ssl, [H | T], Port, Options) ->
411+
maybe_connect(Name, ssl, [H | T], Port, Options, Acc) ->
407412
?DEBUG_(Name, "trying to establish TLS connection to ~0p using port ~b", [H, Port]),
408413
Opts = Options ++
409414
application:get_env(osiris, replication_client_ssl_options, []) ++
410415
maybe_add_sni_option(H),
411416
case ssl:connect(H, Port, Opts) of
412417
{ok, Sock} ->
413418
{ok, Sock, H};
414-
{error, {tls_alert, {handshake_failure, _}}} ->
419+
{error, {tls_alert, {handshake_failure = R, _}}} ->
415420
?DEBUG_(Name, "TLS connection refused (handshake failure), host:~0p - port: ~0p",
416421
[H, Port]),
417-
maybe_connect(Name, ssl, T, Port, Options);
422+
maybe_connect(Name, ssl, T, Port, Options, [{H, R} | Acc]);
418423
{error, E} ->
419424
?DEBUG_(Name, "TLS connection refused, host:~0p - port: ~0p", [H, Port]),
420425
?DEBUG_(Name, "error while trying to establish TLS connection ~0p", [E]),
421-
maybe_connect(Name, ssl, T, Port, Options)
426+
maybe_connect(Name, ssl, T, Port, Options, [{H, E} | Acc])
422427
end.
423428

424429
maybe_add_sni_option(H) when is_binary(H) ->

0 commit comments

Comments
 (0)