@@ -325,8 +325,20 @@ is_map(Opts) ->
325
325
-spec broadcast (any (), module ()) -> ok .
326
326
327
327
broadcast (Broadcast , Mod ) ->
328
- {MessageId , Payload } = Mod :broadcast_data (Broadcast ),
329
- gen_server :cast (? SERVER , {broadcast , MessageId , Payload , Mod }).
328
+ try
329
+ {MessageId , Payload } = Mod :broadcast_data (Broadcast ),
330
+ gen_server :cast (? SERVER , {broadcast , MessageId , Payload , Mod })
331
+
332
+ catch
333
+ Class :Reason :Stacktrace ->
334
+ ? LOG_NOTICE (#{
335
+ description =>
336
+ " Exception on callback broadcast_data. Broadcast cancelled." ,
337
+ class => Class ,
338
+ reason => Reason ,
339
+ stacktrace => Stacktrace
340
+ })
341
+ end .
330
342
331
343
332
344
% % -----------------------------------------------------------------------------
@@ -341,11 +353,24 @@ broadcast(Broadcast, Mod) ->
341
353
-spec broadcast_channel (Mod :: module ()) -> partisan :channel ().
342
354
343
355
broadcast_channel (Mod ) ->
344
- case erlang :function_exported (Mod , broadcast_channel , 0 ) of
345
- true ->
346
- Mod :broadcast_channel ();
347
- false ->
348
- ? DEFAULT_CHANNEL
356
+ try
357
+ case erlang :function_exported (Mod , broadcast_channel , 0 ) of
358
+ true ->
359
+ Mod :broadcast_channel ();
360
+ false ->
361
+ ? DEFAULT_CHANNEL
362
+ end
363
+ catch
364
+ Class :Reason :Stacktrace ->
365
+ ? LOG_NOTICE (#{
366
+ description =>
367
+ " Exception on callback broadcast_channel, "
368
+ " returning default channel." ,
369
+ class => Class ,
370
+ reason => Reason ,
371
+ stacktrace => Stacktrace
372
+ }),
373
+ undefined
349
374
end .
350
375
351
376
@@ -1131,6 +1156,7 @@ exchange(Peer, #state{exchanges = Exchanges} = State, Mod) ->
1131
1156
1132
1157
{error , _Reason } ->
1133
1158
State ;
1159
+
1134
1160
_ ->
1135
1161
State
1136
1162
end .
0 commit comments