mirror of
https://github.com/urbit/shrub.git
synced 2024-12-19 08:32:39 +03:00
69a5675a86
When a graph is joined, the subscriber receives an %add-graph update that corresponds to the current state of the graph. This was not logged, so if the graph did not recieve any updates before the subscription was kicked, the whole graph would be have to be sent again. This would be largely asymptomatic, however hark-store assumes that %add-graph will only be emitted when a new graph is joined or created. As such, we log this initial update, so that the push-hook can correctly ascertain the backlog it needs to send and so %add-graph is only emitted once per graph. This also opens the door for time-varying scries into graph-store. Fixes #4290
62 lines
1.3 KiB
Plaintext
62 lines
1.3 KiB
Plaintext
/- *post
|
|
|%
|
|
+$ graph ((mop atom node) gth)
|
|
+$ marked-graph [p=graph q=(unit mark)]
|
|
::
|
|
+$ node [=post children=internal-graph]
|
|
+$ graphs (map resource marked-graph)
|
|
::
|
|
+$ tag-queries (jug term resource)
|
|
::
|
|
+$ update-log ((mop time logged-update) gth)
|
|
+$ update-logs (map resource update-log)
|
|
::
|
|
+$ internal-graph
|
|
$~ [%empty ~]
|
|
$% [%graph p=graph]
|
|
[%empty ~]
|
|
==
|
|
::
|
|
+$ network
|
|
$: =graphs
|
|
=tag-queries
|
|
=update-logs
|
|
archive=graphs
|
|
validators=(set mark)
|
|
==
|
|
::
|
|
+$ update
|
|
$% [%0 p=time q=update-0]
|
|
==
|
|
::
|
|
+$ logged-update
|
|
$% [%0 p=time q=logged-update-0]
|
|
==
|
|
::
|
|
+$ logged-update-0
|
|
$% [%add-graph =resource =graph mark=(unit mark) overwrite=?]
|
|
[%add-nodes =resource nodes=(map index node)]
|
|
[%remove-nodes =resource indices=(set index)]
|
|
[%add-signatures =uid =signatures]
|
|
[%remove-signatures =uid =signatures]
|
|
==
|
|
::
|
|
+$ update-0
|
|
$% logged-update-0
|
|
[%remove-graph =resource]
|
|
::
|
|
[%add-tag =term =resource]
|
|
[%remove-tag =term =resource]
|
|
::
|
|
[%archive-graph =resource]
|
|
[%unarchive-graph =resource]
|
|
[%run-updates =resource =update-log]
|
|
::
|
|
:: NOTE: cannot be sent as pokes
|
|
::
|
|
[%keys =resources]
|
|
[%tags tags=(set term)]
|
|
[%tag-queries =tag-queries]
|
|
==
|
|
--
|