shrub/pkg
Philip Monk e1419d1787 contact-store: no-op if adding old contact
%contact-store is responsible for sending updates about contacts, eg
profile color.  When it hears an update, it fans that out to its
subsribers, unless that update is stale.  If you reguarly fan out stale
updates, then they reverberate across the network indefinitely -- we
call this "echoing".

To cut off this echoing, all edits have a timestamp, and we consider any
updates from before this timestamp to be stale.  Additions are separate
from edits, and for them we instead do a value comparison on the contact
-- if it didn't change, we consider the update stale.

The problem with this scheme is that if an addition and edit happen one
after the other in quick succession, you might have the following
sequence:

- add comes in with timestamp T1
- edit comes in with timestamp T2 after T1
- we hear an echo of the add, and that errantly applies because it
  passes our "did the contact actually change" check
- we hear an echo of the edit, which applies because T2 is after T1
- GOTO 3

Each time we apply the stale update, we fan that out to our subscribers,
and if any two hosts subscribe to each other, this will loop.  This may
even loop unconditionally because the ship that made the profile changes
seems like it might not recognize that those changes didn't come from
itself, so it sends them to all the groups it's in.  If so, that's an
important issue to fix.

Fixes tloncorp/landscape-issues#1442
2022-12-12 13:03:41 -07:00
..
arvo Merge branch 'lf/gladio-2' 2022-12-09 15:23:18 +10:00
base-dev Merge remote-tracking branch 'origin/lf/agent-clay-fe' into philip/agent-clay 2022-11-01 22:08:56 -07:00
bitcoin zuse: bump kelvin to 417 2022-10-17 19:38:21 -07:00
btc-wallet lull: bump to 328 2022-11-20 20:58:39 -07:00
docker-image docker: update documentation 2021-04-25 12:02:56 -04:00
ent repo: fix ent build on mingw 2022-03-25 15:16:39 -06:00
garden docket: remove charge if docket file no longer exists 2022-12-07 08:54:53 +10:00
garden-dev hark-store: fix ship parsing 2022-03-28 10:13:52 -06:00
grid grid: only block on live apps 2022-12-05 17:12:10 -07:00
herb Revert "Revert "Merge naive/aggregator into poprox/naive-tests"" 2021-08-19 16:09:28 -07:00
hs Merge branch 'master' into next/vere 2021-12-17 23:38:22 -05:00
interface landscape: include club migration 2022-11-23 14:29:40 +10:00
landscape contact-store: no-op if adding old contact 2022-12-12 13:03:41 -07:00
npm api: bump version and update grid deps 2022-12-01 16:03:31 -06:00
urbit Merge branch 'lf/gladio-2' 2022-12-09 15:23:18 +10:00
urcrypt urcrypt: correct parameter ordering in urcrypt_ed_veri() 2022-05-06 22:57:57 +00:00
webterm zuse: bump kelvin to 417 2022-10-17 19:38:21 -07:00
symbolic-merge.sh pkg/symbolic-merge.sh from @Fang- 2021-08-30 20:19:16 +03:00