R13 left the in-process controller's socket server open. It now closes the controller after its checks and asserts close reused the stop's release, as R2 does, and closes it again in finally for a failure partway through.
This commit is contained in:
1 parent
e9cfd92f89
commit
c1a8589753
2 files changed
+15
-1
No files matched your search
@@ -73,7 +73,9 @@ was false. Now an `events()` answer that isn't `ok` is returned as it is, with t
|
||||
- On release, the controller records one entry `["force-stop", "unavailable", <that reason>]`.
|
||||
- The unit stays active, and the shim still answers `hello`.
|
||||
|
||||
The `finally` restores mode 444, the kernel's mode for cgroup.events, and releases the scope. On
|
||||
Then `close()` reuses the stop's release, so there is still one entry. The `finally` closes the
|
||||
controller again (a second close is a no-op), restores mode 444, the kernel's mode for cgroup.events,
|
||||
and releases the scope. On
|
||||
3b0aef995's shim.mjs, R13 fails on the reason, because it reads "the engine cgroup is not empty".
|
||||
- K15 already covers a stop, as opposed to a release, with `events` unavailable: the shim gone, the file
|
||||
mode 000, or `engine` missing, each ending `uncertain` with its reason.
|
||||
@@ -87,3 +89,12 @@ packages/conversation/README.md:599 listed "R1–R3, R5–R12" for cohort.test.m
|
||||
|
||||
None yet. They need Sage's slot. Sage's sage-2082 says the run is on the pushed candidate in a clean
|
||||
worktree, and that it adds the control-board suite whole, so it counts as the gate run.
|
||||
|
||||
## Round 2
|
||||
|
||||
Filbert's C1 (#1755 comment 30125): R13 never closed its in-process controller, so the controller's
|
||||
socket server (controller.mjs:548) stayed open, and `reap` only kills units and engines. Only `close()`
|
||||
closes it (:1789). R13 now calls `h.ctrl.close()` after its checks and asserts one release entry, as R2
|
||||
does. Its `finally` also closes the controller, for a failure partway through. The second close is safe:
|
||||
`server` is null by then (:1791), and `#releaseScope` returns the cached release (:1634-1648). Branch
|
||||
gizmoduck/row250-r2, on e9cfd92f8.
|
||||
@@ -886,8 +886,11 @@ test("R13: a release with engine/cgroup.events unreadable answers the read's rea
|
||||
assert.deepEqual(h.ctrl.evidence.releases.map((r) => [r.why, r.outcome, r.reason]), [["force-stop", "unavailable", ev.unavailable]]);
|
||||
assert.ok(unitActive(unit), "the scope stays up");
|
||||
assert.equal((await shimRequest(shim, "hello")).ok, true, "the shim got no release");
|
||||
await h.ctrl.close();
|
||||
assert.equal(h.ctrl.evidence.releases.length, 1, "close reuses the stop's release");
|
||||
} finally {
|
||||
g.release("scope-release");
|
||||
await h.ctrl.close();
|
||||
if (events) {
|
||||
chmodSync(events, 0o444);
|
||||
await releaseCohort({ kind: "scope", unitName: unit, invocationId: h.rec().invocationId, shimSocket: shim });
|
||||
|
||||
Reference in new issue
Block a user