Commit Graph

63 Commits

Author SHA1 Message Date
Philip Monk
c6024c2661 azimuth: clear logs on %kick
%kick is supposed to start back from the snapshot and move forward.
Without this, we would only fetch logs that we hadn't already fetched.
Thus, if you were up-to-date when you kicked, you would miss anything
that happened between the time the snapshot was taken and the present,
though you would see things after the present.

Also reverted lull change to make this a safer upgrade.
2022-08-19 15:04:30 -08:00
Philip Monk
89b9977ac8 azimuth: fetch snapshot on boot
Previously, the initial Azimuth snapshot was stored in Clay and shipped
in the pill.  This causes several problems:

- It bloats the pill
- Updating the snapshot added large blobs to Clay's state.  Even now
  that tombstoning is possible, you don't want to have to do that
  regularly.
- As a result, the snapshot was never updated.
- Even if you did tombstone those files, it could only be updated as
  often as the pill
- And those updates would be sent over the network to people who didn't
  need them

This moves the snapshot out of the pill and refactors Azimuth's
initialization process.  On boot, when app/azimuth starts up, it first
downloads a snapshot from bootstrap.urbit.org and uses that to
initialize its state.  As before, updates after this initial snapshot
come from an Ethereum node directly and are verified locally.

Relevant commands are:

- `-azimuth-snap-state %filename` creates a snapshot file
- `-azimuth-load "url"` downloads and inits from a snapshot, with url
  defaulting to https://bootstrap.urbit.org/mainnet.azimuth-snapshot
- `:azimuth &azimuth-poke-data %load snap-state` takes a snap-state any
  way you have it

Note the snapshot is downloaded from the same place as the pill, so this
doesn't introduce additional trust beyond what was already required.
When remote scry is released, we should consider allowing downloading
the snapshot in that way.
2022-06-30 23:22:50 -07:00
yosoyubik
7fc5177602 azimuth: restart %eth-watcher if not running 2022-05-12 07:14:26 +02:00
yosoyubik
79d0129401 azimuth: use %kick poke to restart subscriptions 2022-05-07 16:27:04 +02:00
fang
4415aa781e
Merge branch 'next/arvo' into m/aqua-revival 2022-04-20 18:47:59 +02:00
pkova
32ac7434f4 eth-watcher: implement optional to-block parameter 2022-04-07 14:24:28 +03:00
fang
c55975e8de
azimuth: allow configuring of the refresh rate
Pulls a constant out of the code, into state, and adds a poke for
changing it.
2022-03-30 12:19:57 +02:00
yosoyubik
0c9fc76b93 eth-watcher: fix zoom-margin to account for reorgs
The previous value—used for testing—didn't consider
block reorgs, which meant that if we zoom to the latest
block that has no transactions, but that gets later replaced
by a 1-block reorg that does have a transaction, we'll miss it,
making our Azimuth state incomplete.

To fix it, we rewind the Azimuth state to the contents of the snapshot,
and then start retrieving logs from the latest one we have.
2022-01-19 17:41:05 +01:00
yosoyubik
fccf99e0a6 jael: refactor new-event for %keys diff
this also adds a %rerun %poke to /app/azimuth
2022-01-08 19:28:11 +01:00
yosoyubik
8535563de6 jael: give private key to subscribers on keys diff
Triggering this event has been added to /app/azimuth's +on-load
2022-01-08 09:48:28 +01:00
yosoyubik
583d5f5063 azimuth: process snapshot on-load 2022-01-07 18:13:51 +01:00
yosoyubik
4724c32d3d pill: load azimuth snapshot file with mime mark 2021-12-14 09:40:34 +01:00
yosoyubik
f6dca03786 pill: restore solid pill 2021-12-10 16:19:59 +01:00
yosoyubik
4384f19643 azimuth: use ship as prefix for loading snapshot log 2021-12-09 07:30:08 +01:00
yosoyubik
cce14699c8 azimuth: update log message 2021-12-08 12:52:23 +01:00
yosoyubik
0833ee9ea6 azimuth: only print number of points during init 2021-12-07 16:32:39 +01:00
yosoyubik
81eb6ae247 pill: add azimuth snapshot 2021-12-07 16:13:39 +01:00
yosoyubik
d08ab43f3a lull: skip rift/life printf when booting 2021-12-06 13:47:59 +01:00
yosoyubik
ad16155c77 azimuth: load azimuth state from state snapshot 2021-12-03 16:11:15 +01:00
yosoyubik
d5c44598ba roller: refactor and clean up 2021-11-28 16:37:06 +01:00
yosoyubik
8c8aef96aa dice: include nas when rolling over tx-effects 2021-11-25 21:22:15 +01:00
yosoyubik
2e94a0d446 azimuth, dice: simplify index update 2021-11-24 15:31:59 +01:00
Philip Monk
ff63ffd1aa
azimuth: stop processing state in %watch
Also reprocess state in +on-load for ships which currently have
unprocessed state.
2021-11-17 10:22:27 -08:00
Philip Monk
45a8d12c35
Merge remote-tracking branch 'origin/philip/hotfix' into philip/hotfix 2021-11-17 10:00:49 -08:00
yosoyubik
9430c666d2 azimuth: update state on-watch 2021-11-17 12:40:06 +01:00
Philip Monk
a58db10b94
azimuth: don't crash if timer failed 2021-11-16 21:09:10 -08:00
Philip Monk
4b328a4fa7
azimuth: make +run-logs tail-recursive
Also kick the call to +mule out of the loop.  By uncommenting the
diagnostics in u3m_fall, I measured that running through the 290k events
the azimuth snapshot required this much memory:

