• Onebox v32.8.0
    Release / build-and-release (push) Successful in 21m16s
    Stable

    jkunz released this 2026-09-24 22:11:59 +00:00 | 20 commits to main since this release

    2026-09-24 - 32.8.0

    Features

    • Retire what the Corestore conversions left behind. onebox migration storage-leftovers --approve --checkpoint-reference <reference> removes, after an accepted data relocation, exactly the leftovers the journals name: the stopped recovery containers of the relocation, of every target replacement and of the original SmartDB 5 source, the emptied stage volume and its empty directory, the export volume, the pre-conversion smartstorage volume and directory, the legacy mongodb volume and directory when the platform cutover names a legacy MongoDB owner, and the MinIO directory the 4.2.0 decommission kept. It refuses unless the conversion is complete, the relocation is accepted and settled, no completed target replacement is pending, the platform cutover is complete and Corestore runs on the relocated volume corestore, and it records every artifact with its container identity, volume storage or directory inventory in its own record, storage-leftover-retirement. The export volume, the mongodb data and the MinIO directory are archived first into the backup repository as deterministic bundles and read back, and nothing is removed before each archive holds the same entries, sizes and SHA-256 digests the command hashed at approval; each archive is pinned in the repository when it is stored, with a reason naming the retirement and the artifact, and the read-back requires that pin, so retention never removes an archive and a deletion refuses one; an archive that fails its read-back is unpinned and removed again, and a rerun unpins and removes every other archive under the artifact's retirement tags and pins the one it adopts again if its pin is gone, so the repository keeps exactly the archives the record names; the record keeps each archive's snapshot id, and --restore-archive <artifact id> --to <directory> restores one. smartstorage is removed without an archive. Containers and volumes are removed by their recorded identity and never forced, and directories only while their inventory is the one captured at approval. Every step is journaled and resumes with the same command, and a resumed removal proves its artifact again: a volume Docker still holds must be the recorded local volume with no container mounting it, and what is left of a directory must still be the captured directory by device and inode with no other filesystem inside it. Onebox refuses to start in between, and --status prints the value-free record without initializing Onebox. Nothing reads MinIO's objects: the MinIO data is kept in its own on-disk format.
    • Keep the Corestore recovery-history checks working after the retirement. Startup and onebox migration corestore-engine --replace-completed-target-image no longer expect the recovery containers the retirement record names as removed, and the completed target replacement no longer requires the retired original source.
    • Refuse older Onebox builds by name after this upgrade. The data version moves to 0.22.0 through the step storage-leftover-retirement-fence, so a release up to 32.7.0, which expects the retired recovery containers at startup, refuses the database with TARGET_NOT_REACHABLE instead of failing on a missing container. The step writes nothing and refuses a malformed retirement record by name.
    • Add BackupManager.archiveDirectory, findDirectoryArchives, inventoryDirectoryArchive, pinDirectoryArchive, restoreDirectoryArchive and deleteDirectoryArchive, which keep a directory in the backup repository as a deterministic bundle outside any service backup: archiveDirectory stores it pinned with its caller's reason, inventoryDirectoryArchive reads back its content identity and its pin, and pinDirectoryArchive and deleteDirectoryArchive act only on a snapshot that carries every tag their caller names, the latter unpinning it before it deletes it; and readBundle({ hashFiles: true }), inventoryBundleMembers and inventoryBundleSource, which state a bundle's and a directory's content identity.

    Fixes

    • Stop creating directories while resolving a volume. OneboxDatabase.resolveServiceVolumeStorage created the bound directory of every local volume it resolved, so resolving the name of a retired volume, such as the conversion's stage volume, brought its directory back. The directory is now created when Onebox creates the Docker volume: by ensurePlatformDataVolume before it creates a platform data volume, and by createContainer for a service's bound volume Docker does not hold yet.
    • List migration corestore-data in onebox --help.

    Maintenance

    • Update @serve.zone/containerarchive from 0.3.2 to 0.4.0 for snapshot pins.
    • Cover the restore of a pre-4.x backup whose platform data was kept in MinIO: its minio resources still map to Corestore, which holds that data now.
    Downloads