this repo has no description
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Build initial teams during bootstrap

garrison 86457a1a 882a446e

+32 -12
+29 -12
lib/servers/manager.ex
··· 779 779 |> Enum.reverse() 780 780 end 781 781 782 - defp build_seed_meta(%Config{initial_shards: shards}, storage_ids) do 783 - server_pairs = build_server_meta(storage_ids) 784 - key_pairs = build_key_meta(shards, storage_ids) 782 + defp build_seed_meta(%Config{} = config, storage_ids) do 783 + server_pairs = build_server_meta(config, storage_ids) 784 + key_pairs = build_key_meta(config, storage_ids) 785 785 786 786 other_pairs = [ 787 787 {next_shard_move_id_key(), Keyset.pack([0])}, ··· 790 790 Enum.sort(server_pairs ++ key_pairs ++ other_pairs) 791 791 end 792 792 793 - defp build_server_meta(storage_ids) do 794 - storage_ids 795 - |> Enum.map(fn id -> 796 - { 797 - server_tags_prefix() <> Integer.to_string(id), 798 - "", 799 - } 800 - end) 793 + defp build_server_meta(%Config{num_replicas: num_replicas}, storage_ids) do 794 + server_tag_pairs = 795 + storage_ids 796 + |> Enum.map(fn id -> 797 + { 798 + server_tags_prefix() <> Integer.to_string(id), 799 + "", 800 + } 801 + end) 802 + 803 + team_servers_pairs = 804 + storage_ids 805 + |> Enum.chunk_every(num_replicas, num_replicas, :discard) 806 + |> Enum.with_index() 807 + |> Enum.map(fn {server_ids, team_id} -> 808 + assert length(server_ids) == num_replicas 809 + { 810 + team_servers_prefix() <> Keyset.pack([team_id]), 811 + Keyset.pack(server_ids), 812 + } 813 + end) 814 + 815 + assert length(team_servers_pairs) > 0 816 + 817 + server_tag_pairs ++ team_servers_pairs 801 818 end 802 819 803 - defp build_key_meta(shards, storage_ids) do 820 + defp build_key_meta(%Config{initial_shards: shards}, storage_ids) do 804 821 teams = Enum.chunk_every(storage_ids, 3, 3, :discard) 805 822 806 823 shards
+3
lib/utils.ex
··· 23 23 defmacro all_keys_prefix, do: "" 24 24 defmacro all_keys_end, do: meta_end() 25 25 26 + defmacro team_servers_prefix, do: "\xFF/team_servers/" 27 + defmacro team_servers_end, do: "\xFF/team_servers0" 26 28 defmacro server_tags_prefix, do: "\xFF/st/" 27 29 defmacro server_tags_end, do: "\xFF/st0" 30 + 28 31 defmacro key_servers_prefix, do: "\xFF/key_servers/" 29 32 defmacro key_servers_end, do: "\xFF/key_servers0" 30 33 defmacro server_keys_prefix, do: "\xFF/sk/"