@@ -74,24 +74,32 @@ go(DbName, AllDocs0, Opts) ->
7474        rexi_monitor :stop (RexiMon )
7575    end .
7676
77- handle_message ({rexi_DOWN , _ , {_ , NodeRef }, _ }, _Worker , # acc {} =  Acc0 ) -> 
77+ handle_message ({rexi_DOWN , _ , {_ , NodeRef }, _ }, Worker , # acc {} =  Acc0 ) -> 
7878    # acc {grouped_docs  =  GroupedDocs } =  Acc0 ,
7979    NewGrpDocs  =  [X  || {# shard {node  =  N }, _ } =  X  <-  GroupedDocs , N  =/=  NodeRef ],
80-     skip_message (Acc0 # acc {waiting_count  =  length (NewGrpDocs ), grouped_docs  =  NewGrpDocs });
80+     Acc1  =  Acc0 # acc {waiting_count  =  length (NewGrpDocs ), grouped_docs  =  NewGrpDocs },
81+     Acc2  =  start_followers (Worker , Acc1 ),
82+     skip_message (Acc2 );
8183handle_message ({rexi_EXIT , _ }, Worker , # acc {} =  Acc0 ) -> 
8284    # acc {waiting_count  =  WC , grouped_docs  =  GrpDocs } =  Acc0 ,
8385    NewGrpDocs  =  lists :keydelete (Worker , 1 , GrpDocs ),
84-     skip_message (Acc0 # acc {waiting_count  =  WC  -  1 , grouped_docs  =  NewGrpDocs });
86+     Acc1  =  Acc0 # acc {waiting_count  =  WC  -  1 , grouped_docs  =  NewGrpDocs },
87+     Acc2  =  start_followers (Worker , Acc1 ),
88+     skip_message (Acc2 );
8589handle_message ({error , all_dbs_active }, Worker , # acc {} =  Acc0 ) -> 
8690    %  treat it like rexi_EXIT, the hope at least one copy will return successfully
8791    # acc {waiting_count  =  WC , grouped_docs  =  GrpDocs } =  Acc0 ,
8892    NewGrpDocs  =  lists :keydelete (Worker , 1 , GrpDocs ),
89-     skip_message (Acc0 # acc {waiting_count  =  WC  -  1 , grouped_docs  =  NewGrpDocs });
93+     Acc1  =  Acc0 # acc {waiting_count  =  WC  -  1 , grouped_docs  =  NewGrpDocs },
94+     Acc2  =  start_followers (Worker , Acc1 ),
95+     skip_message (Acc2 );
9096handle_message (internal_server_error , Worker , # acc {} =  Acc0 ) -> 
9197    %  happens when we fail to load validation functions in an RPC worker
9298    # acc {waiting_count  =  WC , grouped_docs  =  GrpDocs } =  Acc0 ,
9399    NewGrpDocs  =  lists :keydelete (Worker , 1 , GrpDocs ),
94-     skip_message (Acc0 # acc {waiting_count  =  WC  -  1 , grouped_docs  =  NewGrpDocs });
100+     Acc1  =  Acc0 # acc {waiting_count  =  WC  -  1 , grouped_docs  =  NewGrpDocs },
101+     Acc2  =  start_followers (Worker , Acc1 ),
102+     skip_message (Acc2 );
95103handle_message (attachment_chunk_received , _Worker , # acc {} =  Acc0 ) -> 
96104    {ok , Acc0 };
97105handle_message ({ok , Replies }, Worker , # acc {} =  Acc0 ) -> 
0 commit comments