riak / src / riak_ring_gossiper.erl

Diff from to

src/riak_ring_gossiper.erl

     after Interval ->
             riak_eventer:notify(riak_ring_gossiper, interval, interval),
             {ok, MyRing} = riak_ring_manager:get_my_ring(),
-            Indices = [I || {I,_} <- riak_ring:all_owners(MyRing)],
-            gen_server:cast({riak_vnode_master, node()}, {start_vnode, 
-               lists:nth(crypto:rand_uniform(1, length(Indices)+1), Indices)}),
+            VNodes2Start = case length(riak_ring:all_members(MyRing)) of
+               1 -> riak_ring:my_indices(MyRing);
+               _ -> [riak_ring:random_other_index(MyRing)|
+                     riak_ring:my_indices(MyRing)]
+            end,
+            [gen_server:cast({riak_vnode_master, node()},
+                   {start_vnode, I}) || I <- VNodes2Start],                             
             case Write of
                 no_write -> nop;
                 write -> riak_ring_manager:write_ringfile()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.