Skip to content

Commit 46e3be7

Browse files
committed
enhance errors
Signed-off-by: Alejandro M. Ramallo <alejandro.ramallo@leapsight.com>
1 parent b91900e commit 46e3be7

File tree

2 files changed

+108
-8
lines changed

2 files changed

+108
-8
lines changed

include/partisan.hrl

+84
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,90 @@
1414
(is_atom(M) andalso is_atom(F) andalso is_list(A))
1515
).
1616

17+
-define(IS_INET_POSIX(X),
18+
(
19+
X == eaddrinuse orelse
20+
X == eaddrnotavail orelse
21+
X == eafnosupport orelse
22+
X == ealready orelse
23+
X == econnaborted orelse
24+
X == econnrefused orelse
25+
X == econnreset orelse
26+
X == edestaddrreq orelse
27+
X == ehostdown orelse
28+
X == ehostunreach orelse
29+
X == einprogress orelse
30+
X == eisconn orelse
31+
X == emsgsize orelse
32+
X == enetdown orelse
33+
X == enetunreach orelse
34+
X == enopkg orelse
35+
X == enoprotoopt orelse
36+
X == enotconn orelse
37+
X == enotty orelse
38+
X == enotsock orelse
39+
X == eproto orelse
40+
X == eprotonosupport orelse
41+
X == eprototype orelse
42+
X == esocktnosupport orelse
43+
X == etimedout orelse
44+
X == ewouldblock orelse
45+
X == exbadport orelse
46+
?IS_FILE_POSIX(X)
47+
)
48+
).
49+
50+
-define(IS_FILE_POSIX(X),
51+
(
52+
X == eacces orelse
53+
X == eagain orelse
54+
X == ebadf orelse
55+
X == ebadmsg orelse
56+
X == ebusy orelse
57+
X == edeadlk orelse
58+
X == edeadlock orelse
59+
X == edquot orelse
60+
X == eexist orelse
61+
X == efault orelse
62+
X == efbig orelse
63+
X == eftype orelse
64+
X == eintr orelse
65+
X == einval orelse
66+
X == eio orelse
67+
X == eisdir orelse
68+
X == eloop orelse
69+
X == emfile orelse
70+
X == emlink orelse
71+
X == emultihop orelse
72+
X == enametoolong orelse
73+
X == enfile orelse
74+
X == enobufs orelse
75+
X == enodev orelse
76+
X == enolck orelse
77+
X == enolink orelse
78+
X == enoent orelse
79+
X == enomem orelse
80+
X == enospc orelse
81+
X == enosr orelse
82+
X == enostr orelse
83+
X == enosys orelse
84+
X == enotblk orelse
85+
X == enotdir orelse
86+
X == enotsup orelse
87+
X == enxio orelse
88+
X == eopnotsupp orelse
89+
X == eoverflow orelse
90+
X == eperm orelse
91+
X == epipe orelse
92+
X == erange orelse
93+
X == erofs orelse
94+
X == espipe orelse
95+
X == esrch orelse
96+
X == estale orelse
97+
X == etxtbsy orelse
98+
X == exdev
99+
)
100+
).
17101

18102
%% =============================================================================
19103
%% PLUMTREE

src/partisan_peer_service_client.erl

+24-8
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727

2828
-behaviour(gen_server).
2929

30-
3130
-include("partisan.hrl").
3231
-include("partisan_logger.hrl").
3332
-include("partisan_peer_socket.hrl").
@@ -129,10 +128,13 @@ init([Peer, ListenAddr, Channel, ChannelOpts, From]) ->
129128
{ok, State};
130129

131130
{error, Reason} ->
132-
?LOG_TRACE(
133-
"Pid ~p is unable to connect to ~p due to ~p",
134-
[self(), Peer, Reason]
135-
),
131+
?LOG_TRACE(#{
132+
description => "Unable to establish connection with peer",
133+
peer => Peer,
134+
listen_addr => ListenAddr,
135+
channel => Channel,
136+
reason => Reason
137+
}),
136138
%% We use shutdown to avoid a crash report
137139
{stop, normal}
138140
end.
@@ -287,9 +289,23 @@ when is_atom(Channel), is_map(ChannelOpts) ->
287289
{ok, Socket} ->
288290
{ok, Socket};
289291

290-
{error, Error} ->
291-
%% TODO LOG HERE
292-
{error, Error}
292+
{error, Reason} when ?IS_INET_POSIX(Reason) ->
293+
%% TODO We do not want to log here becuase this can be high frequency
294+
%% so what we should do is store the latest error on the
295+
%% partisan_peer_connections as a status that is cleanedup when we
296+
%% establish the connection
297+
{error, Reason};
298+
299+
{error, Reason} ->
300+
?LOG_ERROR(#{
301+
description =>
302+
"Error while trying to establish connection with peer",
303+
channel => Channel,
304+
reason => Reason,
305+
ip => Address,
306+
port => Port
307+
}),
308+
{error, Reason}
293309
end.
294310

295311

0 commit comments

Comments
 (0)