Commit Detail
Commit c311064
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