Draft 0.5 is now complete, I think, hooray!
This commit is contained in:
parent
fa89b03d21
commit
9c58a635f1
1 changed files with 32 additions and 17 deletions
|
@ -552,7 +552,7 @@ unanimous value $V_{u}$ for the projection at epoch $E$, then $V_{u}$
|
||||||
is use to repair all projections stores at $E$ that contain $\bot$
|
is use to repair all projections stores at $E$ that contain $\bot$
|
||||||
values. If the value of $K$ is not unanimous, then the ``highest
|
values. If the value of $K$ is not unanimous, then the ``highest
|
||||||
ranked value'' $V_{best}$ is used for the repair; see
|
ranked value'' $V_{best}$ is used for the repair; see
|
||||||
Section~\ref{sub:projection-ranking} for a description of projection
|
Section~\ref{sub:ranking-projections} for a description of projection
|
||||||
ranking.
|
ranking.
|
||||||
|
|
||||||
\subsection{Writing to public projection stores}
|
\subsection{Writing to public projection stores}
|
||||||
|
@ -796,10 +796,8 @@ is used by the flowchart and throughout this section.
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[Author] The name of the server that created the projection.
|
\item[Author] The name of the server that created the projection.
|
||||||
|
|
||||||
\item[Rank] Assigns a numeric score to a projection. Rank is based on the
|
\item[Rank] Assigns a numeric score to a projection, see
|
||||||
epoch number (higher wins), chain length (larger wins), number \&
|
Section~\ref{sub:ranking-projections}.
|
||||||
state of any repairing members of the chain (larger wins), and node
|
|
||||||
name of the author server (as a tie-breaking criteria).
|
|
||||||
|
|
||||||
\item[E] The epoch number of a projection.
|
\item[E] The epoch number of a projection.
|
||||||
|
|
||||||
|
@ -978,7 +976,7 @@ knows that an environment change has happened and wishes to trigger a
|
||||||
response prior to the next timer firing.
|
response prior to the next timer firing.
|
||||||
|
|
||||||
It's recommended that the timer interval be staggered according to the
|
It's recommended that the timer interval be staggered according to the
|
||||||
participant ranking rules in Section~\ref{sub:projection-ranking};
|
participant ranking rules in Section~\ref{sub:ranking-projections};
|
||||||
higher-ranked servers use shorter timer intervals. Timer staggering
|
higher-ranked servers use shorter timer intervals. Timer staggering
|
||||||
is not required, but the total amount of churn (as measured by
|
is not required, but the total amount of churn (as measured by
|
||||||
suggested projections that are ignored or immediately replaced by a
|
suggested projections that are ignored or immediately replaced by a
|
||||||
|
@ -1096,8 +1094,28 @@ trigger the projection calculation subsystem to create an alternative,
|
||||||
safe projection $P_{latest+1}$ that will hopefully create a unanimous
|
safe projection $P_{latest+1}$ that will hopefully create a unanimous
|
||||||
epoch $E+1$.
|
epoch $E+1$.
|
||||||
|
|
||||||
See Section~\ref{sub:humming-rules-and-invariants} for detail about
|
The transition from $P_{current} \rightarrow P_{latest}$ is checked
|
||||||
these rules and invariants.
|
for safety and sanity. The conditions used for the check include:
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item The Erlang data types of all record members are correct.
|
||||||
|
\item UPI, down, and repairing lists contain no duplicates and are in fact
|
||||||
|
mutually disjoint.
|
||||||
|
\item The author node is not down (as far as we can tell).
|
||||||
|
\item Any server $N$ that was added to $P_{latest}$'s UPI list must
|
||||||
|
appear in the tail the UPI list, and $N$ must have been in
|
||||||
|
$P_{current}$'s repairing list.
|
||||||
|
\item No re-ordering of the UPI list members: any server $S$ that is
|
||||||
|
in $P_{latest}$'s UPI list that was not present in $P_{current}$'s
|
||||||
|
UPI list must in the same position as it appeared in $P_{current}$'s
|
||||||
|
UPI list. The same re-reordering restriction applies to all
|
||||||
|
servers in $P_{latest}$'s repairing list relative to
|
||||||
|
$P_{current}$'s repairing list.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
The safety check may be performed pair-wise once or pair-wise across
|
||||||
|
the entire history sequence of a server/FLU's private projection
|
||||||
|
store.
|
||||||
|
|
||||||
\subsection{Additional discussion of flapping state}
|
\subsection{Additional discussion of flapping state}
|
||||||
\label{sub:flapping-state}
|
\label{sub:flapping-state}
|
||||||
|
@ -1246,10 +1264,13 @@ where ``flapping'' will continue on every humming consensus iteration
|
||||||
until all asymmetric partition disappears. Such proof is an area of
|
until all asymmetric partition disappears. Such proof is an area of
|
||||||
future work.
|
future work.
|
||||||
|
|
||||||
\subsection{ranking}
|
\subsection{Ranking projections}
|
||||||
\label{sub:projection-ranking}
|
\label{sub:ranking-projections}
|
||||||
|
|
||||||
TODO
|
A projection's rank is based on the epoch number (higher always wins),
|
||||||
|
chain length (larger wins), number \& state of any repairing members
|
||||||
|
of the chain (larger wins), and node name of the author server (as a
|
||||||
|
tie-breaking criteria).
|
||||||
|
|
||||||
\section{``Split brain'' management in CP Mode}
|
\section{``Split brain'' management in CP Mode}
|
||||||
\label{sec:split-brain-management}
|
\label{sec:split-brain-management}
|
||||||
|
@ -1908,12 +1929,6 @@ immensely: Justin Sheehy, Kota Uenishi, Shunichi Shinohara, Andrew
|
||||||
Stone, Jon Meredith, Chris Meiklejohn, Mark Allen, and Zeeshan
|
Stone, Jon Meredith, Chris Meiklejohn, Mark Allen, and Zeeshan
|
||||||
Lakhani.
|
Lakhani.
|
||||||
|
|
||||||
\section{TODO: orphaned text \& missing stuff}
|
|
||||||
|
|
||||||
\subsection{rules \& invariants}
|
|
||||||
\label{sub:humming-rules-and-invariants}
|
|
||||||
|
|
||||||
|
|
||||||
\bibliographystyle{abbrvnat}
|
\bibliographystyle{abbrvnat}
|
||||||
\begin{thebibliography}{}
|
\begin{thebibliography}{}
|
||||||
\softraggedright
|
\softraggedright
|
||||||
|
|
Loading…
Reference in a new issue