Skip to content

plimsoll v0.17.2

Choose a tag to compare

@carrollco carrollco released this 03 Oct 00:14
· 19 commits to main since this release

Fixes from a review of v0.17.1: the warm pool's split now stays put under demand that takes turns at any pool size, a failing session call is proven to come back as a result before sessions are served, and the docker provider's shutdown no longer races its pool.

Sessions

  • The warm pool's split holds at every size. v0.17.1's fix assumed small pools and two language sets: in larger pools one open still moved a set's share by up to size/16 of a container, so sessions alternating between JavaScript and Python moved a container on every open in odd pools of 9 or more, as did three sets in turn from 7 up. One open now moves a set's share by at most a quarter of a container (its weight is 1/(4 x pool size) in a pool of more than 4), and a container moves only when the move is worth more than 1.75 containers. In simulation, demand that takes turns or runs a few sessions of each moved nothing once settled at any size from 1 to 32, and random hints cost under 0.02 extra container starts per session; a lasting change still moves the pool within a few turnovers. docs/sessions.md, "A warm pool".
  • The session startup check now runs a call whose code exits 3 and serves no sessions unless it comes back as a result with exit 3, on any provider.
  • A pool whose image no longer runs a language the pool was asked for makes what it can and settles, instead of remaking the same container without pause. Embedders only.
  • The docker provider's Drain no longer waits on container removals the pool may still add to when its context ended first (a data race), and a pool started after Drain is refused. Embedders only.

Images

  • Preflight refuses an image whose ENV sets NODE_DEBUG or NODE_DEBUG_NATIVE. NODE_DEBUG=esm makes node write to stderr before a call's start marker, so since v0.17.1 every failing session snippet on such an image came back as an error instead of its exit code.

Clients

  • @plimsollmark/client and the Python client are at 0.17.2, unchanged apart from the version.

Upgrading

  • An image whose ENV sets NODE_DEBUG or NODE_DEBUG_NATIVE now fails Preflight.
  • StartSessionPool after Drain returns an error.