Fork me on GitHub
Drew Verlee14:11:52

If i understand things correctly the information logged to bookkeeper is considered fault tolerant. Every time an aggregation needs to be updated, we a send a message to a state machine update to a SM on another node. Which i assume looks something like 1 --- set-value ---> 2 or simply 1 ---> 2. Given that understanding i'm not clear on the log for the conj aggregation:

(defn conj-aggregation-apply-log [window state v]
  ;; Log command is not needed for single transition type
  (clojure.core/conj state v))
Is this sending the data [:conj :state 5] across the wire so that the receiving peer can conj 5 to its already held list? or is it sending the entire vector across the wire [1 2 3 4 5] and then the receiving peer simply replaces what it had before?


Hm, I’m not sure that comment belongs in that function to be honest. You’re looking at the “apply-log” functions. Those are the functions that take state machine messages and apply them to the local state value.


It’s not sending the entire vector every time. The conj value gets built up in a piece-wise aggregate.


You can use onyx-local-rt and construct a simple window to see how these functions are used.