Skip to content

Instantly share code, notes, and snippets.

View cmeiklejohn's full-sized avatar
Always working.

Christopher S. Meiklejohn cmeiklejohn

Always working.
View GitHub Profile
def test_vc_diagram():
clock_a = VectorClock()
clock_b = VectorClock()
clock_c = VectorClock()
import copy
def test_vector_clock_create():
assert VectorClock()
def test_vector_clock_value():
clock = VectorClock()
assert clock.value("a") == 0

Keybase proof

I hereby claim:

  • I am cmeiklejohn on github.
  • I am cmeiklejohn ( on keybase.
  • I have a public key ASAbjNbPtSzfJWtdZBFbQD4LnTdhOB1PJ1UA-bGk6l4FHAo

To claim this, I am signing this object:

cmeiklejohn / docker-compose.yaml
Created September 3, 2019 16:41
compose template for 17-313, fall 2019 recitation 2
version: "3"
restart: always
cmeiklejohn /
Last active January 27, 2019 16:52
Protocol implementation and verification from Demers et al. "Epidemic Algorithms for Replicated Database Maintenance"



Protocol Implementation: Direct Mail

We start by creating a gen_server for the direct mail protocol implementation. This implementation will support two calls broadcast, for sending a message, and update, for updating the membership received from the Partisan system for when view changes occur. For state at each node, we'll track the currently known membership, so we don't have to look it up every time we want to make a broadcast.

%% API

Understand the change that we're trying to make and where it fits into the system conceptually.

In our case, we're looking at adding another membership strategy to Partisan. The membership strategy we're looking to add is a superset of one of the existing strategies (HiScamp is a superset of Scamp functionality.)

Determine the application programming interface used between this component and the rest of the system.

Each membership strategy in partisan uses a well defined interface -- figure out how this interacts with the rest of the system and how the existing strategy (Scamp, in this case) operates using this API.

Design a plan for extending this isolated component incrementally.

kube running for unir-567495c6d5-zmtmf
kube running for unir-567495c6d5-r2pj8
kube running for unir-567495c6d5-5mq7d
kube running for unir-567495c6d5-2l98t