|
386 | 386 | -define(HIBERNATE_AFTER_MIN, 1000). |
387 | 387 | -define(DESIRED_HIBERNATE, 10000). |
388 | 388 | -define(BROADCAST_TIMER, 25). |
| 389 | +-define(VERSION_START, 0). |
389 | 390 | -define(SETS, ordsets). |
390 | 391 | -define(DICT, orddict). |
391 | 392 |
|
@@ -515,7 +516,7 @@ group_members(Server) -> |
515 | 516 | init([GroupName, Module, Args]) -> |
516 | 517 | {MegaSecs, Secs, MicroSecs} = now(), |
517 | 518 | random:seed(MegaSecs, Secs, MicroSecs), |
518 | | - Self = make_member(self()), |
| 519 | + Self = make_member(GroupName), |
519 | 520 | gen_server2:cast(self(), join), |
520 | 521 | {ok, #state { self = Self, |
521 | 522 | left = {Self, undefined}, |
@@ -1007,7 +1008,7 @@ prune_or_create_group(Self, GroupName) -> |
1007 | 1008 | mnesia:sync_transaction( |
1008 | 1009 | fun () -> GroupNew = #gm_group { name = GroupName, |
1009 | 1010 | members = [Self], |
1010 | | - version = 0 }, |
| 1011 | + version = ?VERSION_START }, |
1011 | 1012 | case mnesia:read({?GROUP_TABLE, GroupName}) of |
1012 | 1013 | [] -> |
1013 | 1014 | mnesia:write(GroupNew), |
@@ -1241,11 +1242,15 @@ prepare_members_state(MembersState) -> |
1241 | 1242 | build_members_state(MembersStateList) -> |
1242 | 1243 | ?DICT:from_list(MembersStateList). |
1243 | 1244 |
|
1244 | | -make_member(Pid) -> {rabbit_guid:guid(), Pid}. |
| 1245 | +make_member(GroupName) -> |
| 1246 | + {case read_group(GroupName) of |
| 1247 | + #gm_group { version = Version } -> Version; |
| 1248 | + {error, not_found} -> ?VERSION_START |
| 1249 | + end, self()}. |
1245 | 1250 |
|
1246 | | -get_pid({_Guid, Pid}) -> Pid. |
| 1251 | +get_pid({_Version, Pid}) -> Pid. |
1247 | 1252 |
|
1248 | | -get_pids(Ids) -> [Pid || {_Guid, Pid} <- Ids]. |
| 1253 | +get_pids(Ids) -> [Pid || {_Version, Pid} <- Ids]. |
1249 | 1254 |
|
1250 | 1255 | %% --------------------------------------------------------------------------- |
1251 | 1256 | %% Activity assembly |
|
0 commit comments