for a distributed algorithms class at EPFL we were asked to implement a reliable causal order broadcast algorithm in order to create a distributed data storage system across several independent processes

each process maintains its individual storage and therefore needs to coordinate its actions by broadcasting messages

a process can either write a value associated to a key or read the value of a key - hence two kind of possible messages: "put(key, value)" or "get(key)"

i chose to implement vector clock algorithm in java

to validate the correctness of the written code, one needs to analyse the plaintext output log of each running process - this task is cumbersome and error prone

this is why i created a program which takes text logs as inputs and outputs a schematic view of the execution of each process - therefore it is easier to see when and by whom messages have been broadcasted or delivered as well as the storage state of each process

each black line represents one process - alternate colored columns give time indication

a white rectangle followed by a colored circle indicates a broadcasted message - a thin colored rectangle indicates a message delivery - vector clock state is also printed

plain text log VS visual log

name date tech java javascript distributed algorithms vector clocks
credits Jonathan Link