Fork me on GitHub
#onyx
<
2016-11-06
>
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?

michaeldrogalis18:11:08

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.

michaeldrogalis18:11:44

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

michaeldrogalis18:11:06

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