I had to drop Macbooks because it's NVMe SSD is soldered and is not upgradable.
Thinkpad X1 Carbon is a decent choice, but they all seemed to be limited to 1920x1080 screen resolution for some reason -- which is a big-no for me.
179 karma · joined August 11, 2009
I had to drop Macbooks because it's NVMe SSD is soldered and is not upgradable.
Thinkpad X1 Carbon is a decent choice, but they all seemed to be limited to 1920x1080 screen resolution for some reason -- which is a big-no for me.
A note worthy point is that, Paxos actually expects proposers to drop their value and carry-forward someone-else's value to complete the consensus. This is typically not an intended behavior from client's point of view, but proposers role is to form the consensus, not push their value.
Read phase is basically understanding if there is any value that could've been chosen when F nodes are unavailable.
Determine phase is to choose to carry-forward any value (if-any) from the Read phase or use the new value from the client.
Write phase is to actually ask majority of the acceptors to save the value selected in the Determine phase.
I really liked their `check` proposal. I hope they will bring it back to life.
Phase 1.
(a) A proposer selects a proposal number n and sends a prepare request with number n to a majority of acceptors.
(b) If an acceptor receives a prepare request with number n greater than that of any prepare request to which it has already responded, then it responds to the request with a promise not to accept any more proposals numbered less than n and with the highest-numbered proposal (if any) that it has accepted.
Important part of the statement is
...with a promise not to accept any more proposals numbered less than n...
So, Phase-1 promise is not on the proposer-identity, but on the proposal-number.Algorithm is not tied to the proposer identity (uuid or fqdn or ip, etc.) The promise in Phase-1 response is not to the proposer, but to the proposal-number.
In your model, proposer cannot change his identity, between Phase-1 and Phase-2 which is not a constraint imposed by the algorithm.
Proposer-A received Phase2 votes from nodes n_1,...n_f and Proposer-B received one vote from n_f+1 when power is off and other nodes n_f+2, n_f+3...n_2f+1 don't know anything about the Phase2.
Now, consider the case when power is back and only the first F+1 nodes came back online. System is expected to continue with F+1 live nodes.
Proposer-C now does Phase-1 with the same proposal-number. He is expected to pick the already voted value associated with the max proposal-number from the Phase-1 responses, but there are two different values and he can't determine what to pick.
Recovery path needs to identify if there was a chosen value only from F+1 nodes (out of 2*F+1 nodes total).
When two proposers with same proposal-number, but different values have partially executed the protocol before the crash, then you would end up with all F+1 nodes with same proposal number indicating successful consensus previously, but with divergent values.
protected override void Propose(Instance r)
{
proposalNumber = minNumber + 1;
Broadcast(r, MessageType.Propose, proposalNumber);
}I replaced all my custom keybindings into transient under just one C-j keybinding. Now I have a meaningful popup window with my custom keybindings, so I don't have to remember the less-frequently used bindings.
Also, transient has this one cool feature, where you can configure a timeout to delay the popup window, which is also nice.
If you (or someone) could tell me number of network-hops and Disk-IOs involved in performing an RPC using Kafka streams, I will definitely take a look at them.
If a service can't assume local state, it creates unnecessary design overhead. For example, you cannot achieve exactly-once semantics between two services without local-state. If you replace local-state with message-queues, you just turned 1-network-1-disk op into 5-network-3-disk op and introduced loads of other problems.
This issue is so wide spread in the industry...it makes me sad.
People-Paying would love to start from zero.
People-Collecting would not want that.
If you think about it as two groups (theoretically): one group receives monthly, recurring payments from the other group.
In practice, individuals move from one group to another group and back, etc. based on life circumstances.
But here is a catch: Due to a bug or design, if an individual (or few individuals or families) could always stay in the receiving-group, he can live for free till end of time (or system halts/collapses.)
What will blow your mind is, are there such individuals or families in the system by design?