The GitHub Actions job "Required Checks" on texera.git/imaxon/rustfs has 
succeeded.
Run started by GitHub user parshimers (triggered by parshimers).

Head commit for run:
22ba4823a96db0d97f65139f76de0784412a25f6 / Ian Maxon <[email protected]>
feat(deploy): replace MinIO with RustFS as the object store

MinIO's images are gone: `minio/minio` and `minio/mc` 404 on Docker Hub, and
every `dl.min.io` binary path returns 410 Gone. That breaks three things on
main today — the single-node compose stack, the CI jobs that start an object
store, and the k8s lakekeeper-init job, which fetches `mc` from `dl.min.io`
at run time.

Swap in RustFS (Apache-2.0, S3-compatible) everywhere:

- single-node compose: `rustfs` + `rustfs-init` services, `RUSTFS_PORT`,
  `texera-rustfs` hostname, `rc` (RustFS's `mc` equivalent) for bucket setup.
- Helm chart: the bitnami `minio` subchart becomes the upstream `rustfs`
  chart, pinned to the same appVersion as the image. The service is
  `<release>-rustfs-svc` and the credentials Secret `<release>-rustfs-secret`
  with `RUSTFS_ACCESS_KEY`/`RUSTFS_SECRET_KEY` keys, so `_helpers.tpl` is
  retargeted. lakekeeper-init creates its bucket from an `rc` init container
  instead of downloading `mc`.
- Tests: `RustFSContainer` replaces testcontainers-scala's `MinIOContainer`
  (no RustFS module exists), built on `GenericContainer` with the
  `RUSTFS_ACCESS_KEY` credentials and the `/health` readiness probe.

One real behavioral difference surfaced. `AbortMultipartUpload` on an unknown
upload id is `NoSuchUpload` in the S3 API, and RustFS returns it; MinIO
answered such an abort with success. LakeFS wraps the backend's 404 in a 500,
so `StagedFileCleanupJob`'s existing 404 catch — written for this case but
never exercised under MinIO — no longer covers it. `isAlreadyAborted` now also
matches a 500 carrying `NoSuchUpload`, narrowly, so any other server error
still rolls the transaction back and retries next round.

Migration note: the object store's on-disk format is not shared, and the
volume/claim names change (`minio_data` -> `rustfs_data`, `minio-data-pvc` ->
`rustfs-data-pvc`). Existing deployments must copy their data across with an
S3 client; there is no in-place upgrade.

Co-Authored-By: Claude Opus 5 <[email protected]>

Report URL: https://github.com/apache/texera/actions/runs/34859248889

With regards,
GitHub Actions via GitBox

Reply via email to