Skip to content
Commit Detail

Commit c311064

Author
Rachel Chen <rachel@chens.email> 2022-08-09 19:05:46 -0700
Parents
dff7ce4
Tree
774fd70
chord/kv: partial atomic ring maintenance

During the process of implementing certmagic.Storage over specter KV,
and validating the v1 implementation of key consistency, it was
discovered that concurrent joins can lead to temporary loss of key
consistency, which means certmagic will "lose" the writes it just issued
mere milliseconds ago.

The atomic ring maintenance algorithm proposed by Ali Ghodsi is shown to
be correct and can maintain key consistency during membership change,
at the expense of availability (because of asynchronous network). With
some minor modifications, such algorithm is partially implemented (albeit
deviated greatly), and shown to be maintaining key consistency just
enough for our limited purpose.

Changes in this commit:
acme: implement certmagic.Storage using specter KV backend allowing for
	self bootstrapping
chord/kv: implement atomic ring maintenance with the assumption that the
	joining will not fail during the process
spec/chord: added extended interfaces to allow for atomic join
spec/protocol: added corresponding RPCs for extended interfaces
cmd/server: use specter KV backed storage for certmagic
cmd/client: allow specifying tunnel target for test client
Dockerfile: added validator build target, added test client build target
README: added reference to Ali Ghodsi's paper and dissertation

Files changed

45 files changed+10 added~34 modified-1 deleted