Change propagation and design implications
Nodlin propagates payload-free invalidation events through a dependency graph. Nodes recompute from current state, allowing hot nodes to coalesce many updates before recalculating. Once propagation stops, the graph converges to a consistent state.
The following shows a step-by-step example of a node update of how this works.
1. A change occurs
A user updates a node.
e.g. Post transaction to account
Only that node is written.
2. Invalidation Propogates
The node emits payload-free invalidation events.
The events mean: “Something affecting you changed.”
They do not carry data.
This allows:
- deduplication
- out-of-order processing
- massive fan-out scalability
3. Dependency Propagation
Propagation follows the dependency graph.
Example hierarchy:
Leaf Account -> Parent Account -> Division Total -> Company Total
Propagation can travel long distances in the graph.
This is expected.
4. Hot Nodes Naturally Form
Nodes with a high fan-in become hot.
Example: node ‘Company total account’
Many upstream updates affect it.
Instead of recomputing repeatedly (processing many events), the events are deduplicated.
5. Coalesced Recompute
The hot node eventually recomputes once using the latest state.
Pseudocode:
read related nodes
recompute aggregate
store result
emit invalidations
This absorbs many upstream changes in a single computation.
6. Convergence
Once all invalidations are processed, the graph stabilises.
The system becomes consistent.
This is called: ‘consistency at quiescence’
