Skip to content

Commit d4c1f9c

Browse files
feat: modular architecture, memory-safe concurrency, and OOM protection
- Refactor handlers into modular packages (objects/, multipart/, routing/) - Memory-based concurrency limiting with backpressure (replaces count-based) - Accurate memory accounting for encrypted GETs and streaming PUTs - Container-based OOM proof test (256MB container, 5GB+ data survives) - Redis state management with automatic recovery - Split CI into parallel unit/integration jobs, separate OOM workflow - Comprehensive unit and integration test suites (300+ tests) - Hardened error handling, XML escaping, and streaming safety - Helm chart restructured with PDB and standardized labels
1 parent 151535c commit d4c1f9c

144 files changed

Lines changed: 21341 additions & 6240 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/cluster-test.yml

Lines changed: 0 additions & 243 deletions
This file was deleted.

.github/workflows/docker-publish.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Build and Push Docker Image
33
on:
44
push:
55
branches: [main]
6-
tags: ['v*']
6+
tags: ['*']
77

88
jobs:
99
build-and-push:
@@ -20,8 +20,8 @@ jobs:
2020
id: tags
2121
run: |
2222
OWNER=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
23-
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
24-
VERSION=${GITHUB_REF#refs/tags/v}
23+
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
24+
VERSION=${GITHUB_REF#refs/tags/}
2525
echo "tags=ghcr.io/${OWNER}/s3proxy-python:${VERSION}" >> $GITHUB_OUTPUT
2626
else
2727
echo "tags=ghcr.io/${OWNER}/s3proxy-python:latest" >> $GITHUB_OUTPUT

.github/workflows/helm-lint.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Helm Lint
33
on:
44
pull_request:
55
paths:
6-
- 'manifests/**'
6+
- 'chart/**'
77

88
jobs:
99
helm-lint:
@@ -22,12 +22,12 @@ jobs:
2222
2323
- name: Update Helm dependencies
2424
run: |
25-
helm dependency update manifests/
25+
helm dependency update chart/
2626
2727
- name: Lint Helm chart
2828
run: |
29-
helm lint manifests/
29+
helm lint chart/
3030
3131
- name: Validate Helm template
3232
run: |
33-
helm template s3proxy manifests/ --debug > /dev/null
33+
helm template s3proxy chart/ --debug > /dev/null

.github/workflows/helm-publish.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Package and Push Helm Chart
33
on:
44
push:
55
branches: [main]
6-
tags: ['v*']
6+
tags: ['*']
77

88
jobs:
99
helm-publish:
@@ -30,30 +30,30 @@ jobs:
3030
3131
- name: Update Helm dependencies
3232
run: |
33-
helm dependency update manifests/
33+
helm dependency update chart/
3434
3535
- name: Get version
3636
id: version
3737
run: |
38-
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
39-
VERSION=${GITHUB_REF#refs/tags/v}
38+
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
39+
VERSION=${GITHUB_REF#refs/tags/}
4040
else
4141
VERSION="0.0.0-latest"
4242
fi
4343
echo "version=$VERSION" >> $GITHUB_OUTPUT
4444
4545
- name: Update chart version
4646
run: |
47-
sed -i "s/^version:.*/version: ${{ steps.version.outputs.version }}/" manifests/Chart.yaml
48-
sed -i "s/^appVersion:.*/appVersion: \"${{ steps.version.outputs.version }}\"/" manifests/Chart.yaml
47+
sed -i "s/^version:.*/version: ${{ steps.version.outputs.version }}/" chart/Chart.yaml
48+
sed -i "s/^appVersion:.*/appVersion: \"${{ steps.version.outputs.version }}\"/" chart/Chart.yaml
4949
5050
- name: Lint Helm chart
5151
run: |
52-
helm lint manifests/
52+
helm lint chart/
5353
5454
- name: Package Helm chart
5555
run: |
56-
helm package manifests/ --destination .
56+
helm package chart/ --destination .
5757
5858
- name: Push Helm chart to OCI registry
5959
run: |

.github/workflows/lint.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Lint
2+
3+
on:
4+
push:
5+
6+
jobs:
7+
ruff:
8+
runs-on: ubuntu-latest
9+
timeout-minutes: 5
10+
steps:
11+
- uses: actions/checkout@v6
12+
13+
- name: Install ruff
14+
run: pipx install ruff
15+
16+
- name: Ruff check
17+
run: ruff check .
18+
19+
- name: Ruff format
20+
run: ruff format --check .

.github/workflows/oom-test.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: OOM Proof Test
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- 's3proxy/**'
8+
- 'tests/**'
9+
workflow_dispatch:
10+
11+
jobs:
12+
oom-test:
13+
runs-on: ubuntu-latest
14+
timeout-minutes: 20
15+
steps:
16+
- uses: actions/checkout@v6
17+
18+
- name: Set up Python
19+
uses: actions/setup-python@v6
20+
with:
21+
python-version: '3.14'
22+
cache: 'pip'
23+
24+
- name: Install uv
25+
run: pip install uv
26+
27+
- name: Install dependencies
28+
run: uv sync --extra dev
29+
30+
- name: OOM proof test (256MB container)
31+
run: make test-oom

0 commit comments

Comments
 (0)