| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
MinIO withdrew its public images and archived its source. SeaweedFS 4.48 matches MinIO on s3fs directory emulation, which GC relies on, and passes the object-storage suites from a cold pull. The image is overridable through DJ_TEST_S3_IMAGE. Refs #1560
- docker-compose: replace the minio service with s3 (SeaweedFS 4.48, the image the fixture uses); the old minio/minio image no longer pulls - rename the requires_minio marker to requires_s3 and the minio_client fixture to s3_client - default S3_ENDPOINT for external containers is localhost:8333 - drop the unused minio extra from testcontainers; relock pixi - update CONTRIBUTING.md Refs #1560
| Back | FazBrowse Home | New Git URL |
Closes #1560. Supersedes #1608.
Summary
The test suite and the docker-compose dev environment now use SeaweedFS as the S3-compatible object store, in place of MinIO. MinIO has stopped publishing public images and archived its source: minio/minio is gone from Docker Hub, quay.io/minio/minio requires authentication, and the Chainguard build adopted in #1559 depends on a third party rebuilding software that no longer gets upstream fixes.
Only the test and development setup changes; no library code is touched. DataJoint's support for MinIO as a user's storage backend (protocol: "minio" in migrate.py, and any S3-compatible endpoint generally) is unchanged.
Changes
Credentials (datajoint/datajoint) and the bucket name (datajoint.test) are unchanged.
Why SeaweedFS
#1560 set the bar: DataJoint reaches object storage through s3fs, which emulates directories over S3 listing, and garbage collection decides what is orphaned by walking that emulation. A server that lists differently would not error; it would make GC misclassify files while test_gc still passed. That rules out lenient mocks (moto, s3mock) as the default. SeaweedFS is a real object store (Apache-2.0, public image, monthly releases), and it was tested first; Garage was the fallback and was not needed.
Testing
Listing fidelity. A probe built the same tree on Chainguard MinIO and on SeaweedFS through s3fs: nested prefixes, a zero-byte directory marker, a marker that also has children, an empty object, and a missing path. It recorded isdir, exists, ls, find (with and without directories), walk, du, isfile on the marker, and the tree after a recursive rm. The outputs were identical.
Suites.
Auth. Credentials are enforced: a request with a wrong secret is rejected.
Notes for reviewers