Merged
Conversation
Owner
ServerSideHannes
commented
Jan 22, 2026
- Update Docker image to ghcr.io/serversidehannes/s3proxy-python:latest
- Update Helm install commands to use OCI registry
- Remove testing section
… and helm chart restructuring - Refactor handlers into modular packages (objects/, multipart/) - Add memory-based concurrency limiting (replacing count-based) - Add state management with Redis coordination and recovery - Add streaming utilities and metrics collection - Restructure helm chart (manifests/ -> chart/) with PDB and helpers - Consolidate and expand e2e tests (clickhouse, elasticsearch, postgres, scylla, s3-compat) - Add comprehensive unit and integration test suites - Slim down Dockerfile and improve CI workflows (add lint, test) - Harden error handling, input validation, XML escaping, and streaming safety - Update README and add chart configuration reference - Fix data loss on multipart complete and part retry
ff075a9 to
27a668c
Compare
- Make BACKPRESSURE_TIMEOUT configurable via S3PROXY_BACKPRESSURE_TIMEOUT env var - Replace test_concurrent_uploads_bounded with test_backpressure_queues_concurrent_uploads (tests that queued requests succeed instead of asserting immediate 503) - Replace test_rejection_is_fast_no_body_read with test_rejection_after_backpressure_timeout (uses 1s timeout to actually trigger rejections) - Remove retries>0 assertions from memory-bounded tests (backpressure queues requests instead of rejecting, so retries don't happen with 30s timeout)
Run s3proxy in a 128MB memory-constrained container and hammer it with concurrent large uploads. If the memory limiter fails, the kernel OOM-kills the process (exit code 137) — a binary pass/fail. - Add s3proxy service to docker-compose with mem_limit=128m (oom profile) - Add test_memory_leak.py with PUT and multipart upload stress tests - Add make test-oom target and CI step
7edbf7a to
d0291cd
Compare
- Fix concurrency limiter to reject requests exceeding budget instead of silently capping reservations - Fix PUT memory estimate: streaming PUTs hold buffer + ciphertext (16MB not 8MB) - Add dynamic memory acquisition in GET handler for encrypted decrypts (ciphertext + plaintext buffered simultaneously) - Add container-based OOM proof test (256MB container, 5GB+ data) - Split CI into parallel unit/integration jobs, separate OOM workflow - Add make test-integration target
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.