Head recursive, +mule in:  1.1GB
Head recursive, +mule out: 780MB
Tail recursive, +mule in:  700MB
Tail recursive, +mule out: 70MB

So this commit chooses the last one.  The most delicate part is making
sure the effects are the right order; this uses the usual idiom.

Kicking +mule out of the loop is okay because lib/naive should never
fail, and if it does then azimuth shouldn't advance until an out-of-band
solution is decided.

Addresses #5431
2021-11-16 20:03:20 -08:00
yosoyubik
ed2d9bb482 Merge remote-tracking branch 'origin/philip/roller' into naive/roller 2021-11-10 18:44:25 +01:00
yosoyubik
da739d6e87 azimuth: add sponsorship scry 2021-11-10 18:39:43 +01:00
yosoyubik
e32b0a1956 roller: add sponsorship index 2021-11-10 17:46:22 +01:00
yosoyubik
856d8ed8fc azimuth: use last-snap only in %default network 2021-11-10 11:47:22 +01:00
Philip Monk
08ab77893e
azimuth: don't start on fake ships 2021-11-09 22:36:05 -08:00
Philip Monk
185fd1f979
azimuth: fixing upgrading from mainnet
load snapshot and node on boot and make sure we initalize after
eth-watcher updates
2021-11-09 16:42:03 -08:00
Philip Monk
bf7f4ba453
Merge remote-tracking branch 'origin/m/naive-ugprade-path' into philip/roller 2021-11-09 12:52:25 -08:00
fang
07e59afcfe
azimuth: properly nuke azimuth-tracker on-init 2021-11-09 16:00:01 +01:00
Philip Monk
42410a708d
azimuth: give backlog on %watch 2021-11-09 00:42:34 -08:00
Philip Monk
ea199bfba9
azimuth: correctly load snapshot on boot 2021-11-09 00:22:32 -08:00
Philip Monk
45c1693085
jael: use default network id 2021-11-08 22:59:06 -08:00
Philip Monk
681faa68e4
azimuth: send updates to jael 2021-11-08 21:56:47 -08:00
fang
fecb809573
jael, azimuth: reconfigure jael for L2
Jael needs to be reconfigured to listen to the new aagent for azimuth
events, and the old app needs to be shut down. We do this in
/app/azimuth's +on-init.

Additionally, we make sure that jael doesn't crash when it (as expected)
loses its subscription to the old agent.
2021-11-06 01:10:33 +01:00
yosoyubik
1c641629e2 roller: add azimuth refresh-rate to getConfig RPC 2021-11-04 09:54:25 +01:00
yosoyubik
f243500068 Merge remote-tracking branch 'origin/philip/naive' into naive/roller 2021-09-27 16:29:12 +02:00
yosoyubik
7e0c99c980 azimuth+roller: add get-naive/predicted-state 2021-09-05 12:36:19 +02:00
yosoyubik
2190eea370 roller: add timestamp to roller-tx 2021-08-27 16:05:59 +02:00
yosoyubik
343ade2f15 azimuth: add /gx/=azimuth=/point/[~ship] scry path 2021-08-24 15:40:55 +02:00
yosoyubik
f87658b1ad roller: wip roller-cli client 2021-08-22 18:23:30 +02:00
yosoyubik
d559ad35bc roller: clean up 2021-08-04 15:53:57 +02:00
yosoyubik
722ce969a5 aggregator: refactor ownership index logic 2021-07-22 06:34:42 +02:00
yosoyubik
c2dd622fe3 naive: derive predicted ownership in /app/aggregator 2021-07-08 16:45:27 +02:00
yosoyubik
af295b2f5e naive: add get-dns to azimuth-rpc 2021-06-28 13:01:04 +02:00