this repo has no description
2
fork

Configure Feed

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

Restart multiple nodes and fix coordinator sort bug

garrison 73a22ac6 12d7a291

+32 -8
+1 -1
lib/servers/coordinator.ex
··· 815 815 # VSR paper specifies sort by {last_normal_view_number, op_number} 816 816 # (from_replica_id here is used to break ties for determinism) 817 817 {dvc.last_normal_view_number, dvc.op_number, dvc.from_replica_id} 818 - end) 818 + end, :desc) 819 819 820 820 assert length(dvc_messages) >= state.quorum_size 821 821
+26 -6
lib/workloads/restart_nodes.ex
··· 1 1 defmodule Hobbes.Workloads.RestartNodes do 2 2 alias Hobbes.Construct.SimServer 3 3 4 + import Hobbes.Workloads 5 + 4 6 @behaviour Hobbes.Workloads.Workload 5 7 6 8 defp restart_random_node do 7 9 nodes = SimServer.list_nodes() 8 - #node = Enum.random(nodes) 9 - node = hd(nodes) 10 + node = Enum.random(nodes) 10 11 11 12 result = SimServer.restart_node(node, 4000) 12 13 {node, result} 13 14 end 14 15 15 16 def run(%{}, opts) do 16 - delay = Keyword.get(opts, :delay, 3000) 17 + delay_ms = Keyword.get(opts, :delay_ms, 3000) 18 + tick_ms = Keyword.get(opts, :tick_ms, 1000) 19 + count = Keyword.get(opts, :count, 1) 17 20 18 - SimServer.sleep(delay) 19 - result = restart_random_node() 21 + SimServer.sleep(delay_ms) 22 + 23 + results = 24 + 1..count 25 + |> Enum.map(fn _i -> 26 + result = restart_random_node() 27 + time = SimServer.current_time() 28 + SimServer.sleep(tick_ms) 29 + 30 + {time, result} 31 + end) 32 + 33 + results_table = 34 + results 35 + |> Enum.map(fn {time, result} -> 36 + [pretty_number(round(time / 1000)), inspect(result)] 37 + end) 38 + |> table(cols: ["timestamp (ms)", "result"]) 20 39 21 40 { 22 41 :ok, 23 42 """ 24 - Result: #{inspect(result)} 43 + Results: 44 + #{results_table} 25 45 """, 26 46 } 27 47 end
+5 -1
test/hobbes_test.exs
··· 168 168 client_tick_ms: 300, 169 169 duration_ms: 20_000, 170 170 ]}, 171 - {Workloads.RestartNodes, [delay_ms: 3000, server_type: Hobbes.Servers.Coordinator]}, 171 + {Workloads.RestartNodes, [ 172 + delay_ms: 3000, 173 + tick_ms: 1000, 174 + count: 3, 175 + ]}, 172 176 ], HobbesTest.SimOpts.sim_opts(name: test, preset: :read_write)) 173 177 end 174 178 end