Commit Graph

338 Commits

Author SHA1 Message Date
Philip Monk
4fda5e8e38
gall: give both acks in case of unexpected ack
It's hard to say what's the safest thing to do when we get an ack we
weren't expecting due to losing outstanding.agents.state in +load
3-to-4, so this gives both a watch-ack and a poke-ack.  This seems most
likely to succeed.
2020-02-13 17:48:33 -08:00
Philip Monk
e082845e0d
gall: make 2140e07 ota-able
Does not change state type, but clears outstanding.agents.state since
it's full of garbage values.  This introduces a possibility that we may
have been in the middle of something, so we handle that in a reasonably
sane way.
2020-02-13 17:20:27 -08:00
Philip Monk
2140e07a99
gall: properly track remote acknowledgments
outstanding.agents.state is a queue of what sort of message we sent to a
foreign app.  We use it so that when the acknowledgment comes back we
know whether to treat it as a watch-ack, poke-ack, or neither.  We used
to put this info in the wire, but this gave us a different ames flow,
which meant %leave and %watch didn't get associated (causing #2079).

The error was that when when retrieving the item from the queue, we put
the new 1-item-shorter queue back in outstanding.agents.state at a
different wire than it came from, so the queues never actually got
shorter, and acknowledgments of the wrong sort were commonly produced.
This caused problems mainly in situations where we poke and peer on the
same wire, and possibly when a subscription was cancelled.

Possibly related to #2206 and #2176.  I would expect this bug to cause
those issues, but I haven't verified the converse.  Also possibly
related to #2153 and #2079.
2020-02-13 15:12:07 -08:00
Ted Blackman
0bee77ce8e
/sys: use +harden on vane tasks
Uses Zuse's previously unused +harden helper function to streamline
+task unwrapping in vanes.

(Arguably, in landlocked vanes like Ford, we should crash if we get a
%soft task, since no events should be coming in directly from the
outside.)
2020-01-27 09:53:53 +04:00
Fang
ae8a57ca25
gall: (list path) in %fact and %kick
Instead of providing a (unit path), allows for (list path), which better
supports the "update to path and subpath cases".

For example, if /things wants updates about everything, and
/things/specific wants updates about the specific thing, they'll both
need to receive a %fact when the specific thing changes.
Previously, these would have been two separate moves. Now, gall handles
the multi-targeting for you.
2019-12-23 13:37:32 +01:00
Philip Monk
b14606660a
goad: recompile apps after changes to /sys
OTAs commonly end up in an inconsistent state if apps depend on changes
to /sys.  For example, the %sift changes break on OTA because %spider
needs to be reloaded so that it's aware of the new thread type.  This
adds a %goad app, which reloads all apps after every change to /sys.

Getting this to start OTA is nontrivial, but this pattern should work
for apps in the future.  The changes to clock shouldn't generally be
necessary; they are only necessary here because we can't rely on hood to
start goad, since hood fails to compile if it's run before zuse is
reloaded.  Once goad is active, this will cease to be a problem.
2019-12-13 17:14:51 -08:00
Philip Monk
3b41a8be15
gall: no-op on duplicate watch-ack
fixes #2070
2019-12-10 18:49:50 -08:00
Philip Monk
68279d91e4
gall: remove message type from wire
%leave over the network didn't work because we included the message type
in the wire from gall, so the duct for the initial %watch and the %leave
were different.  We need to know the message type so we can route the
acknowledgment as %poke-ack, %watch-ack, or no-op.

This moves this piece of information to a piece of state, where we queue
up the message types per [duct wire].  Ames guarantees that
acknowledgments will come in order.

This also includes an easy state adapter.  The more interesting part of
the upgrade is that we likely have outstanding subscriptions with the
old wire format.  The disadvantage of storing information in wires is
that it can't be upgraded in +load.  So, here we listen for updates on
the old wire format, and when we get them we kill the old subscription,
so that it will be recreated with the new wire format.

As an aside, this is a good example of what we mean when we say
subscriptions may be killed at any time, so apps must handle this case.

Finally, this fixes the "attributing" ship to ~zod for agent requests.
This information was ignored for agent requests, but including it causes
spurious duct mismatches.
2019-12-10 19:32:26 +08:00
Philip Monk
38197fc79d
gen: add comments on new generators 2019-12-03 16:41:29 -08:00
Philip Monk
2954ed0b55
gall: correctly construct wire for ap-specific-take 2019-12-02 23:46:15 -08:00
Philip Monk
9186f232f1
gall: kick after sending leave 2019-12-02 20:09:36 -08:00
Philip Monk
096273cf4a
gall: add state upgrade for %pack 2019-12-02 03:20:34 -08:00
Philip Monk
9a94c35d4d
gall: acutally delete outgoing on watch-ack 2019-11-26 18:18:44 -08:00
Philip Monk
bf55197baf
ames: backpressure fixes 2019-11-26 14:56:20 -08:00
Philip Monk
bdbd35fcf3
gall: virtualize scry
Compare +mute and +mule.  Those pass through scry, which doesn't allow us to
catch crashes due to blocking scry.  If you intercept scry, you can't preserve
the type polymorphically.  By monomorphizing, we are able to do so safely.
2019-11-21 14:47:06 -08:00
Philip Monk
b8903e9a6f
gall: fix ap-kill-down
This broke when %kick was handled by resubscribing on your own ship
because it processed the %kick before the %leave.  For example, `@t`404
at the dojo would put the dojo in an unworkable state.

You want the %leave to be processed first because you can't do a
"resubscribe" in response to that.
2019-11-20 13:24:19 -08:00
Philip Monk
a5412f01de
Merge branch 'alef-testnet-merge' into philip/mall-real 2019-11-19 13:03:07 -08:00
Philip Monk
6a406e6b29
gall: mall -> gall 2019-11-18 20:36:21 -08:00
Philip Monk
ae295d445a
mall: rm old apps for easier merging 2019-11-09 16:53:42 -08:00
Philip Monk
bcd7c5e82d
Merge branch 'master' into philip/mall-real 2019-11-09 16:47:41 -08:00
Joe Bryan
d852d4f159 gall: restores "not-running" printf 2019-11-05 13:04:27 -08:00
Joe Bryan
1b187657cb gall: adds %goad task force agent rebuilds 2019-11-05 13:04:27 -08:00
Philip Monk
82513c27fc
Merge branch 'master' into philip/mall-real 2019-11-04 19:35:24 -08:00
Joe Bryan
ec32a76596 gall: fix virtualization of agent compilation 2019-11-04 15:29:17 -08:00
Ted Blackman
19c4bf7110 alef,gall: %clog notice and handling 2019-11-03 20:35:45 -05:00
Ted Blackman
3ecfbd6a68 fixed merge; sync and hi work again 2019-11-03 00:07:51 -04:00
Ted Blackman
22ef92053a gall and ames: |hi works, fixed alef nack-trace bug 2019-11-02 20:52:48 -04:00
Ted Blackman
6f2ebe8ebd gall: deleted +ap-track-queue, boot completes 2019-11-01 16:18:51 -04:00
Ted Blackman
f7c1af8dec pill compiles, but apps unlink on boot 2019-11-01 15:06:09 -04:00
Ted Blackman
21dabb8895 big merge, including some Alef and Zuse work 2019-10-30 16:12:57 -04:00
Jared Tobin
7f124db8d9
Merge branch 'philip/jael-ames-full' (#1882)
* philip/jael-ames-full:
  jael: provide edge-triggered breach notification

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-10-25 14:05:01 +08:00
Philip Monk
9ddc04143a
jael: provide edge-triggered breach notification
Until now, clients of Jael have had to store the first-seen rift if they
want to reliably detect breaches.  Otherwise, they would get a false
positive if they heard an old message about a breach (eg if you kick
azimuth-tracker).  Clay and Gall did this correctly, but Ames did not.

Jael already maintains this state, so I added a notification to the
existing subscription that happens whenever it notices a breach (a diff
or full where the new rift is greater than the old one).

Because this is an issue on the live network, I wrote state adapters
for Gall and Clay.  The Gall one just removes the rift from our state,
but the Clay one is much more involved because we have to upgrade
instances of the clad monad that are possibly in progress.
Specifically, since more input is possible than before, we must wrap any
in-progress instances of the monad in a function that handles the
potential new input from Jael.  This temporarily preservers a copy of
the old kernel, but only until the current commit/merge/update has
completed.

The real solution for Clay is to factor out those IO-heavy instances to
userspace tapp/async/imp/threads, and if an upgrade happens in the
middle, you should simply restart them.

Fixes #1852
2019-10-23 21:40:34 -07:00
Jared Tobin
bdfc270b2f
gall: fix bug in +ap-peek
fc7901d2 refactored much of +ap-peek, but introduced a bug in the
process.  The relevant diff from that commit is as follows:

  -        =/  =path  [ren tyl]
  -        =/  =vase  !>((slag p.u.cug path))
  -        (ap-slam q.u.cug p.arm vase)
  +        =/  index  p.u.maybe-arm
  +        =/  term  q.u.maybe-arm
  +        =/  =vase
  +          =/  =path  [term tyl]
  +          =/  raw  (slag index path)
  +          !>  raw
  +        (ap-slam term p.arm vase)

Note that [ren tyl] was replaced with [term tyl], where 'term' and 'ren'
are not equal.  This commit merely rights that wrong.
2019-10-22 15:22:30 +08:00
Philip Monk
87f689f443
custody: add more types 2019-10-21 15:41:28 -07:00
Joe Bryan
ef959e0c52 gall: clear caches in response to memory pressure 2019-10-01 15:04:07 -07:00
Jared Tobin
21c3119660
gall: remove %gall-booting printf
%gall currently prints

  [%gall-booting <app> p=<ship> q=<desk>]

whenever it receives a %conf (i.e., when it boots an app).  This turns
up in many of the places the old, less-informative '%mo-not-running'
printf did, but it's of similarly little use, and mainly serves to
create redundant line noise.  This commit just removes it.
2019-09-30 01:58:28 +04:00
Jared Tobin
2add146302
Merge branch 'reclamation' (#1773)
* reclamation:
  solid pill
  arvo: wires up %trim memory-pressure event stubs
  u3: wires up the %trim event in the daemon
  u3: adds %trim memory-pressure notification "effect"
  u3: tweaks |mass output (and fixes inadvertent truncation)
  u3: refactors periodic memory reclamation
  u3: factors out u3a_idle() to measure free-lists in a road
  u3: adds and uses u3a_full/heap/temp road macros
  u3: cleans up whitespace, removes dead code in allocator
2019-09-29 21:30:56 +04:00
Jared Tobin
5c99f33271
Merge branch 'ted/verb' (#1754)
* ted/verb:
  update pill
  hood: |knob {tag} {level} to set dill verbosity
  dill: set verbosity by error tag
2019-09-29 21:09:05 +04:00
Joe Bryan
3dd9bd7111 arvo: wires up %trim memory-pressure event stubs 2019-09-27 13:02:11 -07:00
Ted Blackman
f2073dbc34 dill: set verbosity by error tag 2019-09-27 13:55:14 -04:00
Philip Monk
a4dcad7d46
gall: unsubscribe after breach
fixes #1431
2019-09-24 15:00:16 -07:00
Philip Monk
bc1ba10a11
mall: compiles and runs app, but type hole 2019-09-04 12:49:16 -07:00
Ted Blackman
ca00d89286 %lost ames gift and stub handlers in vanes 2019-08-27 20:12:56 -07:00
Jared Tobin
b8d1dc9220
gall: fix issue id in comment
The comment was pointing at the wrong GitHub issue.
2019-08-27 14:10:11 -02:30
Philip Monk
4e62ce2905
gall: handle foreign coup success 2019-08-27 10:00:08 -02:30
Philip Monk
3e6625d20f
gall: only print peek bad result if bad 2019-08-27 09:59:56 -02:30
Jared Tobin
48901a3ded
gall: fix obvious nest-failing tisdot 2019-08-22 12:33:24 -02:30
Jared Tobin
d2d5d663d8
gall: change '-state' to '-core' for +mo and +ap 2019-08-22 12:33:24 -02:30
Jared Tobin
2b04b43262
zuse, gall: deprecate 'club'
Replaces with 'agent-action'.
2019-08-22 12:33:24 -02:30
Jared Tobin
38efc5e902
zuse, gall, eyre: deprecate 'cush'
Replaces with 'internal-task'.
2019-08-22 12:33:24 -02:30
Jared Tobin
ef99074304
zuse, gall, eyre, dojo: deprecate 'cuft'
Replaces it with the more informative name 'internal-gift'.
2019-08-22 12:33:24 -02:30
Jared Tobin
2fdb26096a
gall: remove slam-related printfs 2019-08-22 12:33:24 -02:30
Jared Tobin
624660ac60
gall: remove deprecated 'mak' from 'agents' 2019-08-22 12:33:23 -02:30
Jared Tobin
f435716406
gall: use less vertical spacing throughout 2019-08-22 12:33:23 -02:30
Jared Tobin
6a1478d8d9
gall: add comment re: unpopulated wex 2019-08-22 12:33:23 -02:30
Jared Tobin
cc7ac3cb2d
gall: use less vertical separation when wuthepping 2019-08-22 12:33:23 -02:30
Jared Tobin
a2d21debf5
gall: fix whitespace 2019-08-22 12:33:23 -02:30
Jared Tobin
04bff8ea96
gall: don't define 'move' as a pair 2019-08-22 12:33:23 -02:30
Jared Tobin
9ce3445e60
gall: don't give faces to tags 2019-08-22 12:33:22 -02:30
Jared Tobin
09103d59fd
gall: gut some unused stuff
Gets rid of 'voltage', 'security-control', and 'privilege', all of which
were either superfluous or were not actually used anywhere.
2019-08-22 12:33:22 -02:30
Jared Tobin
84924e6093
gall: indent multiline arm comments appropriately 2019-08-22 12:33:22 -02:30
Jared Tobin
f2c0cfd045
gall: use type spear inline 2019-08-22 12:33:22 -02:30
Jared Tobin
0cab280e70
gall: improve comment formatting
One-liners should not terminate with a full stop.
2019-08-22 12:33:22 -02:30
Jared Tobin
67ddf7cfbc
gall: replace 'gall' with 'state' throughout
Previously 'gall' had shadowed the rather-important definition in %zuse,
which is probably pushing the shadowing convention a little far.
2019-08-22 12:33:22 -02:30
Jared Tobin
575aeb3b2e
gall: miscellaneous formatting fixes 2019-08-22 12:33:22 -02:30
Jared Tobin
97de72d2ce
gall: remove %sunk, fix 'ship-state' in %wash case 2019-08-22 12:33:20 -02:30
Jared Tobin
7dc02ded4a
gall: some renaming, comments 2019-08-22 12:33:20 -02:30
Jared Tobin
92fbc80ea6
gall: more lighter-than-eyre compatibility 2019-08-22 12:33:20 -02:30
Jared Tobin
2c6281c0b4
gall: remove references to %hiss 2019-08-22 12:33:20 -02:30
Jared Tobin
90e14d62f2
gall: additional comments 2019-08-22 12:33:20 -02:30
Jared Tobin
d618ac2904
gall: reshuffle some +mo content 2019-08-22 12:33:20 -02:30
Jared Tobin
d9f32fe898
gall: add commentary 2019-08-22 12:33:20 -02:30
Jared Tobin
3aab487036
gall: formatting fix 2019-08-22 12:33:19 -02:30
Jared Tobin
d94bd429c2
gall: improve naming of various concepts 2019-08-22 12:33:19 -02:30
Jared Tobin
7e3a110c58
gall: be less skittish about using tisdot. 2019-08-22 12:33:19 -02:30
Jared Tobin
9ddf8982cf
gall: fix '%as' typo
Additionally chops out an arguably-excessive tisfas.
2019-08-22 12:33:19 -02:30
Jared Tobin
3d0137687f
gall: clear out some printfs
All of these were used for debugging.
2019-08-22 12:33:19 -02:30
Jared Tobin
c512eba4b1
gall: fix +ap-abed bug
This was simply due to mistranslating the previous code.
2019-08-22 12:33:19 -02:30
Jared Tobin
d19047aba6
gall: rename 'ship-state' to 'apps' 2019-08-22 12:33:18 -02:30
Jared Tobin
38474fbadf
gall: miscellaneous cleanup 2019-08-22 12:33:18 -02:30
Jared Tobin
aec215b3a8
gall: replace 'dude' with 'term' throughout
'dude' may be useful as a value-level mnemonic, but adds no useful
information at the type level.
2019-08-22 12:33:18 -02:30
Jared Tobin
efb93fea34
gall: miscellaneous minor fixes 2019-08-22 12:33:18 -02:30
Jared Tobin
fc7901d2d1
gall: miscellaneous large-scale cleaning 2019-08-22 12:19:16 -02:30
Jared Tobin
c221c2c5ae
gall: type and non-+mo/+ap arm cleanup 2019-08-22 12:19:05 -02:30
Jared Tobin
09c3fbf52c
gall: another cleanup pass over +ap 2019-08-22 12:19:01 -02:30
Jared Tobin
4dc990b22d
gall: simplify bone/duct map names 2019-08-22 12:18:24 -02:30
Jared Tobin
ce960c9f56
gall: misc. cleanup of +ap state and arms 2019-08-22 12:18:16 -02:30
Jared Tobin
730a443e68
gall: kill +mo-conf, plus misc cleaning
+mo-conf was superfluous, and has thus been removed.
2019-08-22 12:17:21 -02:30
Jared Tobin
ffae93ba1a
gall: more cleanup to +ap arms 2019-08-22 12:17:14 -02:30
Jared Tobin
953627cec3
gall: initial syntax pass over +ap 2019-08-22 12:17:08 -02:30
Jared Tobin
dbc946a1fd
gall: some lark replacements 2019-08-22 12:17:05 -02:30
Jared Tobin
8b9a208f0f
gall: misc cleanup to +mo 2019-08-22 12:16:59 -02:30
Jared Tobin
ca20beb37f
gall: simplify sofa 2019-08-22 12:16:49 -02:30
Jared Tobin
59455b38ac
gall: cleanup pass over +mo 2019-08-22 12:16:42 -02:30
Jared Tobin
832245e1e5
gall: get rid of context lark 2019-08-22 12:16:38 -02:30
Jared Tobin
9fa4f44b8c
gall: fix path in +mo-cyst 2019-08-22 12:16:16 -02:30
Jared Tobin
fbc5b351fc
gall: shadow in +mo-receive-core 2019-08-22 12:15:51 -02:30
Jared Tobin
c37f725658
gall: misc cleanup to +mo-receive-core and related 2019-08-22 12:15:46 -02:30
Jared Tobin
b3365693e0
zuse, gall: simplify +task, fix %conf in %gall 2019-08-22 12:14:05 -02:30
Jared Tobin
1d28214c1b
gall: preliminary +call cleanup 2019-08-22 12:12:44 -02:30
Jared Tobin
78a1aeea33
gall: clean up +mo-{clip, club, gawk, gawd} 2019-08-22 12:12:40 -02:30
Jared Tobin
4d8212ebf8
gall: clean up +mo-claw, +mo-beak 2019-08-22 12:12:36 -02:30
Jared Tobin
a46234d60b
gall: clean up +mo-cook 2019-08-22 12:12:31 -02:30
Jared Tobin
8473697d19
gall: refactor +mo-cyst
Splits one very long arm into numerous shorter ones.
2019-08-22 12:12:25 -02:30
Jared Tobin
a2fd2e0ed7
gall: clean up +mo-{bale, ball, come, chew} 2019-08-22 12:12:20 -02:30
Jared Tobin
77b3eb6b4a
gall: clean up +mo-{boot, away, awed}
Also removes the superfluous +mo-baal and +mo-baba, most of the
implementations of which can be replaced with simple stdlib functions.
2019-08-22 12:12:10 -02:30
Jared Tobin
45185774e5
gall: clean up +mo-receive-core, +mo-born 2019-08-22 12:12:02 -02:30
Jared Tobin
8bc397423e
gall: clean up +mo-{conf, pass, give, okay} 2019-08-22 12:11:57 -02:30
Jared Tobin
a0bad41a08
gall: clean up +mo-abed, +mo-abet 2019-08-22 12:11:49 -02:30
Jared Tobin
d51b1ced4a
gall: use 'mo-state' for door name 2019-08-22 12:11:33 -02:30
Jared Tobin
569488cddb
gall: rename 'moz' to 'moves' 2019-08-22 12:11:25 -02:30
Jared Tobin
0eb5f864c8
gall: add alias for inferred bowl type 2019-08-22 12:11:01 -02:30
Jared Tobin
1b911be80d
gall: light type refactoring
Mostly modernises syntax.  Also adds a couple of useful types ('whey'
and 'coke') that were previously defined inline.
2019-08-22 12:10:45 -02:30
Ted Blackman
fc9104cb47 Merge branch 'master' into alef-testnet (might not work) 2019-08-19 14:43:39 -07:00
Ted Blackman
370213bb65 add gall %wash to clear caches 2019-08-10 14:24:31 -07:00
Ted Blackman
3f5a96485b printing cleanup 2019-08-10 11:48:40 -07:00
Philip Monk
c453450d9c
add |moon, |moon-cycle-keys, and |moon-breach 2019-08-07 17:59:01 -07:00
Philip Monk
eed4c6a236
add rekey to jael 2019-08-07 15:15:25 -07:00
Philip Monk
6eb4d9389d
remove snapshot scaffolding 2019-08-07 13:54:47 -07:00
Philip Monk
6212422015
kale -> jael 2019-08-06 15:42:37 -07:00
Ted Blackman
1d62f1eecc Merge branch 'philip/kale' into alef-testnet 2019-08-01 15:56:23 -07:00
Ted Blackman
9670408a06 Merge branch 'master' into alef-breach 2019-07-29 00:27:58 -07:00
Ted Blackman
5b0ee61a64 Boots without error and sends and receives talk messages 2019-07-28 23:37:49 -07:00
Philip Monk
efd37a1e3c
simplify kale/azimuth-tracker subscription semantics 2019-07-27 21:01:55 -07:00
Philip Monk
dd76358f6a
%breach-hi works with kale 2019-07-26 20:45:45 -07:00
Ted Blackman
de9ff11560 |hi ~nec successful 2019-07-25 14:50:08 -07:00
Ted Blackman
6c22beea8c Merge branch 'master' into alef-breach 2019-07-22 11:46:40 -07:00
Philip Monk
994472ece1
azimuth-tracker sends to kale 2019-07-18 17:08:01 -07:00
Philip Monk
408b72b68e
fixed up kale 2019-07-18 15:26:15 -07:00
Joe Bryan
f89a7457ab
fixes a bug in %gall preventing cross-ship cross-app communication 2019-07-16 09:52:32 -02:30
Ted Blackman
793fc5c213 all vanes compile, at least individually 2019-07-15 14:23:34 -07:00
Ted Blackman
1ad2712870 Merge branch 'alef' into alef2 2019-07-11 14:26:22 -07:00
Fang
12b8134c33
Merge branch 'v0.8.0rc' into gut-by 2019-07-10 01:49:07 +02:00
Joe Bryan
62522f87c1 renames %lient to %iris 2019-07-03 17:08:23 -07:00
Joe Bryan
f31b12c964 renames %rver to %eyre 2019-07-03 16:02:49 -07:00
Fang
eb6c8a45ce
Replace (fall (~(get by calls with (~(gut by 2019-06-30 18:13:34 +02:00
Ted Blackman
3a1a3e30cc gall compiles 2019-06-28 18:13:32 -07:00
Jared Tobin
b3901ab42f Add 'pkg/arvo/' from commit 'c20e2a185f131ff3f5d3961829bd7a3fe0f227f8'
git-subtree-dir: pkg/arvo
git-subtree-mainline: 9c8f40bf6c
git-subtree-split: c20e2a185f
2019-06-28 12:48:05 +08:00