Commit Graph

18745 Commits

Author SHA1 Message Date
Matthew LeVan
20a3af06cf disk: set epo_u 2023-06-20 12:35:32 -04:00
Matthew LeVan
0236e18193 Merge branch 'develop' into msl/replay-with-epochs 2023-06-19 12:17:13 -04:00
Joe Bryan
d27808d3f4
play: dedicated event replay, revived (#420)
This PR ports urbit/urbit#6159, fixing a performance problem that
plagued previous porting attempts. Fixes #157, supersedes #210 and #413.

The poor performance observed in #210 and elsewhere was not due to any
issue matching or dispatching jets. It coincided with the switch from
hoon %140 to %139, but only incidentally. It was caused by a change to
the `+solid` pill generator, which inadvertently broke the structural
sharing in the lifecycle sequence (see
https://github.com/urbit/urbit/pull/5989/files#diff-2f8df9d079ccb58c0a9a9c46f2f7dbd943dabaa21ba658c839de757bbac999f1L108-L116).
The problem was unnoticed because, in normal (ie, king/serf) boot and
replay, events are sent over IPC in batches, which had the side effect
of recovering the necessary structural sharing. This new replay
implementation does not involve IPC, but instead reads and computes
events synchronously, in a single process.

The issue did not arise until ships booted from pills created with the
updated generator were replayed using this new implementation, and that
happened to coincide with the release of hoon %139. The absence of
structural shared lead to jets being registered with one copy of the
kernel, but dispatched from a separate copy, resulting in absurdly
expensive equality comparisons. Since both copies were already allocated
on the home-road, unification could not be performed. And since the
problem manifested during the initial phase (lifecycle sequence) of the
boot process, `|meld` could not be used.

This PR includes a trivial hack to work around such event logs: the
lifecycle sequence is read in an inner road, jammed, and then cue'd,
thus recovering structural sharing before any nock computation, jet
registration, &c. The solid pill generator should also be fixed, but
workarounds will still be needed to account for existing piers.
Longer-term, home-road unification should clearly be explored to avoid
such fragility.
2023-06-19 11:19:08 -04:00
Matthew LeVan
52f76bc933 wip 2023-06-16 10:53:27 -04:00
Joe Bryan
877e94b62c play: fixes full replay commandline arg parsing 2023-06-15 18:48:06 -04:00
Josh Lehman
d10a4c08e6
Add jets for min/max. (#457)
Resolves #456.

Written live for a tutorial with @belisarius222
2023-06-15 08:37:46 -07:00
Ted Blackman
6b0b85fc58
u3: enforce a max of one page in south.bin (#458)
This PR is the simplest available fix for #451.
2023-06-15 11:33:59 -04:00
Joe Bryan
d3d60ea3f7 u3: enforce a max of one page in south.bin 2023-06-14 16:51:37 -04:00
Joe Bryan
c98e9ac0b3 play: print original+current timestamps after each batch 2023-06-14 15:39:29 -04:00
Joe Bryan
f395dd9a95 play: fixes full replay initialization 2023-06-14 15:34:16 -04:00
Sigilante
fd27ccf5ca
Update min.c 2023-06-14 14:12:47 -05:00
Sigilante
f155698e80
Update max.c 2023-06-14 14:12:14 -05:00
Sigilante
2071be4bc8 Correct macro expansion. 2023-06-14 13:20:15 -05:00
Sigilante
eef8c75296 Add jets for min/max. 2023-06-14 13:16:04 -05:00
Matthew LeVan
fdb2d860f8 Merge branch 'jb/moar-replay' into msl/replay-with-epochs 2023-06-13 13:50:51 -04:00
Joe Bryan
598040dc5e play: adds argument to continue on mug mismatch 2023-06-12 16:20:45 -04:00
Joe Bryan
52a1d06bc3 play: refactors implementation to allow earlier mug checks 2023-06-12 16:14:44 -04:00
Joe Bryan
ef27bb2f0e u3: documents pack/meld return 2023-06-12 13:57:12 -04:00
Joe Bryan
3c40e1b9e9 play: cleanup review issues 2023-06-12 13:54:22 -04:00
Matthew LeVan
8703f11fd1 disk: remove u3_disk_epoc_good and add argument to u3_disk_epoc_init 2023-06-12 10:23:28 -04:00
Matthew LeVan
cc2557cd8e disk: pare down u3_disk_epoc_good 2023-06-12 09:40:42 -04:00
Pyry Kovanen
d98aac2089
Update VERSION to 2.10 (#448) 2023-06-08 19:12:52 +03:00
Pyry Kovanen
1ffb3ae67c
Update VERSION to 2.10 2023-06-08 19:12:25 +03:00
Pyry Kovanen
b7bf6165e3
Merge master back to develop after vere-v2.9 (#447) 2023-06-08 19:12:02 +03:00
Pyry Kovanen
8f75709e1d
Release vere-v2.9 to live (#446) 2023-06-08 18:30:47 +03:00
Pyry Kovanen
d9518eca9e
Deploy vere-v2.9 to soon (#445) 2023-06-08 17:31:33 +03:00
Pyry Kovanen
7c08be9eef
ames: consolidate pending fine requests (#443)
Fine requests entire 512-packet "pages" from arvo in each scry, and when
it does that it marks the page as "pending" internally, so that if
another request comes in for the same packet, it doesn't resend the
scry, because it knows the scry is going to come back eventually.

This PR fixes a bug where instead of checking whether the page is
pending, we checked whether the requested packet is pending. This means
that if requests for packets 1, 2, 3, ..., 512 all came in a row, we
would fire off 512 scries, instead of only one. Tlon has seen this issue
in the wild when starting a large number of ships, while they're
downloading their initial OTA from their sponsor.

This is a draft because it has not been tested yet. I believe the bug
can be reproduced by transferring a large file between two ships with
-v, but I have not verified this, and this shouldn't be merged until
we've proven it fixes a bug.
2023-06-08 16:48:34 +03:00
Philip Monk
9c77ad9d0b ames: consolidate pending fine requests
Fine requests entire 512-packet "pages" from arvo in each scry, and when
it does that it marks the page as "pending" internally, so that if
another request comes in for the same packet, it doesn't resend the
scry, because it knows the scry is going to come back eventually.

This PR fixes a bug where instead of checking whether the page is
pending, we checked whether the requested packet is pending.  This means
that if requests for packets 1, 2, 3, ..., 512 all came in a row, we
would fire off 512 scries, instead of only one.  Tlon has seen this
issue in the wild when starting a large number of ships, while they're
downloading their initial OTA from their sponsor.
2023-06-07 13:56:55 -07:00
Matthew LeVan
c045119fd3 Merge branch 'develop' into i/313/epoch 2023-06-06 14:30:43 -04:00
Matthew LeVan
d5aff59e41 disk: define siz_i as a global, static constant 2023-06-06 14:29:37 -04:00
Matthew LeVan
611856662e lmdb: restore siz_i parameter in u3_lmdb_init 2023-06-05 11:34:53 -04:00
Matthew LeVan
c50906de6e disk: cleanup #include directives 2023-06-05 11:29:17 -04:00
Matthew LeVan
d59b0af549 disk: make u3_disk_epoc_vere safer 2023-06-05 11:05:40 -04:00
barter-simsum
1886844f4a remove redundant dut_o in u3_disk_migrate 2023-06-04 17:24:51 -04:00
Pyry Kovanen
a7b32d4eab
Update VERSION to 2.9 (#438) 2023-06-03 00:50:49 +03:00
Pyry Kovanen
6e7f186c33
Update VERSION to 2.9 2023-06-03 00:50:25 +03:00
Pyry Kovanen
7219c4b30e
Merge master back to develop after vere-v2.8 (#437) 2023-06-03 00:49:54 +03:00
Pyry Kovanen
6a3283cc0c
Release vere-v2.8 to live (#436) 2023-06-02 23:42:41 +03:00
Pyry Kovanen
958da6f633
Release vere-v2.8 to soon (#435) 2023-06-02 23:12:09 +03:00
barter-simsum
2bdb304082
add --no-demand to --help (#433)
Resolves #421
2023-06-02 15:42:59 -04:00
Pyry Kovanen
b8cd861f45
events.h: fix u3t_trace_open() prototype to remove build warning (#434)
Before this, the prototype for `u3t_trace_open()` had the wrong type.
Now Vere now builds cleanly without warnings.
2023-06-02 22:12:55 +03:00
Pyry Kovanen
65f3874b04
make U3_SNAPSHOT_VALIDATION a bazel build flag (#431)
Resolves #427.

Disables snapshot validation by default, except for fake ship tests in
CI. To enable, run:
```
bazel build --config=snp_dbg :urbit
```
2023-06-02 21:45:00 +03:00
Pyry Kovanen
673b22b7d5
ci: separate chown calls to fix buildjet jobs (linux-aarch64) (#430)
Resolves #424.
2023-06-02 20:41:47 +03:00
Matthew LeVan
7dbbb0cbe2 ci: separate chown calls 2023-06-02 13:19:09 -04:00
Ted Blackman
e0b3486b5f events.h: fix u3t_trace_open() prototype to remove build warning 2023-06-02 12:00:38 -04:00
barter-simsum
55afd68e8f add --no-demand to --help 2023-06-02 11:57:19 -04:00
Ted Blackman
84ec56486d make U3_SNAPSHOT_VALIDATION a bazel build flag 2023-06-02 11:47:28 -04:00
Matthew LeVan
d6fcb9875f disk: fix duplicate code 2023-06-02 10:36:17 -04:00
Matthew LeVan
6ae1e75ce9
ci: chown /usr/local on our linux-aarch64 runner (#426)
Resolves #424.
2023-06-01 15:30:43 -04:00
Matthew LeVan
e0732160ec ci: chown /usr/local on our linux-aarch64 runner 2023-06-01 14:14:03 -04:00