The GitHub Actions job "Required Checks" on texera.git/main has failed.
Run started by GitHub user github-merge-queue[bot] (triggered by 
github-merge-queue[bot]).

Head commit for run:
12aeeab5816b12880c5f58970460adf87b548d89 / Ian Maxon <[email protected]>
feat(deploy): replace MinIO with RustFS as the default object store (#8542)

MinIO got all it's images deleted on Friday. This is just the latest
stage of the rugpull. It's been umaintained, and containing known severe
vulnerabilities since the maintainers did a hard private fork in
October.

RustFS quite similar to MinIO from a user standpoint. It seems to drop
in well. All the changes I see that Claude had to
do to was basically swap all the image names, adjust things in the
charts, and modify how the store is bootstrapped when
initializing a new cluster.

>From the mouth of the LLM itself:

- 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.


<!--
Thanks for sending a pull request (PR)! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
[Contributing to
Texera](https://github.com/apache/texera/blob/main/CONTRIBUTING.md)
  2. Ensure you have added or run the appropriate tests for your PR
  3. If the PR is work in progress, mark it a draft on GitHub.
  4. Please write your PR title to summarize what this PR proposes, we
    are following Conventional Commits style for PR titles as well:
- `fix` is for behavior that worked before and no longer does; adding or
removing a functionality, or reworking one so that user-facing behavior
intentionally changes, is a `feat`; a change that leaves the user-facing
        behavior unchanged is a `refactor`.
- A test-only PR is `test(<module>): ...`; repairing a broken test is
        `fix(test, <module>): ...`.
- A dependency bump is `fix(deps, <module>): ...` when it patches a CVE
and `chore(deps, <module>): ...` otherwise; GitHub Actions bumps take
        `ci` as their module, e.g. `chore(deps, ci): ...`.
- A PR targeting a release branch appends the version as the last scope
        component, e.g. `fix(deps, frontend, v1.2): ...`.
    See CONTRIBUTING.md for the full convention.
  5. Be sure to keep the PR description updated to reflect all changes.
-->

### What changes were proposed in this PR?
<!--
Please clarify what changes you are proposing. The purpose of this
section
is to outline the changes. Here are some tips for you:
  1. If you propose a new API, clarify the use case for a new API.
  2. If you fix a bug, you can clarify why it is a bug.
  3. If it is a refactoring, clarify what has been changed.
  3. It would be helpful to include a before-and-after comparison using 
     screenshots or GIFs.
  4. Please consider writing useful notes for better and faster reviews.
-->
Move the default storage provider in all charts from MinIO to RustFS.


### Any related issues, documentation, discussions?
<!--
Please use this section to link other resources if not mentioned
already.
1. If this PR fixes an issue, please include `Fixes #1234`, `Resolves
#1234`
or `Closes #1234`. If it is only related, simply mention the issue
number.
  2. If there is design documentation, please add the link.
  3. If there is a discussion in the mailing list, please add the link.
-->
Related discussion in https://github.com/apache/texera/discussions/3998
Bug in https://github.com/apache/texera/issues/8541
An alternative interim solution would be
https://github.com/apache/texera/pull/8529 .
The images haven't been deleted from Quay yet, and are exactly the same.
Clearly however this may have just been an oversight though. I don't
think the deletion
of the images was a mistake. 

### How was this PR tested?
<!--
If tests were added, say they were added here. Or simply mention that if
the PR
is tested with existing test cases. Make sure to include/update test
cases that
check the changes thoroughly including negative and positive cases if
possible.
If it was tested in a way different from regular unit tests, please
clarify how
you tested step by step, ideally copy and paste-able, so that other
reviewers can
test and check, and descendants can verify in the future. If tests were
not added,
please describe why they were not added and/or why it was difficult to
add.
-->
I started the branch in Skaffold on a cluster. It seemed to work OK, I
uploaded some
tiny amounts of data (<20MB files) and those seemed to work fine in a
very basic
workflow.

### Was this PR authored or co-authored using generative AI tooling?
<!--
If generative AI tooling has been used in the process of authoring this
PR,
please include the phrase: 'Generated-by: ' followed by the name of the
tool
and its version. If no, write 'No'. 
Please refer to the [ASF Generative Tooling
Guidance](https://www.apache.org/legal/generative-tooling.html) for
details.
-->
Generated-by: Claude Opus 5

Co-authored-by: Claude Opus 5 <[email protected]>

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

With regards,
GitHub Actions via GitBox

Reply via email to