summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2014-04-21 12:57:30 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2014-04-21 12:57:30 +0100
commitc38a44c55b42f87797dc17e4cea0e96b6a640b5c (patch)
treec1724be44e4e9a08af1e66c34addc4fb57b6c556
parent89356db4a339ada3764dc36024a3ba20ca50e102 (diff)
downloadrabbitmq-server-c38a44c55b42f87797dc17e4cea0e96b6a640b5c.tar.gz
simplify: get rid of tmp var
-rw-r--r--src/gm.erl107
1 files changed, 50 insertions, 57 deletions
diff --git a/src/gm.erl b/src/gm.erl
index 1c7a8894..3c7ac964 100644
--- a/src/gm.erl
+++ b/src/gm.erl
@@ -1091,71 +1091,64 @@ read_group(GroupName) -> mnesia:read({?GROUP_TABLE, GroupName}).
write_group(Group) -> mnesia:write(?GROUP_TABLE, Group, write), Group.
prune_or_create_group(Self, GroupName, TxnFun) ->
- Group = TxnFun(
- fun () ->
- GroupNew = #gm_group { name = GroupName,
- members = [Self],
- version = get_version(Self) },
- case read_group(GroupName) of
- [] ->
- write_group(GroupNew);
- [Group1 = #gm_group { members = Members }] ->
- case lists:any(fun is_member_alive/1, Members) of
- true -> Group1;
- false -> write_group(GroupNew)
- end
+ TxnFun(
+ fun () ->
+ GroupNew = #gm_group { name = GroupName,
+ members = [Self],
+ version = get_version(Self) },
+ case read_group(GroupName) of
+ [] ->
+ write_group(GroupNew);
+ [Group = #gm_group { members = Members }] ->
+ case lists:any(fun is_member_alive/1, Members) of
+ true -> Group;
+ false -> write_group(GroupNew)
end
- end),
- Group.
+ end
+ end).
record_dead_member_in_group(Member, GroupName, TxnFun) ->
- Group =
- TxnFun(
- fun () -> [Group1 = #gm_group { members = Members, version = Ver }] =
- mnesia:read({?GROUP_TABLE, GroupName}),
- case lists:splitwith(
- fun (Member1) -> Member1 =/= Member end, Members) of
- {_Members1, []} -> %% not found - already recorded dead
- Group1;
- {Members1, [Member | Members2]} ->
- Members3 = Members1 ++ [{dead, Member} | Members2],
- write_group(Group1 #gm_group { members = Members3,
- version = Ver + 1 })
- end
- end),
- Group.
+ TxnFun(
+ fun () -> [Group = #gm_group { members = Members, version = Ver }] =
+ mnesia:read({?GROUP_TABLE, GroupName}),
+ case lists:splitwith(
+ fun (Member1) -> Member1 =/= Member end, Members) of
+ {_Members1, []} -> %% not found - already recorded dead
+ Group;
+ {Members1, [Member | Members2]} ->
+ Members3 = Members1 ++ [{dead, Member} | Members2],
+ write_group(Group #gm_group { members = Members3,
+ version = Ver + 1 })
+ end
+ end).
record_new_member_in_group(GroupName, Left, NewMember, Fun, TxnFun) ->
- {Result, Group} =
- TxnFun(
- fun () ->
- [#gm_group { members = Members, version = Ver } = Group1] =
- mnesia:read({?GROUP_TABLE, GroupName}),
- {Prefix, [Left | Suffix]} =
- lists:splitwith(fun (M) -> M =/= Left end, Members),
- Members1 = Prefix ++ [Left, NewMember | Suffix],
- Group2 = Group1 #gm_group { members = Members1,
- version = Ver + 1 },
- {Fun(Group2), write_group(Group2)}
- end),
- {Result, Group}.
+ TxnFun(
+ fun () ->
+ [Group = #gm_group { members = Members, version = Ver }] =
+ mnesia:read({?GROUP_TABLE, GroupName}),
+ {Prefix, [Left | Suffix]} =
+ lists:splitwith(fun (M) -> M =/= Left end, Members),
+ Group1 = Group #gm_group {
+ members = Prefix ++ [Left, NewMember | Suffix],
+ version = Ver + 1 },
+ {Fun(Group1), write_group(Group1)}
+ end).
erase_members_in_group(Members, GroupName, TxnFun) ->
DeadMembers = [{dead, Id} || Id <- Members],
- Group =
- TxnFun(
- fun () ->
- [Group1 = #gm_group { members = [_|_] = Members1,
- version = Ver }] =
- mnesia:read({?GROUP_TABLE, GroupName}),
- case Members1 -- DeadMembers of
- Members1 -> Group1;
- Members2 -> write_group(
- Group1 #gm_group { members = Members2,
- version = Ver + 1 })
- end
- end),
- Group.
+ TxnFun(
+ fun () ->
+ [Group = #gm_group { members = [_|_] = Members1,
+ version = Ver }] =
+ mnesia:read({?GROUP_TABLE, GroupName}),
+ case Members1 -- DeadMembers of
+ Members1 -> Group;
+ Members2 -> write_group(
+ Group #gm_group { members = Members2,
+ version = Ver + 1 })
+ end
+ end).
maybe_erase_aliases(State = #state { self = Self,
group_name = GroupName,