OXYGENHUB

Releases 1

OxygenFlow 0.5.0 v0.5.0 · ✔ signed by Andy McCall · andymccall ·

Trust and audit
  • A job's report says where its time went (issue #35). The finish report carries phases in milliseconds: image (fetching its image, when the runner lacked it), prepare (its workspace and disks), run (the sandbox from start to stop) and finish (outputs, caches and receipt), so a slow job shows whether it waited on an image, a fetch or itself.
  • The swarm reads images in order (issue #97). A fetcher took equally rare chunks at random, so a peer read its whole image in random order, a seek per chunk on a spinning disk: plex-1 got 2.3 GiB from earth-1 at about 2 MB/s. Neighbouring chunks now come in runs, shuffled so runners starting together still spread, and the picker no longer rescans what it has: picking a 142,244-chunk image went from 19 s to 0.35 s.
  • The swarm moves an image nobody pushed (issue #94). A runner that serves its peers tells the hub, at start and every ten minutes, which images it holds, and sends the manifest of each the hub keeps none of: the manifest alone, not the image. With a hub that keeps such manifests (oxygenhub#342), runners in the same site fetch the image from it. A fetch told the hub holds no chunks asks peers alone, and fails plainly when none can serve it. Design: docs/jetstream.md §8.1.1.
  • A WASM job stopped while its module compiles stops (issue #93). The time limit or a cancel moved the engine's epoch once; a store made after that set its deadline past it, so the job ran on forever (seen as a test spinning 35 minutes under load). Once stopped, the epoch now moves every tick until the job ends.
  • A runner claims only what its host can start (issue #92). An idle runner told the hub it had no memory limit, so it was offered sandboxes bigger than its machine, fetched their images, and declined them one by one (mars-1, 7 GB, and the 8 GiB jobs). A claim now asks for the budget's room capped at the host's free memory.
  • flow rootfs push waits for the hub to check a big image (oxygenhub#341). The hub reads the whole image before it accepts the manifest; the manifest request now waits up to an hour, not the 120 s every other request gets.
  • The Android image (issue #19). images/android: OpenJDK 17, the Android SDK (command-line tools 23.0, platform 37.0, build-tools 36.0.0, NDK 30.0), Gradle 9.6.0, Rust with the Android targets and cargo-ndk, and the OxygenHub app's crates and Gradle dependencies, so the app builds and tests offline. Each download is checked against its published hash.
  • flow runner bench says when load is not measured (issue #83): a Windows runner printed load 0.00; it now says load not measured here. Its kernel line reads Windows 10.0.26300 (checked with 0.4.0 in the Windows VM).

Assets