[Fix][CI] Replace the unpullable MinIO image in S3-backed E2E tests - #12478
Open
goutamadwant wants to merge 1 commit into
Open
goutamadwant wants to merge 1 commit into
goutamadwant wants to merge 1 commit into
Conversation
quay.io/minio/minio now rejects anonymous pulls with 401 and Docker Hub minio/minio no longer exists, so every S3-backed E2E test fails in startUp with ContainerFetchException. Switch the Databend, S3File, Hudi, Iceberg S3 and Paimon tests to bitnamilegacy/minio:2024.6.13, a build of the same MinIO release, pinned by digest. That image runs the container command as-is and has no writable /data, so start the server explicitly on /bitnami/minio/data (keeping --console-address :9001 for the MinIOContainer users). S3FileWithFilterIT now waits for /minio/health/ready instead of the first log line, since the image prints a banner before MinIO listens. Update the CLI benchmark docker-compose file and README the same way; its minio/mc init step now uses the same image, which ships mc.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose of this pull request
Every S3-backed E2E test currently fails before it runs, on every PR and on
dev, because the MinIO image can no longer be pulled from anywhere MinIO publishes it.#12287 and #12302 moved these tests from Docker Hub
minio/miniotoquay.io/minio/minio:RELEASE.2024-06-13T22-53-53Z. Since about 2026-09-24 12:30 UTC the quay.io image fails too:On CI, Testcontainers retries the pull for 2 minutes and then the class fails in
startUpwithContainerFetchException:Examples:
devbuild 35999263398 and nightly 36025021304:IcebergSourceIT,S3FileConnectDryRunIT,S3FileWithFilterIT,PaimonWithS3IT,DatabendITandDatabendCDCSinkITall fail instartUpwithContainerFetch Can't get Docker image. Jobs: all-connectors-it-2 (8), all-connectors-it-6 (8), all-connectors-it-7 (8), paimon-connector-it (8).Affected test classes: the six above, plus
HudiSeatunnelS3MultiTableITandHudiSparkS3MultiTableIT, which use the same image.Change
Use Bitnami's
bitnamilegacy/minio:2024.6.13instead, pinned by digest:bitnamilegacy/minio@sha256:aa1752895e6d2b420e394d55241d5b2c948960715db0a50bb648f430e447e645(the multi-arch index, amd64 and arm64). It can be pulled anonymously. Its binary reportsDEVELOPMENT.2024-06-13T22-53-53Z(commit20960b6a2ddb), which is the same source as theRELEASE.2024-06-13T22-53-53Zthe tests already pin; it is a source build, hence theDEVELOPMENTprefix. The Java tests use the digest-only reference; the compose file uses2024.6.13@sha256:....The image differs from the official one in two ways, so each container now starts the server with an explicit command:
minio), so the command isminio server .... The fourMinIOContainerusers keep--console-address :9001, as before./data, so the server uses the image's own data volume/bitnami/minio/data.Per file:
DatabendIT,DatabendCDCSinkIT),S3FileConnectDryRunIT: new image and command.S3FileWithFilterIT: new image and command. It also waits for/minio/health/readyinstead of the first log line, because this image prints a banner before the server starts listening.S3FileConnectDryRunITalready used the same wait.MinIOContainer, whose constructor setsserver --console-address :9001 /data. The command is overridden after construction withminio server --console-address :9001 /bitnami/minio/data.asCompatibleSubstituteFor("minio/minio")stays and works with the digest reference.seatunnel-cli/benchmark/docker/docker-compose.ymland its README had the same broken references (quay.io/minio/minioandminio/mc, which is also gone). Theminio-initstep now uses the same image, which includesmc. This file is not used by CI.Test logic, credentials, buckets and assertions are unchanged. The Paimon privilege tests use Paimon's file-based privilege manager on the bucket, not MinIO users or policies, so they need no MinIO admin features.
Alternatives I looked at:
cgr.dev/chainguard/minio: the free tier only serveslatest, which is a newer MinIO build and cannot be pinned by tag.MinIOContainerwaits on MinIO's health endpoint, andS3FileConnectDryRunITasserts MinIO's exact error codes (403,NoSuchBucket).bitnamilegacyis also a third-party namespace that could be removed later. A longer-term option is to publish a pinned copy under an Apache-controlled registry, aspublish-e2e-spark-images.yamldoes for the Spark images. I left that out of this PR.Before vs after (local, macOS arm64, Docker Desktop; engine images already local)
dev)startUp:ContainerFetch Can't get Docker image(401 from quay.io) after 432 s of pull retriesEngines are the PR-mode set with
RUN_ALL_CONTAINER=false. Hudi Spark and Iceberg S3 are already disabled on the other engines by@DisabledOnContainer.Does this PR introduce any user-facing change?
No. Only E2E test containers and the CLI benchmark's local Docker Compose file change.
How was this patch tested?
Local runs on macOS arm64 with Docker Desktop. JDK 8 is 1.8.0_172 and JDK 11 is Temurin 11.0.19. Env:
TEST_IN_PR=true RUN_ALL_CONTAINER=false RUN_ZETA_CONTAINER=true.devversions of the two S3File tests,./mvnw -B verify -DskipUT=true -DskipIT=false -pl seatunnel-e2e/seatunnel-connector-v2-e2e/connector-file-s3-e2e -am -Dit.test='S3FileConnectDryRunIT,S3FileWithFilterIT'(JDK 8). Both classes error instartUpwithContainerFetch, and the log shows401 UNAUTHORIZEDfromquay.io.--console-address :9001, reran on JDK 8: S3FileConnectDryRunIT 6/6, S3FileWithFilterIT 3/3, PaimonWithS3IT 4/4, both Hudi classes 1/1, IcebergSourceIT 1/1. This confirmsMinIOContaineraccepts the digest reference withasCompatibleSubstituteFor("minio/minio"). Since their 24/24 and 4/4 runs, the Databend classes only changed their image reference (to the same digest) and comment, and were not rerun.docker compose up -d minio minio-init.miniobecame healthy throughmc ready local, andminio-initexited 0 afterBucket created successfully 'local/bench'../mvnw spotless:applyon the changed modules.Not verified locally:
During one local Databend run, a Flink 1.18 TaskManager container failed to start. That is a local engine-container problem unrelated to this change. A rerun passed 24/24.
Check list
New License Guide
incompatible-changes.mdto describe the incompatibility caused by this PR.