Commit 6c07ad3
authored
feat(sync): track incoming sync requests, allow subscriptions without sync, close inactive replicas (#1491)
## Description
This PR adds a few missing parts for sync in iroh:
* Allow to subscribe to replicas if they're not in the set of syncing
replicas (this was not possible before).
* Properly track open replicas in the `LiveSync` and close them once
they're not needed anymore. Therefore adds
`iroh_sync::store::close_replica` to remove a replica instance from the
store-internal cache of open replicas. This is needed because otherwise
it grows unbounded (for anchor nodes especially).
* Pass incoming connections to the `LiveSync` actor and handle them
there. Before, incoming connections for sync were *always* processed if
a replica with the requested `NamespaceId` is found in the local replica
store. This PR changes this mechanism so that incoming sync connections
are passed into the sync engine first. This leads to the changes that
motivate this PR:
* Incoming sync requests are only answered if the document (replica) in
question was opened for sync before (via a call to `start_sync`). Note
that this is *not* persisted at the moment, but should be (separate
change though).
* We can track the sync status for outgoing *and incoming* sync flows.
This will reduce the number of sync connections, because currently we
will oftenly double-sync in both directions (unneeded, because the sync
is always bidirectional). Now, we abort if a sync is already in
progress.
* Expose events about successfull and failed sync runs to the upper
layer via the document subscriptions with a new
`LiveEvent:.SyncFinished` that reports all available information
## Notes & open questions
Do we want to track history of syncs internally or leave it up to the
app via the events? Not sure myself.
The diff of `sync_engine/live.rs` is a little hard to read, because
there's a change from `TopicId` to `NamespaceId` in a few places that is
mostly unrelated. Sorry for the mixup, but it makes sense to track
everything by `NamespaceId` and it ended up in a commit here.
Logging is much improved in this PR.
Maybe we can improve the code flow a little to make things more obvious.
<!-- Any notes, remarks or open questions you have to make about the PR.
-->
## Change checklist
- [x] Self-review.
- [x] Documentation updates if relevant.
- [ ] Tests if relevant.1 parent 8fe3f71 commit 6c07ad3
15 files changed
Lines changed: 840 additions & 251 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
201 | 201 | | |
202 | 202 | | |
203 | 203 | | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
204 | 216 | | |
205 | 217 | | |
206 | 218 | | |
| |||
321 | 333 | | |
322 | 334 | | |
323 | 335 | | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
324 | 344 | | |
325 | 345 | | |
326 | 346 | | |
| |||
332 | 352 | | |
333 | 353 | | |
334 | 354 | | |
335 | | - | |
336 | 355 | | |
337 | 356 | | |
338 | 357 | | |
| |||
351 | 370 | | |
352 | 371 | | |
353 | 372 | | |
354 | | - | |
355 | 373 | | |
356 | 374 | | |
357 | 375 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
17 | | - | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
18 | 20 | | |
19 | 21 | | |
20 | 22 | | |
| |||
24 | 26 | | |
25 | 27 | | |
26 | 28 | | |
27 | | - | |
28 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
29 | 33 | | |
30 | 34 | | |
31 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
29 | | - | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | | - | |
33 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
34 | 36 | | |
35 | | - | |
| 37 | + | |
36 | 38 | | |
37 | | - | |
| 39 | + | |
| 40 | + | |
38 | 41 | | |
39 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
40 | 45 | | |
41 | 46 | | |
42 | 47 | | |
43 | | - | |
| 48 | + | |
44 | 49 | | |
45 | | - | |
| 50 | + | |
46 | 51 | | |
47 | 52 | | |
48 | | - | |
| 53 | + | |
49 | 54 | | |
50 | 55 | | |
51 | 56 | | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
52 | 77 | | |
53 | | - | |
| 78 | + | |
54 | 79 | | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
61 | 94 | | |
62 | | - | |
| 95 | + | |
63 | 96 | | |
64 | 97 | | |
65 | 98 | | |
66 | | - | |
| 99 | + | |
67 | 100 | | |
68 | | - | |
| 101 | + | |
69 | 102 | | |
70 | 103 | | |
71 | | - | |
72 | | - | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
73 | 117 | | |
74 | | - | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
75 | 152 | | |
76 | | - | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
77 | 202 | | |
0 commit comments