Conversation
(cherry picked from commit b9c77ec)
…tenance [Backport 2.33-maintenance] Fix: `QueryPathInfo` throws on invalid path error in daemon
Old code with size + (size % 8 ? 8 - (size % 8) : 0) also suffered from this. (cherry picked from commit d77c131)
…tenance [Backport 2.33-maintenance] libutil: Add overflow check to alignUp
Fixes "attribute 'x' is a thunk". (cherry picked from commit 2989a23)
…tenance [Backport 2.33-maintenance] builtins.flakeRefToString: Evaluate attributes
Idle connections in libcurl's connection pool can be silently dropped by the OS or intermediate firewalls/NATs before they can be reused, forcing new TCP connections to be created. This is especially problematic for HTTP/1.1 endpoints where multiplexing is unavailable. Enable TCP keep-alive with a 60-second idle/interval on all curl easy handles to prevent idle connection drops and improve connection reuse. (cherry picked from commit 736abd5)
…tyle option S3 binary caches now use virtual-hosted-style URLs by default for standard AWS endpoints. Path-style endpoints (s3.region.amazonaws.com) only serve HTTP/1.1, preventing HTTP/2 multiplexing and causing TCP TIME_WAIT socket exhaustion under high concurrency. Virtual-hosted-style endpoints (bucket.s3.region.amazonaws.com) support HTTP/2, enabling multiplexing with the existing CURLPIPE_MULTIPLEX configuration. Add a new `addressing-style` store option (auto/path/virtual) to control this behavior. `auto` (default) uses virtual-hosted-style for standard AWS endpoints and path-style for custom endpoints. `path` forces path-style for backwards compatibility. `virtual` forces virtual-hosted- style for all endpoints including custom ones. Fixes: NixOS#15208 (cherry picked from commit 759f6c8)
…tenance [Backport 2.33-maintenance] fix: NixOS#15208
Tagging release 2.33.3
📝 WalkthroughWalkthroughThis PR introduces S3 addressing-style configuration options (virtual-hosted, path-style, auto), updates error handling for invalid paths in QueryPathInfo, enables TCP keep-alive for HTTP connections, adds overflow detection to alignment functions, expands S3 URL test coverage, and bumps the version to 2.33.3 with corresponding release notes. Changes
Sequence DiagramsequenceDiagram
participant App as Application<br/>(e.g., nix copy)
participant Config as S3BinaryCacheStoreConfig
participant Parser as S3 URL Parser
participant Logic as toHttpsUrl() Logic
participant HTTP as HTTP Layer
App->>Config: Configure S3 store<br/>with addressing-style
Config->>Parser: Parse S3 URL with<br/>addressing-style param
Parser->>Parser: parseS3AddressingStyle()<br/>validate enum value
alt Invalid addressing-style
Parser-->>App: Throw InvalidS3AddressingStyle
end
Parser->>Logic: Provide ParsedS3URL with<br/>addressing-style
Logic->>Logic: Compute addressing mode<br/>(default Auto, consider<br/>endpoint type)
Logic->>Logic: Select endpoint format<br/>(virtual-hosted vs path-style)
Logic->>Logic: Handle dotted bucket<br/>names (path-style only)
Logic->>HTTP: Generate final HTTPS URL<br/>with correct format
HTTP->>HTTP: Execute request with<br/>TCP keep-alive enabled
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
| - Henry [**(@cootshk)**](https://github.com/cootshk) | ||
| - Martin Joerg [**(@mjoerg)**](https://github.com/mjoerg) | ||
| - Farid Zakaria [**(@fzakaria)**](https://github.com/fzakaria) | ||
| # Release 2.33.3 (2026-02-13) |
There was a problem hiding this comment.
This looks odd... But if upstream has it then I guess let's keep it.
There was a problem hiding this comment.
It's correct (though maybe the formatting won't look great).
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@doc/manual/source/release-notes/rl-2.33.md`:
- Around line 304-308: The fenced code block containing the example URL
"s3://my-bucket/key?region=us-east-1&addressing-style=path" needs a language tag
to satisfy markdownlint (MD040); update the triple-backtick fence to include a
tag such as ```text (or ```bash) before the URL so the block reads like ```text
followed by the URL and then closing backticks.
| Example using path-style for backwards compatibility: | ||
|
|
||
| ``` | ||
| s3://my-bucket/key?region=us-east-1&addressing-style=path | ||
| ``` |
There was a problem hiding this comment.
Add a language tag to the fenced code block.
This avoids MD040 warnings and keeps markdownlint happy.
📝 Suggested fix
- ```
+ ```text
s3://my-bucket/key?region=us-east-1&addressing-style=path</details>
<!-- suggestion_start -->
<details>
<summary>📝 Committable suggestion</summary>
> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
```suggestion
Example using path-style for backwards compatibility:
🧰 Tools
🪛 markdownlint-cli2 (0.20.0)
[warning] 306-306: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In `@doc/manual/source/release-notes/rl-2.33.md` around lines 304 - 308, The
fenced code block containing the example URL
"s3://my-bucket/key?region=us-east-1&addressing-style=path" needs a language tag
to satisfy markdownlint (MD040); update the triple-backtick fence to include a
tag such as ```text (or ```bash) before the URL so the block reads like ```text
followed by the URL and then closing backticks.
Motivation
Context
Summary by CodeRabbit
New Features
Bug Fixes