Skip to content

fix(compose): override MINIO_ENDPOINT for in-container minio-bootstrap#1298

Merged
zbnerd merged 4 commits into
masterfrom
fix/minio-bootstrap-endpoint
Jun 17, 2026
Merged

fix(compose): override MINIO_ENDPOINT for in-container minio-bootstrap#1298
zbnerd merged 4 commits into
masterfrom
fix/minio-bootstrap-endpoint

Conversation

@zbnerd

@zbnerd zbnerd commented Jun 17, 2026

Copy link
Copy Markdown
Owner

Summary

Add environment.MINIO_ENDPOINT=http://minio:9000 to minio-bootstrap service in docker-compose.yml. The .env.bootstrap file's localhost:9000 doesn't reach minio from inside the bootstrap container.

Why

Without this override, docker compose up exits with bootstrap error:

mc: <ERROR> Unable to initialize new alias from the provided credentials.
Get "http://localhost:9000/probe-bsign-XXX/?location=":
dial tcp [::1]:9000: connect: connection refused

.env.bootstrap must stay on localhost:9000 because it's also loaded by host-side tooling (mc CLI from outside docker). The override only applies to the in-container bootstrap.

Test plan

  • docker compose down minio-bootstrap && docker compose up minio-bootstrap exits clean
  • Bucket + 4 ILM rules + 4 SAs (ext-api, calculator, synchronizer, cleanup) + 4 policies attached
  • .env.bootstrap unchanged (host tooling still works)

🤖 Generated with Claude Code

zbnerd and others added 4 commits June 17, 2026 06:13
Hotfix already deployed to master (#1297). Sync develop so next release
branch picks it up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pipeline runs with max-in-flight=250, but the Nexon connection pool
was sized to 150. With 250 in-flight concurrent requests, 100 always
wait at pendingAcquire per wave. The wait serialized fetches into
two sub-waves, effectively doubling the batch duration.

Measured impact (2026-06-17):
- Old (pool=150):  rate=100/s, batch_wait=2.27s, fetch=1.5s
- Expected (pool=250): rate=200/s, single wave of 250

Direct curl on Nexon API: 150-200ms after TLS handshake. The 1.5s
measured in-pipeline is mostly pool acquire wait, not actual Nexon
processing.

This change matches pool size to in-flight size. Tuning knob
preserved: external-api.http-client.max-connections in YAML still
overrides the default.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Two related changes that combined give +15% throughput on item-equipment
phase (rate 85/s → 100/s sustained), measured 2026-06-17.

1. SchedulerRateLimiter: refillIntervally → refillGreedy
   - `refillIntervally(250, 1s)` adds 250 tokens at the start of each
     1-second boundary (t=0, t=1, t=2). Right after a full consume at
     t=0, the next 250 tokens only arrive at t=1, creating a hard
     "no tokens for ~0.5-1s" gap that serializes waves.
   - `refillGreedy(250, 1s)` adds tokens continuously at 250/s rate.
     After a full consume at t=0, the bucket fills smoothly. By the
     time the wave completes (fetch 1.3s), bucket is at capacity
     (capped at 250), so the next wave fires without idle wait.

2. application.yml: max-connections 150 → 250
   - Pool sized to 150 < in-flight 250. With 250 concurrent requests,
     100 always waited at pendingAcquire per wave. The wait serialized
     fetches into two sub-waves of 150+100, doubling the batch duration.
   - Bumped to 250 to match in-flight.

The two together: pool no longer serializes fetches, and rate limiter
no longer adds idle wait between waves. Throughput up ~17%.

Why not bump in-flight higher? Tested 500 in-flight: Nexon API
returned 314 HTTP 429s in 3min, fetchJoinMs went 1.3s → 5.0s,
rate dropped to 85/s. Nexon throttles per source IP; 500 concurrent
exceeds their allowance. Stayed at 250.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
minio-bootstrap runs inside the docker network, where `localhost`
resolves to the container itself, not the host. The .env.bootstrap
file keeps `MINIO_ENDPOINT=http://localhost:9000` for host-side
tooling (mc CLI), which doesn't reach the in-container minio.

Fix: add an `environment:` block on minio-bootstrap that overrides
MINIO_ENDPOINT to http://minio:9000, leaving .env.bootstrap intact.

Verified 2026-06-17: docker compose up minio-bootstrap exits clean
with bucket + ILM + 4 SAs + 4 policies attached.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@zbnerd zbnerd merged commit afbb7da into master Jun 17, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant