cloudflare / cloudflare/developer-platform

Cloudflare Artifacts git push returns HTTP 500 at ~64 MiB pack

Đang mở
#29 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
product:artifacts
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
1
Fork
0
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

### 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
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với repository tái hiện tối thiểu và chạy git gc --prune=now cùng git count-objects -vH để xác nhận pack có kích thước khoảng 64 MiB. Tạo một repository Artifacts tạm thời bằng Wrangler, cấp một write token và so sánh các push 63 MiB và 64 MiB. Được xem là hoàn tất khi push 64 MiB thành công hoặc trả về một giới hạn có cấu trúc, được ghi chép, thay vì HTTP 500 thô.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
git, node.js
Lĩnh vực
backend-api-design, cloud
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
52/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.