shrub/pkg/landscape/app
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
..
btc-wallet Merge branch 'hm/btc-wallet-conflict-resolution' into ea/master-dist-deconflict 2021-09-27 18:55:45 -05:00
landscape theme_color meta precedence corrected 2021-12-20 13:20:59 -05:00
chat-cli.hoon graph-store: bump update mark 2021-09-28 12:50:45 +10:00
chat-hook.hoon graph-store: bump update mark 2021-09-28 12:50:45 +10:00
chat-store.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
chat-view.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
clock.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
contact-hook.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
contact-pull-hook.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
contact-push-hook.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
contact-store.hoon contact-store: no-op if adding old contact 2022-12-12 13:03:41 -07:00
contact-view.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
demo-pull-hook.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
demo-push-hook.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
demo-store.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
dm-hook.hoon dm-hook: fix missing notification on DM invite 2022-03-28 14:33:18 -06:00
file-server.hoon merge master; loosen :hood's updates 2021-08-11 19:23:36 +03:00
glob.hoon Merge branch 'hm/btc-wallet-conflict-resolution' into ea/master-dist-deconflict 2021-09-27 18:55:45 -05:00
graph-pull-hook.hoon graph-pull-hook: do not archive on nack 2022-12-05 11:07:40 +10:00
graph-push-hook.hoon graph-push-hook: proxy add and remove signatures across the network 2022-01-20 21:58:00 +00:00
graph-store.hoon Merge branch 'lf/gladio-2' 2022-12-09 15:23:18 +10:00
group-pull-hook.hoon group-pull-hook: disabling remove on nack 2022-12-05 13:08:51 +10:00
group-push-hook.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
group-store.hoon Merge pull request #6141 from urbit/hm/change-ota-source 2022-12-09 12:22:50 -06:00
group-view.hoon landscape: fix automatically watching group chats 2022-04-15 15:33:23 -05:00
hark-chat-hook.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
hark-graph-hook.hoon hark-graph-hook: revive unread counts for group feed 2022-03-28 13:53:22 -06:00
hark-group-hook.hoon groups: Fix <user> left <group> notifications 2022-03-22 15:17:29 -05:00
hark-invite-hook.hoon various: disable verb-by-default 2021-09-29 14:48:27 +10:00
invite-hook.hoon invite-hook: use equality instead of team:title 2021-11-30 16:19:24 -05:00
invite-store.hoon invite-store: change /all scry to return %invite-update 2021-12-06 15:28:26 -05:00
invite-view.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
launch.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
metadata-hook.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
metadata-pull-hook.hoon metadata-pull-hook: disabling remove on nack 2022-12-05 13:09:30 +10:00
metadata-push-hook.hoon metadata-push-hook: address mark review 2021-12-14 08:50:57 -05:00
metadata-store.hoon Merge branch 'release/next-userspace' 2021-10-04 23:45:45 +04:00
notify.hoon notify: disable notifications dismissal 2022-03-08 13:14:38 -06:00
observe-hook.hoon landscape: cache marks again 2022-02-09 10:52:04 -06:00
pool-group-hook.hoon spider: threads on other desks, and fixed call sites 2021-07-19 15:17:55 +03:00
s3-store.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00
sane.hoon Merge branch 'release/next-userspace' 2021-10-04 23:45:45 +04:00
weather.hoon %base: move landscape files out; %base boots, %landscape validates 2021-07-18 04:40:20 +03:00