Skip to content

feat(libstore/s3-binary-cache-store): implement uploadPart()#14375

Merged
Mic92 merged 11 commits intoNixOS:masterfrom
lovesegfault:nix-s3-upload-part
Oct 27, 2025
Merged

feat(libstore/s3-binary-cache-store): implement uploadPart()#14375
Mic92 merged 11 commits intoNixOS:masterfrom
lovesegfault:nix-s3-upload-part

Conversation

@lovesegfault
Copy link
Member

@lovesegfault lovesegfault commented Oct 27, 2025

Motivation

Implement uploadPart() for uploading individual parts in S3 multipart
uploads:

  • Constructs URL with ?partNumber=N&uploadId=ID query parameters
  • Uploads chunk data with application/octet-stream mime type
  • Extracts and returns ETag from response

Context

Part-Of: #14330
Depends-On: #14377


Add 👍 to pull requests you find important.

The Nix maintainer team uses a GitHub project board to schedule and track reviews.

@github-actions github-actions bot added the store Issues and pull requests concerning the Nix store label Oct 27, 2025
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
@dpulls
Copy link

dpulls bot commented Oct 27, 2025

🎉 All dependencies have been resolved !

lovesegfault and others added 6 commits October 27, 2025 18:56
Implement `abortMultipartUpload()` for cleaning up incomplete multipart
uploads on error:

- Constructs URL with `?uploadId=ID` query parameter
- Issues `DELETE` request to abort the multipart upload
…king

Introduces `scanForReferencesDeep` to provide per-file granularity when
scanning for store path references, enabling better diagnostics for
cycle detection and `nix why-depends --precise`.
Replaces manual tree-walking and reference scanning with the new
scanForReferencesDeep function.
…nt-address

` nlohmann::json` instance and JSON Schema for `ContentAddress`
feat(libstore/s3-binary-cache-store): implement `abortMultipartUpload()`
…detailed

feat(libstore): add scanForReferencesDeep and use it for why-depends
Ericson2314 and others added 3 commits October 27, 2025 21:04
libexpr: store ExprList data in Exprs::alloc
…d()`

POST to key with `?uploads` query parameter, optionally set
`Content-Encoding` header, parse `uploadId` from XML response using
regex
Implement `uploadPart()` for uploading individual parts in S3 multipart
uploads:

- Constructs URL with `?partNumber=N&uploadId=ID` query parameters
- Uploads chunk data with `application/octet-stream` mime type
- Extracts and returns `ETag` from response
auto-merge was automatically disabled October 27, 2025 21:09

Head branch was pushed to by a user without write access

@github-actions github-actions bot added documentation new-cli Relating to the "nix" command labels Oct 27, 2025
@Mic92 Mic92 enabled auto-merge October 27, 2025 21:10
@Mic92 Mic92 added this pull request to the merge queue Oct 27, 2025
Merged via the queue into NixOS:master with commit dd0d006 Oct 27, 2025
16 checks passed
@lovesegfault lovesegfault deleted the nix-s3-upload-part branch October 27, 2025 23:59
@edolstra edolstra mentioned this pull request Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation new-cli Relating to the "nix" command store Issues and pull requests concerning the Nix store

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants