Skip to content

chore(deps): upgrade dependencies - #220

Merged
shikhar merged 3 commits into
mainfrom
chore/upgrade-deps
Nov 13, 2026
Merged

shikhar merged 3 commits into
mainfrom
chore/upgrade-deps

Conversation

@shikhar

@shikhar shikhar commented Nov 13, 2026

Copy link
Copy Markdown
Member

Brings dependencies up to date and removes some duplicate crates from the graph. Each change is a separate commit so it can be dropped on its own.

  • Lockfile: cargo +nightly update, which respects the 3-day minimum publish age in .cargo/config.toml. It updates 29 packages, all patch or minor releases: AWS SDK and Smithy crates (aws-sdk-s3 1.158.0, aws-smithy-runtime-api 1.21.0), syn, uuid, jiff, flate2, and others. bitflags 1.x and the defmt crates drop out of the graph.
  • axum-server 0.8.0 → 0.9.2: no code changes needed, and no new deprecations. 0.9 fixes graceful shutdown cancelling in-progress TLS handshakes. Its tls-rustls feature now enables TLS 1.2, but aws-smithy-http-client already enabled that through hyper-rustls, so the TLS versions the server accepts don't change. 0.9.1 was yanked.
    • 0.9.2 was published 2026-11-11, inside the cooldown, so it is listed in .github/dependency-cooldown/exceptions.toml. The 0.9.2 crate has no build script and uses #![forbid(unsafe_code)]. The exception can be removed after 2026-11-14.
  • prometheus: drop the default protobuf feature, since only the text encoder is used. This removes protobuf, protobuf-support, and the duplicate thiserror 1.x. disk_block_fits_its_full_pages checks the encoded metrics text and still passes.

cargo deny reports 18 duplicate crates, down from 20. The remaining ones come from crates that are already at their latest release, plus our own choice of parking_lot 0.13 from #215.

cargo deny check, clippy with warnings denied, rustfmt, the dependency cooldown check, and cargo nextest run --locked --all-features (206 passed, 1 skipped) all pass.

🤖 Generated with Claude Code

shikhar and others added 3 commits November 12, 2026 16:38
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0.9 fixes graceful shutdown cancelling in-progress TLS handshakes. No code
changes are needed. TLS 1.2 support was already enabled through
aws-smithy-http-client's hyper-rustls features, so the `tls-rustls` feature
now also enabling it changes nothing for us.

0.9.2 is inside the 3-day publish cooldown, so it is listed as an exception
until it ages out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Only the text encoder is used. This removes protobuf, protobuf-support, and the
duplicate thiserror 1.x from the dependency graph.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@greptile-apps

greptile-apps Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issues were found.

Summary

Updates dependencies, upgrades axum-server to 0.9.2, and removes the unused prometheus protobuf feature.

  • Cachey’s HTTPS server lets ongoing TLS handshakes finish during shutdown.
  • Prometheus keeps text metrics without its protobuf encoder.
  • Cachey builds against newer versions of its AWS and Rust dependencies.

Reviews (1) · Last reviewed commit: "chore(deps): drop prometheus's default p..." · Reviewed by Greptile

@shikhar
shikhar merged commit 89bfb98 into main Nov 13, 2026
8 checks passed
@shikhar
shikhar deleted the chore/upgrade-deps branch November 13, 2026 00:58
@github-actions github-actions Bot mentioned this pull request Nov 13, 2026
shikhar added a commit that referenced this pull request Nov 13, 2026
Uses features from axum-server 0.9 (#220) and simplifies the server
setup. Only `src/bin/server.rs` changes.

## Accept errors

axum-server drops connection failures silently unless an
`accept_error_handler` is set. The handler now logs them:

- **Listener failures**, such as running out of file descriptors, log at
`warn`. axum-server waits 50 ms between retries, so this is at most
about 20 lines a second.
- **Connection setup failures**, mainly failed or timed-out TLS
handshakes, log at `debug` with the client address. Load-balancer health
checks and scanners make these routine. The server's subscriber is built
without `env-filter` and only shows `info` and above, so these stay
hidden as before.

## TCP keepalive

`TcpConfigAcceptor` replaces `NoDelayAcceptor`. It keeps `TCP_NODELAY`
from #218 and adds keepalive: probes start after 60s idle, repeat every
10s, and give up after 3 failures.

Without it, the server has no idle timeout on HTTP/1.1 or HTTP/2. A
client that disappears without closing its connection, because its host
died or a NAT or load balancer dropped the flow, leaves it open
indefinitely. The connection holds a task and a file descriptor and
counts in `cachey_connections`. Long-lived HTTP/2 connections make this
more likely.

## Server setup

The three TLS modes each repeated the bind, acceptor, handle and serve
steps. Now the TLS match only produces an `Option<RustlsConfig>` and the
server is configured once. The TLS config also loads before the cache is
built, so a bad certificate path fails before cache startup. The startup
log now reports the certificate source and the listen address on
separate lines.

## Testing

Clippy with warnings denied, rustfmt, and `cargo nextest run --locked
--all-features` (206 passed, 1 skipped) pass. The integration tests
serve through `axum::serve`, so I also ran the binary locally on macOS:

- **TLS (`--tls-self`):** HTTPS requests succeed over HTTP/2. Plain HTTP
to the TLS port and a bare connect-and-close log nothing at the default
level.
- **With `ulimit -n 64`:** opening 80 connections logged `failed to
accept connection` warnings (`Too many open files`). The server kept
serving afterwards.
- **Socket options:** `lsof` shows `SO=KEEPALIVE=60000` on an accepted
socket, and the TCP flags include `TF_NODELAY`.
- **Shutdown:** both TLS and plain HTTP modes exit cleanly on SIGTERM.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
shikhar pushed a commit that referenced this pull request Nov 13, 2026
## 🤖 New release

* `cachey`: 0.13.4 -> 0.13.5

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.13.5](0.13.4...0.13.5)
- 2026-11-13

### Added

- *(server)* log accept errors and enable TCP keepalive
([#221](#221))

### Fixed

- *(server)* set TCP_NODELAY on accepted connections
([#218](#218))

### Other

- *(deps)* upgrade dependencies
([#220](#220))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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