From d5383e67b2ba89d5bef76d770e3cfd48d8ec3810 Mon Sep 17 00:00:00 2001 From: Andre Henriques Date: Sun, 21 Jan 2024 20:24:22 +0000 Subject: [PATCH] chore: remove action --- lib/paxos.ex | 31 +++++++------------------------ lib/test_script.exs | 38 +++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 43 deletions(-) diff --git a/lib/paxos.ex b/lib/paxos.ex index 2a5030c..828a31d 100644 --- a/lib/paxos.ex +++ b/lib/paxos.ex @@ -168,7 +168,7 @@ defmodule Paxos do end # Guarantees that a specific state exists for a specific instance - defp has_or_create(state, inst, value \\ nil, pid_to_inform \\ nil, action \\ nil) do + defp has_or_create(state, inst, value \\ nil, pid_to_inform \\ nil) do or_state state.instmap[inst] == nil do instmap = Map.put(state.instmap, inst, %{ @@ -183,7 +183,6 @@ defmodule Paxos do accepted_value: nil, pid_to_inform: pid_to_inform, has_sent_accept: false, - action: action, has_sent_prepare: false, }) @@ -206,7 +205,7 @@ defmodule Paxos do # This is the run/recieve function # All the messages that are handled by this function are: # {:ele_trust, proc} -> - # {:propose, inst, value, pid_to_inform, action} -> + # {:propose, inst, value, pid_to_inform} -> # {:rb_deliver, proc, {:other_propose, inst, value}} -> # {:rb_deliver, proc, {:prepare, proc, inst, ballot}} -> # {:nack, inst, ballot} -> @@ -226,8 +225,8 @@ defmodule Paxos do end) # Handles a proposal message from the parent process - {:propose, inst, value, pid_to_inform, action} -> - log("#{state.name} - Propose #{inspect(inst)} with action #{inspect(action)}") + {:propose, inst, value, pid_to_inform} -> + log("#{state.name} - Propose #{inspect(inst)}") cond do has_finished(state, inst, true) -> @@ -235,19 +234,9 @@ defmodule Paxos do send(pid_to_inform, {:decision, inst, state.decided[inst]}) state - action == :increase_ballot_number -> - log("#{state.name} - Got request to increase ballot number for inst #{inst}") - state = has_or_create(state, inst) - - set_instmap do - %{map| ballot: Ballot.inc(map.ballot)} - end - - state - not Map.has_key?(state.instmap, inst) -> EagerReliableBroadcast.broadcast(state.name, {:other_propose, inst, value}) - state = has_or_create(state, inst, value, pid_to_inform, action) + state = has_or_create(state, inst, value, pid_to_inform) prepare(state, inst) state.instmap[inst].value == nil -> @@ -257,7 +246,6 @@ defmodule Paxos do %{ map | value: value, pid_to_inform: pid_to_inform, - action: action, } end @@ -553,11 +541,6 @@ defmodule Paxos do or_state state.instmap[inst].accepted >= floor(length(state.processes) / 2) + 1 do value = state.instmap[inst].ballot_value - if state.instmap[inst].action == :kill_before_decision do - log("#{state.name} - Leader has action to die before decision #{inspect({:decide, inst, value})}") - Process.exit(self(), :kill) - end - EagerReliableBroadcast.broadcast( state.name, {:decide, inst, value} @@ -582,8 +565,8 @@ defmodule Paxos do @doc """ Send the propose message to the paxos replica and waits for a response from the correct instance """ - def propose(pid, inst, value, t, action \\ nil) do - send(pid, {:propose, inst, value, self(), action}) + def propose(pid, inst, value, t) do + send(pid, {:propose, inst, value, self()}) propose_loop(inst, t) end diff --git a/lib/test_script.exs b/lib/test_script.exs index 47207cc..75af51d 100755 --- a/lib/test_script.exs +++ b/lib/test_script.exs @@ -66,25 +66,25 @@ test_suite = [ # Aditional Test functions - {&PaxosTestAditional.run_leader_crash_simple_before_decision/3, TestUtil.get_dist_config(host, 5), 10, - "Leader crashes right before decision, no concurrent ballots, 5 nodes"}, - {&PaxosTestAditional.run_leader_crash_simple_before_decision/3, TestUtil.get_local_config(5), 10, - "Leader crashes right before decision, no concurrent ballots, 5 local procs"}, - - {&PaxosTestAditional.run_non_leader_send_propose_after_leader_elected/3, TestUtil.get_dist_config(host, 5), 10, - "Non-Leader proposes after leader is elected, 5 nodes"}, - {&PaxosTestAditional.run_non_leader_send_propose_after_leader_elected/3, TestUtil.get_local_config(5), 10, - "Non-Leader proposes after leader is elected, 5 local procs"}, - - {&PaxosTestAditional.run_leader_should_nack_simple/3, TestUtil.get_dist_config(host, 5), 10, - "Leader should nack before decision and then come to decision, no concurrent ballots, 5 nodes"}, - {&PaxosTestAditional.run_leader_should_nack_simple/3, TestUtil.get_local_config(5), 10, - "Leader should nack before decision and then come to decision, 5 local procs"}, - - {&PaxosTestAditional.run_non_leader_should_nack_simple/3, TestUtil.get_dist_config(host, 5), 10, - "Non-Leader should nack before decision and then come to decision, no concurrent ballots, 5 nodes"}, - {&PaxosTestAditional.run_non_leader_should_nack_simple/3, TestUtil.get_local_config(5), 10, - "Non-Leader should nack before decision and then come to decision, 5 local procs"}, +# {&PaxosTestAditional.run_leader_crash_simple_before_decision/3, TestUtil.get_dist_config(host, 5), 10, +# "Leader crashes right before decision, no concurrent ballots, 5 nodes"}, +# {&PaxosTestAditional.run_leader_crash_simple_before_decision/3, TestUtil.get_local_config(5), 10, +# "Leader crashes right before decision, no concurrent ballots, 5 local procs"}, +# +# {&PaxosTestAditional.run_non_leader_send_propose_after_leader_elected/3, TestUtil.get_dist_config(host, 5), 10, +# "Non-Leader proposes after leader is elected, 5 nodes"}, +# {&PaxosTestAditional.run_non_leader_send_propose_after_leader_elected/3, TestUtil.get_local_config(5), 10, +# "Non-Leader proposes after leader is elected, 5 local procs"}, +# +# {&PaxosTestAditional.run_leader_should_nack_simple/3, TestUtil.get_dist_config(host, 5), 10, +# "Leader should nack before decision and then come to decision, no concurrent ballots, 5 nodes"}, +# {&PaxosTestAditional.run_leader_should_nack_simple/3, TestUtil.get_local_config(5), 10, +# "Leader should nack before decision and then come to decision, 5 local procs"}, +# +# {&PaxosTestAditional.run_non_leader_should_nack_simple/3, TestUtil.get_dist_config(host, 5), 10, +# "Non-Leader should nack before decision and then come to decision, no concurrent ballots, 5 nodes"}, +# {&PaxosTestAditional.run_non_leader_should_nack_simple/3, TestUtil.get_local_config(5), 10, +# "Non-Leader should nack before decision and then come to decision, 5 local procs"},