cloudflare / cloudflare/developer-platform
Cloudflare Artifacts git push returns HTTP 500 at ~64 MiB pack
- Lenguaje dominante
- Sin datos de lenguaje
- Estrellas
- 1
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
### What versions & operating system are you using?
```text
System:
OS: macOS 26.5
CPU: (10) arm64 Apple M1 Pro
Memory: 150.52 MB / 16.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 25.9.0 - /opt/homebrew/bin/node
npm: 11.12.1 - /opt/homebrew/bin/npm
pnpm: 11.0.6 - /opt/homebrew/bin/pnpm
bun: 1.3.10 - /Users/noam/.bun/bin/bun
npmPackages:
miniflare: ^4.20260424.0 => 4.20260521.0
wrangler: ^4.93.0 => 4.94.0
```
Also observed with:
```text
git version 2.50.1 (Apple Git-155)
```
### Please provide a link to a minimal reproduction
https://github.com/noamt/cloudflare-artifacts-64m-repro
### Describe the Bug
### Summary
Pushing a fresh Git repository to a fresh Cloudflare Artifacts repo fails with raw HTTP 500 once the reachable Git pack is about 64 MiB.
This looks like a Cloudflare Artifacts pack-processing issue:
- Wrangler Artifacts commands successfully create repos and issue repo-scoped write tokens.
- Synthetic pushes succeed through 63 one-megabyte random binary files (local `size-pack: 63.02 MiB`).
- The same shape fails at 64 one-megabyte random binary files (local `size-pack: 64.03 MiB`).
- The Git client receives a raw HTTP 500 during `git push`; no structured Artifacts error code is surfaced.
### Reproduction steps
1. Clone the minimal repro repository:
```bash
git clone https://github.com/noamt/cloudflare-artifacts-64m-repro.git
cd cloudflare-artifacts-64m-repro
git gc --prune=now
git count-objects -vH
```
Observed local pack size:
```text
size-pack: 64.03 MiB
```
2. Create a fresh Cloudflare Artifacts repository and issue a write token:
```bash
npx wrangler artifacts repos create --namespace --default-branch main --json
npx wrangler artifacts repos issue-token --namespace --scope write --ttl 1800 --json
```
3. Push the repro commit to the returned Artifacts remote using the issued token:
```bash
git -c credential.helper= push --force HEAD:refs/heads/main
```
4. Optional comparison: generate the same synthetic repo with 63 files instead of 64. In my testing, the 63-file repo produced `size-pack: 63.02 MiB` and pushed successfully.
### Threshold observed
```text
1 MiB pack: 1.00 MiB -> push succeeds
4 MiB pack: 4.00 MiB -> push succeeds
8 MiB pack: 8.00 MiB -> push succeeds
16 MiB pack: 16.01 MiB -> push succeeds
24 MiB pack: 24.01 MiB -> push succeeds
32 MiB pack: 32.01 MiB -> push succeeds
48 MiB pack: 48.02 MiB -> push succeeds
52 MiB pack: 52.02 MiB -> push succeeds
56 MiB pack: 56.02 MiB -> push succeeds
60 MiB pack: 60.02 MiB -> push succeeds
62 MiB pack: 62.02 MiB -> push succeeds
63 MiB pack: 63.02 MiB -> push succeeds
64 MiB pack: 64.02/64.03 MiB -> HTTP 500 / send-pack disconnect
```
### Expected behavior
Artifacts should either accept this push or fail with a documented, structured limit/error. If there is a per-push, pack-size, request-body, or service-memory limit near 64 MiB, it would be useful for that limit to be documented and surfaced as a structured Artifacts error instead of a raw Git-side HTTP 500.
### Actual behavior
The Git push fails with HTTP 500 and disconnects during `send-pack`.
### Please provide any relevant error logs
```text
error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date
```
Guía de contribución
Línea de trabajo
Comienza con el repositorio de reproducción mínima y ejecuta git gc --prune=now y git count-objects -vH para confirmar el pack de aproximadamente 64 MiB. Crea un repositorio Artifacts de prueba con Wrangler, emite un token de escritura y compara los pushes de 63 MiB y 64 MiB. Se considera terminado cuando el push de 64 MiB tiene éxito o devuelve un límite documentado y estructurado en lugar de un HTTP 500 sin procesar.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- git, node.js
- Área
- backend-api-design, cloud
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bien especificado
- Aptitud para principiantes
- 52/100