mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-11-05 23:37:25 +00:00
fix(p2): archiving a viewed session shows no error and starts no refused worker
Archiving from the session sheet navigates away first, which unmounted SessionOptions and released its Sessions reference; Chord cancels a released reference's calls, so the archive call rejected with "p2.sessions: released", shown as the composer toast over the owner-notice lane. The archive now holds a reference of its own until it is done, and the server runs its steps in a root of its own. The archive stopped the worker with Hosts.stop, which restarts it for its holders: the page's lingering conversation started a worker the archived session refused (resolve_failed, "Worker: Session is archived" notice). SessionWorkerControl.suspend stops it and leaves its holders suspended until a restore (retry) or their release; archive, a failed fork's archived copy and an archived session's index rebuild use it.
This commit is contained in:
parent
15a5114599
commit
0a730c8a76
9 changed files with 149 additions and 14 deletions
|
|
@ -444,7 +444,9 @@ navigates to its view before awaiting the worker, so a failed first start also h
|
|||
Host `onError`, refused reloads and worker failures publish bounded, redacted owner notices (`LogNotices`), with
|
||||
Show logs and Dismiss. Notices keep the latest error per source (at most 50 sources); normal shutdown/abort
|
||||
messages do not become worker-failure notices. Archived-session admission refusals are not cached as crashes,
|
||||
so restoring an archive still works without an extra Retry. Neither guests nor workers may read or dismiss notices, or invoke
|
||||
so restoring an archive still works without an extra Retry. Archiving stops the worker with
|
||||
`SessionWorkerControl.suspend`, not `stop`: holders of the session's objects (a page's lingering conversation) wait
|
||||
suspended until a restore (`retry`) or their release, instead of starting a worker the archive refuses. Neither guests nor workers may read or dismiss notices, or invoke
|
||||
the worker retry control. Dev controls additionally publish their own reload/restart results.
|
||||
|
||||
The owner-only `logs` plugin adds **Logs** to `sidebar-foot:logs`. Its sheet selects Server, session workers,
|
||||
|
|
@ -543,7 +545,7 @@ translated phone drawer and intercept chat taps.
|
|||
Chord v2's `buildFacet` against the API.
|
||||
- **Runtime registries and locals** (`src/runtime`): `Routes` (HTTP by `METHOD /path`, exact path), `WorkerInitValues`
|
||||
(spawn parameters contributed per plugin; a throw refuses the start, e.g. archived sessions), `Hosts` (worker
|
||||
states, stop), `HarnessHost`/`HarnessNative`, `Extensions`, `HarnessConfig`, `Slots`,
|
||||
states, restart for the holders), `HarnessHost`/`HarnessNative`, `Extensions`, `HarnessConfig`, `Slots`,
|
||||
`useObject`/`useReadable`/`useStatus`.
|
||||
- **No configuration process globals.** Diagnostics alone have native process-scoped buffers because they capture
|
||||
stdout/stderr before/after object activation and survive facet reload. Host configuration is the core's: `Server` (server: `info` = data dir,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue