Skip to content
This repository has been archived by the owner on Aug 14, 2019. It is now read-only.

Aquarium and pH #1120

Merged
merged 62 commits into from
Apr 1, 2019
Merged

Aquarium and pH #1120

merged 62 commits into from
Apr 1, 2019

Conversation

philipcmonk
Copy link
Contributor

A lot happening here. I've sent out a usage document, which should probably become public documentation at some point.

Main changes:

  • Aquarium created
  • pH created
  • Clay queues incoming changes so that no more than one change happens in a single event
  • Various small sequencing changes in vanes, to improve robustness
  • Clay stores the rift number that we had for the foreign ship with its desks. We should use this information for individual breaches, but this doesn't attempt to solve that.

Copy link
Member

@joemfb joemfb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor cleanup request:

sys/zuse.hoon Outdated Show resolved Hide resolved
@joemfb
Copy link
Member

joemfb commented Mar 26, 2019

@philipcmonk, how long do some of these basic tests task? It'd be nice to wire something up for CI, as an example for future testing efforts if nothing else.

@philipcmonk
Copy link
Contributor Author

Haven't timed it, but something like 5-10 minutes on my machine. It's significantly faster if you don't start collections, acme, dns, and hall. If it's easy to wire up to CI, I'd say we should do it. CI is changing in cc-release, so we also could just hook it up to CI there.

app/aqua-ames.hoon Outdated Show resolved Hide resolved
:_ this(subscribed =(command %subscribe))
(aqua-vane-control-handler our ost subscribed command)
::
++ diff-aqua-effects
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A little comment explaining that this ignores effects other than %restore or %send might be helpful.

^+ ..abet-pe
=. this
%- emit-aqua-events
[%event who [//behn/0v1n.2m9vh %born ~]]~
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this need to be the same /0v1n.2m9vh as in the ames handler? Maybe that constant should be split off into sur/aquarium/hoon.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That value is u3A->sen, the "instance number" in vere. It's set to (scot %uv (mug now)) on boot/restart. I think the idea is to ensure there's a new duct corresponding to the new process, but it's not used for effect routing (or for injecting %wake events). I don't think it's needed here. It might not be needed at all, but that's a larger conversation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just cargo-culted that. The right answer is probably for aqua to keep track of that, change it on restart, and insert it into each of these wire as necessary. For now, I've just copied the same string everywhere.

app/aqua-behn.hoon Outdated Show resolved Hide resolved
pil=pill
assembled=*
tym=@da
fleet-snaps=(map term (map ship pier))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do :fleet-snaps and :piers refer to the same ships? If so, it might be cleaner to have :fleet-snaps be just a (map term (set ship)) so there's less risk of the two getting out of sync.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fleet-snaps is a set of snapshots of the state of the ships. It's intended to freeze a fleet so you can restore back to that point later on. This is how pH can cache e.g. "start ~bud" so that you only have to do it once rather than once per test.

Copy link
Contributor

@belisarius222 belisarius222 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had some minor comments, but other than the eth-manage address change, I approve this for merging.

app/eth-manage.hoon Outdated Show resolved Hide resolved
@@ -0,0 +1,96 @@
::
:: Traditionally, ovo refers an event or card, and ova refers to a list
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ovo refers to an event

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're both wrong: ovo is the conventional name for an +ovum, which is (pair wire card). An "event" is (pair @da ovum).

sur/aquarium.hoon Outdated Show resolved Hide resolved
:: ~? !=(20 suy) [%ap-fill-add [[our dap] q.q.pry ost] +(suy)]
[%& +(qel.ged (~(put by qel.ged) ost +(suy)))]
=/ subscriber-ship p:(~(got by sup.ged) ost)
?: &(=(20 suy) !=(our subscriber-ship))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, looks like you turned off the culling if our own ship is the one subscribed. Does that still work for web stuff?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried a bunch of stuff to reduce the number of subscription updates in the queues between aqua/ph and aqua-*, and I couldn't come up with anything that would work reliably.

I'm not sure how web stuff uses this? Is that the only way we clean up subscriptions created by web pages?

@joemfb
Copy link
Member

joemfb commented Mar 28, 2019

@philipcmonk, i think it's worth adding to CI. It's not particularly complicated to add now, and then re-add once arvo/next converges with vere/cc-release. Duplicating the |mass implementation (here: https://github.com/urbit/arvo/blob/next/.travis/test.js#L77) gets you most of the way, you just need to scrape for an error condition (a la https://github.com/urbit/runner-js/blob/master/lib/actions.js#L26). I can help if runner-js gives you trouble.

@philipcmonk
Copy link
Contributor Author

Added it to CI. Now CI takes ~25 minutes. Looks like the old builds took between 8 and 17 minutes (not sure what causes them to be longer; maybe changes to /sys?).

@ohAitch
Copy link
Contributor

ohAitch commented Mar 30, 2019 via email

@ohAitch
Copy link
Contributor

ohAitch commented Mar 30, 2019

Also, would it be possible to add custom folds for individual test phases showing more granular timings? Even 8 minutes is rather a lot.

(5 of those is the actual test script, 8 in the pill case; it looks like we're maybe building the pill twice??)

@joemfb
Copy link
Member

joemfb commented Mar 30, 2019

@ohAitch, we have to build a second pill to correctly capture userspace changes (which are now stored in the pill).

I think the right approach is to a) split the different test types across different CI jobs and b) cache and promote build artifacts more efficiently. The right place will be on top of cc-release, which now uses nix and make as the build system, and urb.py as the test runner. The right time will be when somebody is free to work on it.

@ohAitch
Copy link
Contributor

ohAitch commented Mar 30, 2019 via email

@joemfb
Copy link
Member

joemfb commented Mar 30, 2019

It's still only built on changes to sys, but when it's built it's build twice twice: first to stage the kernel changes, second to make the complete up-to-date pill that will be uploaded. This is of course stupid and inefficient, but was the easiest way to make the new pills not wrong. My grand plan is to let the pain of these slow builds increase until someone (maybe me!) snaps and makes it fast.

@ohAitch
Copy link
Contributor

ohAitch commented Mar 30, 2019 via email

@philipcmonk philipcmonk merged commit 84e9837 into next Apr 1, 2019
@ixv ixv mentioned this pull request Apr 3, 2019
@ixv ixv mentioned this pull request Apr 12, 2019
@jtobin jtobin deleted the philip/aquarium branch April 30, 2019 01:38
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants