IRC channel logs

2023-12-16.log

back to list of logs

<Zarutian_iPad>h'lo folks
<Zarutian_iPad>a bit of musing/description of distributed cyclic garbage collection
<Zarutian_iPad>I do not recall what the method/way I am going to describe was originally called but I call it lamport timestamp graph colouring with nodeid/vatid relative staleness
<Zarutian_iPad>basically at some interval j an 'graph colouring' is started at each node/vat
<Zarutian_iPad>each node/vatid has an monotonically increasing counter they increase at some interval
<Zarutian_iPad>at each graph colouring the vat/node takes the contents of that counter and its id and make a lamport timestamp
<Zarutian_iPad>the graph colouring starts with locally rooted objects
<Zarutian_iPad>when an proxyobj/farref is encountered it is added to an set spefic for the remote node/vat
<Zarutian_iPad>when the local graph colouring is done the remote nodes/vats are told of the lamport timestamp and which proxyobjects/farrefs have been coloured with it
<Zarutian_iPad>when a node/vat recieves such it does a graph colouring with that lamport timestamp
<Zarutian_iPad>this way a lamport timestamp percolates throughout the distributed object graph
<Zarutian_iPad>at every tick of a lamport clock each vat that knows it has outgoing farrefs coloured with a lamport timestamp originating at the same node/vat gets informed about the newest value of that lamport clock
<Zarutian_iPad>then locally each node/vat can see which farrefs have become stale relative to that lamport clock
<Zarutian_iPad>stale farrefs can then be broken
<Zarutian_iPad>btw newest lamport timestamp always wins as the graph colour at each proxyobj/farref
<Zarutian_iPad>a stale farref that has been broken means that a node/vat spanning cycle of garbage no longer is an can be dealt with by the distributed acyclic garbage collection
<Zarutian_iPad>as most memory safe object based runtimes do not have hooks to do the graph colouring I came up with a possible work around by having a miranda method that basically eventually sends an invocation of itself on all the objects refered by this object
<Zarutian_iPad>this graph colouring does not have to happen frequently. Once every hour, day, or week is enough.
<Zarutian_iPad>and the miranda method invocation only needs to be sendonly