@@ -304,10 +304,20 @@ handle_call({start_child, ChildSpec}, _From,
304
304
delegate = Delegate ,
305
305
group = Group ,
306
306
tx_fun = TxFun }) ->
307
+ rabbit_log :debug (" Mirrored supervisor: asked to consider starting a child, group: ~p " , [Group ]),
307
308
{reply , case maybe_start (Group , TxFun , Overall , Delegate , ChildSpec ) of
308
- already_in_mnesia -> {error , already_present };
309
- {already_in_mnesia , Pid } -> {error , {already_started , Pid }};
310
- Else -> Else
309
+ already_in_mnesia ->
310
+ rabbit_log :debug (" Mirrored supervisor: maybe_start for group ~p ,"
311
+ " overall ~p returned 'record already present'" , [Group , Overall ]),
312
+ {error , already_present };
313
+ {already_in_mnesia , Pid } ->
314
+ rabbit_log :debug (" Mirrored supervisor: maybe_start for group ~p ,"
315
+ " overall ~p returned 'already running: ~p '" , [Group , Overall , Pid ]),
316
+ {error , {already_started , Pid }};
317
+ Else ->
318
+ rabbit_log :debug (" Mirrored supervisor: maybe_start for group ~p ,"
319
+ " overall ~p returned ~p " , [Group , Overall , Else ]),
320
+ Else
311
321
end , State };
312
322
313
323
handle_call ({delete_child , Id }, _From , State = # state {delegate = Delegate ,
@@ -384,17 +394,31 @@ tell_all_peers_to_die(Group, Reason) ->
384
394
[cast (P , {die , Reason }) || P <- pg :get_members (Group ) -- [self ()]].
385
395
386
396
maybe_start (Group , TxFun , Overall , Delegate , ChildSpec ) ->
397
+ rabbit_log :debug (" Mirrored supervisor: asked to consider starting, group: ~p " , [Group ]),
387
398
try TxFun (fun () -> check_start (Group , Overall , Delegate , ChildSpec ) end ) of
388
- start -> start (Delegate , ChildSpec );
389
- undefined -> already_in_mnesia ;
390
- Pid -> {already_in_mnesia , Pid }
399
+ start ->
400
+ rabbit_log :debug (" Mirrored supervisor: check_start for group ~p ,"
401
+ " overall ~p returned 'do start'" , [Group , Overall ]),
402
+ start (Delegate , ChildSpec );
403
+ undefined ->
404
+ rabbit_log :debug (" Mirrored supervisor: check_start for group ~p ,"
405
+ " overall ~p returned 'undefined'" , [Group , Overall ]),
406
+ already_in_mnesia ;
407
+ Pid ->
408
+ rabbit_log :debug (" Mirrored supervisor: check_start for group ~p ,"
409
+ " overall ~p returned 'already running (~p )'" , [Group , Overall , Pid ]),
410
+ {already_in_mnesia , Pid }
391
411
catch
392
412
% % If we are torn down while in the transaction...
393
413
{error , E } -> {error , E }
394
414
end .
395
415
396
416
check_start (Group , Overall , Delegate , ChildSpec ) ->
397
- case mnesia :wread ({? TABLE , {Group , id (ChildSpec )}}) of
417
+ rabbit_log :debug (" Mirrored supervisor: check_start for group ~p , id: ~p " , [Group , id (ChildSpec )]),
418
+ ReadResult = mnesia :wread ({? TABLE , {Group , id (ChildSpec )}}),
419
+ rabbit_log :debug (" Mirrored supervisor: check_start table ~s read for key ~p returned ~p " ,
420
+ [? TABLE , {Group , id (ChildSpec )}, ReadResult ]),
421
+ case ReadResult of
398
422
[] -> _ = write (Group , Overall , ChildSpec ),
399
423
start ;
400
424
[S ] -> # mirrored_sup_childspec {key = {Group , Id },
@@ -427,6 +451,7 @@ start(Delegate, ChildSpec) ->
427
451
apply (? SUPERVISOR , start_child , [Delegate , ChildSpec ]).
428
452
429
453
stop (Group , TxFun , Delegate , Id ) ->
454
+ rabbit_log :debug (" Mirrored supervisor: asked to stop, group: ~p , child ID: ~p " , [Group , Id ]),
430
455
try TxFun (fun () -> check_stop (Group , Delegate , Id ) end ) of
431
456
deleted -> apply (? SUPERVISOR , delete_child , [Delegate , Id ]);
432
457
running -> {error , running }
0 commit comments