@@ -605,36 +605,27 @@ handle_call({add_on_right, _NewMember}, _From,
605
605
handle_call ({add_on_right , NewMember }, _From ,
606
606
State = # state { self = Self ,
607
607
group_name = GroupName ,
608
- view = View ,
609
608
members_state = MembersState ,
610
- module = Module ,
611
- callback_args = Args ,
612
609
txn_executor = TxnFun }) ->
613
610
Group = record_new_member_in_group (NewMember , Self , GroupName , TxnFun ),
614
611
View1 = group_to_view (Group ),
615
612
MembersState1 = remove_erased_members (MembersState , View1 ),
616
613
ok = send_right (NewMember , View1 ,
617
614
{catchup , Self , prepare_members_state (MembersState1 )}),
618
- handle_callback_result (
619
- {callback_view_changed (Args , Module , View , View1 ),
620
- {ok , Group },
621
- check_neighbours (State # state { view = View1 ,
622
- members_state = MembersState1 })}).
615
+ {Result , State1 } = change_view (View1 , State # state {
616
+ members_state = MembersState1 }),
617
+ handle_callback_result ({Result , {ok , Group }, State1 }).
623
618
624
619
handle_cast ({? TAG , ReqVer , Msg },
625
620
State = # state { view = View ,
626
621
members_state = MembersState ,
627
- group_name = GroupName ,
628
- module = Module ,
629
- callback_args = Args }) ->
622
+ group_name = GroupName }) ->
630
623
{Result , State1 } =
631
624
case needs_view_update (ReqVer , View ) of
632
625
true -> View1 = group_to_view (dirty_read_group (GroupName )),
633
626
MemberState1 = remove_erased_members (MembersState , View1 ),
634
- {callback_view_changed (Args , Module , View , View1 ),
635
- check_neighbours (
636
- State # state { view = View1 ,
637
- members_state = MemberState1 })};
627
+ change_view (View1 , State # state {
628
+ members_state = MemberState1 });
638
629
false -> {ok , State }
639
630
end ,
640
631
handle_callback_result (
@@ -1148,10 +1139,7 @@ erase_members_in_group(Members, GroupName, TxnFun) ->
1148
1139
1149
1140
maybe_erase_aliases (State = # state { self = Self ,
1150
1141
group_name = GroupName ,
1151
- view = View0 ,
1152
1142
members_state = MembersState ,
1153
- module = Module ,
1154
- callback_args = Args ,
1155
1143
txn_executor = TxnFun }, View ) ->
1156
1144
# view_member { aliases = Aliases } = fetch_view_member (Self , View ),
1157
1145
{Erasable , MembersState1 }
@@ -1170,9 +1158,7 @@ maybe_erase_aliases(State = #state { self = Self,
1170
1158
_ -> group_to_view (
1171
1159
erase_members_in_group (Erasable , GroupName , TxnFun ))
1172
1160
end ,
1173
- State1 = State # state { members_state = MembersState1 , view = View1 },
1174
- {callback_view_changed (Args , Module , View0 , View1 ),
1175
- check_neighbours (State1 )}.
1161
+ change_view (View1 , State # state { members_state = MembersState1 }).
1176
1162
1177
1163
can_erase_view_member (Self , Self , _LA , _LP ) -> false ;
1178
1164
can_erase_view_member (_Self , _Id , N , N ) -> true ;
@@ -1370,16 +1356,19 @@ callback(Args, Module, Activity) ->
1370
1356
{stop , _Reason } = Error -> Error
1371
1357
end .
1372
1358
1373
- callback_view_changed (Args , Module , OldView , NewView ) ->
1374
- OldMembers = all_known_members (OldView ),
1375
- NewMembers = all_known_members (NewView ),
1359
+ change_view (View , State = # state { view = View0 ,
1360
+ module = Module ,
1361
+ callback_args = Args }) ->
1362
+ OldMembers = all_known_members (View0 ),
1363
+ NewMembers = all_known_members (View ),
1376
1364
Births = NewMembers -- OldMembers ,
1377
1365
Deaths = OldMembers -- NewMembers ,
1378
- case {Births , Deaths } of
1379
- {[], []} -> ok ;
1380
- _ -> Module :members_changed (
1381
- Args , get_pids (Births ), get_pids (Deaths ))
1382
- end .
1366
+ Result = case {Births , Deaths } of
1367
+ {[], []} -> ok ;
1368
+ _ -> Module :members_changed (
1369
+ Args , get_pids (Births ), get_pids (Deaths ))
1370
+ end ,
1371
+ {Result , check_neighbours (State # state { view = View })}.
1383
1372
1384
1373
handle_callback_result ({Result , State }) ->
1385
1374
if_callback_success (
0 commit comments