Skip to content

Comments

ops: promote 1.30#316

Merged
arthyn merged 14 commits intostagingfrom
promote-1-30
Apr 22, 2025
Merged

ops: promote 1.30#316
arthyn merged 14 commits intostagingfrom
promote-1-30

Conversation

@arthyn
Copy link
Member

@arthyn arthyn commented Apr 22, 2025

No description provided.

Fang- and others added 14 commits February 15, 2024 14:23
Globs contain big, static blobs of data, that only get updated
periodically. Eyre has an affordance for caching responses at specified
urls.

Here we update docket to, whenever a glob gets added, updated or
removed, manage the eyre response cache to match. We call +new-cache in
every place where either +new-docket or +new-chad gets called, making
sure to pass in the old charge so that we can clear potentially-stale
entries from the cache.

Note that docket's dynamic request serving behavior would respond to
both /path.ext and /path/ext with the glob entry for the (clay-style)
path /path/ext. However, we only add a response for the '/path.ext' url
into the cache. This is the common case, and doing so avoids adding
twice the amount of cache pressure.

For the %groups desk, whose initial pageload requests 32 files, this
takes initial load time down from ~0.5s to ~0.1s (on localhost, so no
"real networking" overhead).

About half of that remaining time is spent on the initial page request,
which usually dynamically falls back to serving /index.html. About a
fifth is spent on loading desk.js and session.js, which are served by
docket independent of glob contents. Adding those into the cache could
bring additional performance gains.

This should be considered soft-blocked on urbit/urbit#6909 and
urbit/vere#603. Without those changes, docket may make /apps/* urls
permanently unusable for dynamic binding.
Instead of always wiping and optionally replacing for edits, don't wipe
in the first place, for paths whose contents were changed but not
deleted.
We drop several agents from the landscape desk/repo, because they will
live in the Tlon (groups) desk instead. These agents are very specific
to features or behavior of the Tlon app and as such are better there
than here, where more generically useful infrastructure belongs.

The agents are as follows:
contacts, bait, reel, bark, growl, genuine

Their files were copied from the parent commit here into the tlon-app
repo in commit `dd0ebe7`.

We update the sys.kelvin to indicate we only support zuse 410K.
Groups will do the same when importing these agents into itself. This
gives us a coordination point, a clear boundary across which "ownership"
of the agents will be moved. This avoids "agent can't run in two desks
at once" type problems one would hit when doing this through normal OTAs
instead.
docket: add glob contents into eyre cache
Docket binds root, so it catches all requests not handled elsewhere. It
also binds `/apps`, so it can continue serving app contents after root
gets re-bound by someone else.

However, docket also serves `/session.js` (deprecated in favor of
`/~/host` and/or `/~/name` but still in use in the wild) and
`/docket/upload`.

To make sure that those continue functioning if root ever gets re-bound
elsewhere, we now explicitly bind `/session` and `/docket` to docket.
docket: bind the specific paths we want to serve
@arthyn arthyn merged commit 7e05f1f into staging Apr 22, 2025
1 check passed
@arthyn arthyn deleted the promote-1-30 branch April 22, 2025 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants