make integration_test verbose=on only=TestRestartServers parts to create: protobuf server protobuf client Coordinator has Datastore and ConcensusEngine ConsensusEngine has a collection of ClusterServers (one is the localhost) and the ProtobufServer ClusterServer has protobuf client (automatically tries to connect unless it's localhost) ProtobufServer has a datastore to answer queries ringLocations: [{servers: []}, {servers: []}] startup: create db start protobuf server start clusterConsensus for each server, createClient and connect write comes in: split it into discreet ring locations (time series objects with points all on the same ring loc) ring location is figured by hashing db, series, and time (rounded to 5 min interval) proxy to one of the servers that have the ring location On the server we proxied to... log the write... assign the operation a sequence number (should be an operation sequence number, have one per ring location) assign points sequence numbers (can have one global incrementer) log it - - serialized operation attempt to write to other servers in ring receiving server tracks for a given server id and ring location, what the last sequence was for receiving server, if it's not the next in the sequence, set aside and request missing ops write the value to key: point sequence numbers: first two bytes is the server id. Guaranteed unique in a cluster the other six bytes are the sequence number. every 5 minutes create a marker