Compare commits

...

2327 Commits

Author SHA1 Message Date
katelyn martin e8cc4ec47b
nit(app): remove frivolous code (#4094)
this commit removes a piece of code that has been commented out.

it additionally removes a variable binding that is not needed. `dst` is
not moved, so we do not need to bind the address of the destination
service to a variable, nor do we need to clone it.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-08-20 11:31:09 -04:00
dependabot[bot] b951a6c374
build(deps): bump tempfile from 3.20.0 to 3.21.0 (#4093)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.20.0 to 3.21.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-version: 3.21.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 10:13:45 -04:00
dependabot[bot] 7f6ac15f13
build(deps): bump cfg-if from 1.0.1 to 1.0.3 (#4092)
Bumps [cfg-if](https://github.com/rust-lang/cfg-if) from 1.0.1 to 1.0.3.
- [Release notes](https://github.com/rust-lang/cfg-if/releases)
- [Changelog](https://github.com/rust-lang/cfg-if/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cfg-if/compare/v1.0.1...v1.0.3)

---
updated-dependencies:
- dependency-name: cfg-if
  dependency-version: 1.0.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 10:13:04 -04:00
dependabot[bot] 75e9caaeae
build(deps): bump thiserror from 2.0.15 to 2.0.16 (#4091)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.15 to 2.0.16.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.15...2.0.16)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-version: 2.0.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 10:12:43 -04:00
dependabot[bot] 02bbb3d617
build(deps): bump prettyplease from 0.2.36 to 0.2.37 (#4090)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.36 to 0.2.37.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.36...0.2.37)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-version: 0.2.37
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-19 15:40:53 -04:00
dependabot[bot] 103c69ca75
build(deps): bump serde_json from 1.0.142 to 1.0.143 (#4088)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.142 to 1.0.143.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.142...v1.0.143)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-version: 1.0.143
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-19 15:40:39 -04:00
dependabot[bot] 4663cc4eb6
build(deps): bump tinyvec from 1.9.0 to 1.10.0 (#4087)
Bumps [tinyvec](https://github.com/Lokathor/tinyvec) from 1.9.0 to 1.10.0.
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: tinyvec
  dependency-version: 1.10.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-19 15:40:31 -04:00
dependabot[bot] 03374b9543
build(deps): bump hyper from 1.6.0 to 1.7.0 (#4089)
Bumps [hyper](https://github.com/hyperium/hyper) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: hyper
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-19 15:40:03 -04:00
Scott Fleener 4c9ae74450 chore(metrics): Use `linkerd-rustls` for crypto provider metrics
Now that the `rustls` initialization/configuration has been decoupled from `linkerd-meshtls`, we can get the provider directly from there. This handles the uninitialized case better, which should be less of a problem now that we always directly initialize the provider in main.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-19 14:06:32 -04:00
katelyn martin 94572d174d
refactor(http/classify): remove unused classification middleware (#4085)
`NewBroadcastClassification<C, X, N>` is not used.

`BroadcastClassification<C, S>` is only used by the `gate` submodule in
this crate.

this commit removes `NewBroadcastClassification`, since it is unused.
this commit demotes `channel` to an internal submodule, since it has no
external users.

the reëxport of `BroadcastClassification` is unused, though it is left
intact because it _is_ exposed by `NewClassifyGateSet`'s implementation
of `NewService<T>`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-08-19 09:33:29 -04:00
katelyn martin 897c7e85bc
refactor(app/core): remove unused `gate` reëxport (#4084)
`linkerd_app_core::classify` reëxports symbols from
`linkerd_proxy_http::classify::gate`.

nothing makes use of this, and these symbols are already reëxported from
`linkerd_proxy_http::classify`. existing callsites in the outbound proxy
import this middleware directly, or though the reëxport in
`linkerd_proxy_http`.

this commit removes this `pub use` directive, since it does nothing.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-08-18 20:58:18 +00:00
Scott Fleener 036ca75c00
chore(tls): Install default rustls provider in main (#4083)
* chore(tls): Move rustls into dedicated crate

Signed-off-by: Scott Fleener <scott@buoyant.io>

* chore(tls): Remove extraneous provider installs from tests

Signed-off-by: Scott Fleener <scott@buoyant.io>

* chore(tls): Install default rustls provider in main

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-18 19:55:09 +00:00
Scott Fleener 98e731d841
chore(tls): Move `rustls` configuration into dedicated crate (#4082)
* chore(tls): Move rustls into dedicated crate

Signed-off-by: Scott Fleener <scott@buoyant.io>

* chore(tls): Remove extraneous provider installs from tests

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-18 12:48:28 -07:00
Scott Fleener d5b12ea5e2 chore(tls): Hoist rustls directly into linkerd-meshtls
Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-18 15:37:05 -04:00
Scott Fleener a64170bd61
chore(tls): Refactor `rustls` shims out of `linkerd-meshtls` (#4080)
* chore(tls): Refactor shims out of meshtls

Meshtls previously assumed that mutliple TLS implementations could be used. Now that we've consolidated on rustls as the TLS implementation, we can remove these shims.

Signed-off-by: Scott Fleener <scott@buoyant.io>

* chore(tls): Refactor mode out of meshtls

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-18 12:27:09 -07:00
katelyn martin 973dfa6f4d
refactor(app/inbound): remove unused `proxy_metrics()` method (#4079)
this commit removes `linkerd_app_inbound::Inbound::proxy_metrics()`.

this accessor is not used anywhere.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-08-18 14:36:31 -04:00
Scott Fleener 17bff6144a
feat(tls): Explicitly include post-quantum key exchange algorithms (#4070)
* feat(tls): Explicitly include post-quantum key exchange algorithms

This explicitly sets the key exchange algorithms the proxy uses. It adds `X25519MLKEM768` as the most preferred algorithm in non-FIPS mode, and `SECP256R1MLKEM768` in FIPS mode.

Note that `X25519MLKEM768` is still probably appropriate for FIPS environments according to [NIST's special publication 800-56Cr2](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf) as it performs a FIPS-approved key-establishment first (`MLKEM768`), but we should evaluate this position more before committing to it.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-18 14:09:34 -04:00
katelyn martin d385094caa
nit(app/inbound): fix `InboundMetrics` doc comment (#4078)
this comment changes this comment in two ways:

1. fix a copy-paste typo. this should say "inbound", not "outbound".
2. add note that this is a "legacy" structure.

the equivalent structure in the outbound proxy was labeled as such
in https://github.com/linkerd/linkerd2-proxy/pull/2887.

see:

```rust
 /// Holds LEGACY outbound proxy metrics.
 #[derive(Clone, Debug)]
 pub struct OutboundMetrics {
     pub(crate) http_errors: error::Http,
     pub(crate) tcp_errors: error::Tcp,

     // pub(crate) http_route_backends: RouteBackendMetrics,
     // pub(crate) grpc_route_backends: RouteBackendMetrics,
     /// Holds metrics that are common to both inbound and outbound proxies. These metrics are
     /// reported separately
     pub(crate) proxy: Proxy,

     pub(crate) prom: PromMetrics,
 }
```

\- <dce6b61191/linkerd/app/outbound/src/metrics.rs (L22-L35)>

`authz::HttpAuthzMetrics`, `error::HttpErrorMetrics`,
`authz::TcpAuthzMetrics`, and `error::TcpErrorMetrics` all make use of
the "legacy" metrics implementation defined in `linkerd_metrics`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-08-18 14:01:37 -04:00
dependabot[bot] dce6b61191
build(deps): bump syn from 2.0.105 to 2.0.106 (#4077)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.105 to 2.0.106.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.105...2.0.106)

---
updated-dependencies:
- dependency-name: syn
  dependency-version: 2.0.106
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 12:12:30 -04:00
dependabot[bot] 28ebc47a6b
build(deps): bump cc from 1.2.32 to 1.2.33 (#4076)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.32 to 1.2.33.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.32...cc-v1.2.33)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.33
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 11:38:09 -04:00
dependabot[bot] 4bae7e98f2
build(deps): bump proc-macro2 from 1.0.97 to 1.0.101 (#4075)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.97 to 1.0.101.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.97...1.0.101)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-version: 1.0.101
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 11:37:49 -04:00
dependabot[bot] b89c4902c6
build(deps): bump thiserror from 2.0.14 to 2.0.15 (#4074)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.14 to 2.0.15.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.14...2.0.15)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-version: 2.0.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 11:26:07 -04:00
dependabot[bot] 8a80f1ce95
build(deps): bump async-trait from 0.1.88 to 0.1.89 (#4073)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.88 to 0.1.89.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.88...0.1.89)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-version: 0.1.89
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 10:47:36 -04:00
dependabot[bot] edc35d6e18
build(deps): bump derive_arbitrary from 1.4.1 to 1.4.2 (#4072)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.4.1 to 1.4.2.
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-version: 1.4.2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 10:44:51 -04:00
dependabot[bot] 99f322a9a0
build(deps): bump arbitrary from 1.4.1 to 1.4.2 (#4071)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.4.1 to 1.4.2.
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-version: 1.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 07:26:46 -07:00
Scott Fleener 627a5aad21
feat(tls): Remove boring as a TLS implementation (#4038)
* chore(tls): Remove ring as crypto backend

The broader ecosystem has mostly moved to aws-lc-rs as the primary rustls backend, and we should follow suit. This will also simplify the maintenance of the proxy's TLS implementation in the long term.

There will need to be some refactoring to clean up the rustls provider interfaces, but that will come in follow-ups.

Signed-off-by: Scott Fleener <scott@buoyant.io>

* feat(tls): Remove boring as a TLS implementation

BoringSSL, as we use it today, doesn't integrate well with the broader rustls ecosystem, so this removes it. This will also simplify the maintenance of the proxy's TLS implementation in the long term.

There will need to be some refactoring to clean up the rustls provider interfaces, but that will come in follow-ups.

Signed-off-by: Scott Fleener <scott@buoyant.io>

* chore(tls): Restore existing aws-lc feature names for compatibility

Signed-off-by: Scott Fleener <scott@buoyant.io>

* fix(tls): Use correct feature name for fips conditionals

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-14 23:27:58 -04:00
Scott Fleener 356f80b786
chore(tls): Improve `aws-lc` usage (#4069)
This adds a few small improvements to how we handle the `aws-lc` usage in the proxy:

- Pull provider customization to the `aws-lc` backend, reducing the amount that the module exposes
- Validate that the provider is actually FIPS compatible when fips is enabled
- Use the same signature verification algorithms in the `rustls` provider as we do in the cert verifier. Previously, the provider also included RSA_PSS_2048_8192_SHA256, which is marked as legacy and we don't have a strong reason to support.
- Add change detector tests for the cipher suites, key exchange groups, and signature algorithms. These should ideally never change unless `rustls` changes, at which point we can re-evaluate which algorithms are in use by the proxy.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-14 18:56:35 +00:00
dependabot[bot] 0b3bc61263
build(deps): bump hashbrown from 0.15.2 to 0.15.5 (#4068)
Bumps [hashbrown](https://github.com/rust-lang/hashbrown) from 0.15.2 to 0.15.5.
- [Release notes](https://github.com/rust-lang/hashbrown/releases)
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/hashbrown/commits/v0.15.5)

---
updated-dependencies:
- dependency-name: hashbrown
  dependency-version: 0.15.5
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-14 11:30:16 -04:00
Scott Fleener 2b0e723027
chore(deps): Update tonic deps to 0.13 (#4066)
* chore(deps): Update tonic deps to 0.13

Signed-off-by: Scott Fleener <scott@buoyant.io>

* chore(deps): Update linkerd2-proxy-api to 0.17.0

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-13 10:45:42 -07:00
Scott Fleener 2156c3d5e3
chore(tls): Remove `ring` as `rustls` crypto backend (#4029)
* chore(tls): Remove ring as crypto backend

The broader ecosystem has mostly moved to aws-lc-rs as the primary rustls backend, and we should follow suit. This will also simplify the maintenance of the proxy's TLS implementation in the long term.

There will need to be some refactoring to clean up the rustls provider interfaces, but that will come in follow-ups.

Signed-off-by: Scott Fleener <scott@buoyant.io>

* chore(tls): Restore existing aws-lc feature names for compatibility

Signed-off-by: Scott Fleener <scott@buoyant.io>

* fix(tls): Use correct feature name for fips conditionals

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-13 13:13:57 -04:00
dependabot[bot] c4cae21e11
build(deps): bump syn from 2.0.104 to 2.0.105 (#4067)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.104 to 2.0.105.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.104...2.0.105)

---
updated-dependencies:
- dependency-name: syn
  dependency-version: 2.0.105
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-13 10:09:16 -07:00
Scott Fleener 89c88caf5c
chore(deps): Manually remove unused dependencies (#4065)
Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-13 10:44:43 -04:00
dependabot[bot] bb612d3aac
build(deps): bump the symbolic group with 2 updates (#4063)
Bumps the symbolic group with 2 updates: [symbolic-common](https://github.com/getsentry/symbolic) and [symbolic-demangle](https://github.com/getsentry/symbolic).


Updates `symbolic-common` from 12.16.1 to 12.16.2
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.16.1...12.16.2)

Updates `symbolic-demangle` from 12.16.1 to 12.16.2
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.16.1...12.16.2)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-version: 12.16.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symbolic
- dependency-name: symbolic-demangle
  dependency-version: 12.16.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symbolic
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 17:18:00 -07:00
dependabot[bot] 7030cc51ed
build(deps): bump anyhow from 1.0.98 to 1.0.99 (#4062)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.98 to 1.0.99.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.98...1.0.99)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-version: 1.0.99
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 18:39:04 +00:00
dependabot[bot] af520dfd12
build(deps): bump proc-macro2 from 1.0.96 to 1.0.97 (#4061)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.96 to 1.0.97.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.96...1.0.97)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-version: 1.0.97
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 12:33:58 -04:00
dependabot[bot] ccf91dfb3e
build(deps): bump actions/checkout from 4.3.0 to 5.0.0 (#4060)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.3.0 to 5.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](08eba0b27e...08c6903cd8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 16:18:00 +00:00
dependabot[bot] 69cd164da1
build(deps): bump thiserror from 2.0.12 to 2.0.14 (#4059)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.12 to 2.0.14.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.12...2.0.14)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-version: 2.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 15:56:38 +00:00
dependabot[bot] feb5f87713
build(deps): bump libc from 0.2.174 to 0.2.175 (#4057)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.174 to 0.2.175.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.175/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.174...0.2.175)

---
updated-dependencies:
- dependency-name: libc
  dependency-version: 0.2.175
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 12:14:04 -04:00
dependabot[bot] fdd7f218a3
build(deps): bump actions/checkout from 4.2.2 to 4.3.0 (#4053)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 4.3.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](11bd71901b...08eba0b27e)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 11:06:10 -04:00
dependabot[bot] b4e2b7e24f
build(deps): bump glob from 0.3.2 to 0.3.3 (#4055)
Bumps [glob](https://github.com/rust-lang/glob) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/rust-lang/glob/releases)
- [Changelog](https://github.com/rust-lang/glob/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/glob/compare/v0.3.2...v0.3.3)

---
updated-dependencies:
- dependency-name: glob
  dependency-version: 0.3.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 11:05:55 -04:00
dependabot[bot] 1b07f277d7
build(deps): bump rustversion from 1.0.21 to 1.0.22 (#4056)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.21 to 1.0.22.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.21...1.0.22)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-version: 1.0.22
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 11:05:34 -04:00
dependabot[bot] 25cf0c7f11
build(deps): bump proc-macro2 from 1.0.95 to 1.0.96 (#4054)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.95 to 1.0.96.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.95...1.0.96)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-version: 1.0.96
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 14:52:05 +00:00
dependabot[bot] d46e7c0c82
build(deps): bump cc from 1.2.31 to 1.2.32 (#4051)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.31 to 1.2.32.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.31...cc-v1.2.32)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.32
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-08 13:28:21 -04:00
dependabot[bot] 3305a890b0
build(deps): bump slab from 0.4.10 to 0.4.11 (#4052)
Bumps [slab](https://github.com/tokio-rs/slab) from 0.4.10 to 0.4.11.
- [Release notes](https://github.com/tokio-rs/slab/releases)
- [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/slab/compare/v0.4.10...v0.4.11)

---
updated-dependencies:
- dependency-name: slab
  dependency-version: 0.4.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-08 13:28:01 -04:00
katelyn martin d850fa6f73
refactor(metrics): introduce a `legacy` namespace (#4050)
`linkerd-metrics` contains a suite of facilities for defining,
registering, and serving Prometheus metrics. these predate the
[`prometheus-client`](https://crates.io/crates/prometheus-client/)
crate, which should now be used for our metrics.

`linkerd-metrics` defines a `prom` namespace, which reëxports symbols
from the `prometheus-client` library. as the documentation comment for
this submodule notes, this should be used for all new metrics.

6b323d8457/linkerd/metrics/src/lib.rs (L30-L60)

`linkerd-metrics` still provides its legacy types in the public surface
of this library today, which can make it difficult to differentiate
between our two metrics implementations.

this branch introduces a new `legacy` namespace, to help clarify the
distinction between these two Prometheus implementations, and to smooth
the road to further adoption of `prometheus-client` interfaces across
the proxy.

---

* refactor(metrics): introduce empty `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `Counter` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `Gauge` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `Histogram` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `Metric` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `FmtMetric` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `FmtMetrics` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `FmtLabels` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `LastUpdate` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `Store` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `SharedStore` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `Serve` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `NewMetrics` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor: move `Factor` into `legacy` namespace

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-08-07 15:33:17 -04:00
dependabot[bot] 6b323d8457
build(deps): bump governor from 0.10.0 to 0.10.1 (#4049)
Bumps [governor](https://github.com/boinkor-net/governor) from 0.10.0 to 0.10.1.
- [Release notes](https://github.com/boinkor-net/governor/releases)
- [Changelog](https://github.com/boinkor-net/governor/blob/master/release.toml)
- [Commits](https://github.com/boinkor-net/governor/compare/v0.10.0...v0.10.1)

---
updated-dependencies:
- dependency-name: governor
  dependency-version: 0.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-07 10:37:18 -04:00
dependabot[bot] 7f58cd56ed
build(deps): bump tokio-metrics from 0.4.3 to 0.4.4 (#4048)
Bumps [tokio-metrics](https://github.com/tokio-rs/tokio-metrics) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/tokio-rs/tokio-metrics/releases)
- [Changelog](https://github.com/tokio-rs/tokio-metrics/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/tokio-metrics/commits)

---
updated-dependencies:
- dependency-name: tokio-metrics
  dependency-version: 0.4.4
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-07 10:37:00 -04:00
Scott Fleener 43e3f630ec feat(tls): Include rustls crypto provider metrics
This includes a small set of metrics about the currently installed rustls crypto provider and the algorithms it is configured to use.

We don't have 100% assurance that a default crypto provider has been installed before registering the metric, but in local testing it never appeared to be a problem. When we refactor the rustls initialization we can add an extra guarantee that we've initialized it by this point.

Example metric:
```
# HELP rustls_info Proxy TLS info.
# TYPE rustls_info gauge
rustls_info{tls_suites="TLS13_AES_128_GCM_SHA256,TLS13_AES_256_GCM_SHA384,TLS13_CHACHA20_POLY1305_SHA256,",tls_kx_groups="X25519,secp256r1,secp384r1,X25519MLKEM768,",tls_rand="AwsLcRs",tls_key_provider="AwsLcRs",tls_fips="false"} 1
```

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-07 10:01:07 -04:00
Oliver Gould 7758436831
chore(ci): exercise all release platforms on workflow change (#4047)
We only build linux/amd64 during typical release CI runs. This means that the platform-
specific builds are not exercised. This change updates the release workflow so that
all platforms are built whenever the workflow itself is changed.
2025-08-06 14:29:05 +00:00
dependabot[bot] c0f921af33
build(deps): bump zerovec from 0.11.3 to 0.11.4 (#4046)
Bumps [zerovec](https://github.com/unicode-org/icu4x) from 0.11.3 to 0.11.4.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/compare/ind/zerovec@0.11.3...ind/zerovec@0.11.4)

---
updated-dependencies:
- dependency-name: zerovec
  dependency-version: 0.11.4
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-06 09:48:31 -04:00
Scott Fleener b558ce5320
chore(meshtls-rustls): use aws-lc as the default crypto backend (#4043)
The broader ecosystem has mostly moved to `aws-lc-rs` as the primary `rustls` backend, and we should follow suit. This will also simplify the maintenance of the proxy's TLS implementation in the long term.

This requires some extra configuration for successful cross-compilation, ideally we can remove this extra configuration once linkerd/dev v48 is available.

This doesn't remove `ring` as a crypto backend, that can come in a follow-up at https://github.com/linkerd/linkerd2-proxy/pull/4029
2025-08-05 13:22:26 -07:00
dependabot[bot] 894d3506df
build(deps): bump socket2 from 0.5.10 to 0.6.0 (#4003)
* build(deps): bump socket2 from 0.5.10 to 0.6.0

Bumps [socket2](https://github.com/rust-lang/socket2) from 0.5.10 to 0.6.0.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/commits)

---
updated-dependencies:
- dependency-name: socket2
  dependency-version: 0.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(proxy/transport): use `original_dst_v*` methods

these have been renamed.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: katelyn martin <kate@buoyant.io>
2025-08-05 13:09:56 -07:00
dependabot[bot] 01e7ec0820
build(deps): bump zerovec from 0.11.2 to 0.11.3 (#4044)
Bumps [zerovec](https://github.com/unicode-org/icu4x) from 0.11.2 to 0.11.3.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits/ind/zerovec@0.11.3)

---
updated-dependencies:
- dependency-name: zerovec
  dependency-version: 0.11.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-05 13:00:54 -07:00
dependabot[bot] 4f563fab68
build(deps): bump tokio-metrics from 0.4.2 to 0.4.3 (#3995)
Bumps [tokio-metrics](https://github.com/tokio-rs/tokio-metrics) from 0.4.2 to 0.4.3.
- [Release notes](https://github.com/tokio-rs/tokio-metrics/releases)
- [Changelog](https://github.com/tokio-rs/tokio-metrics/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/tokio-metrics/compare/v0.4.2...v0.4.3)

---
updated-dependencies:
- dependency-name: tokio-metrics
  dependency-version: 0.4.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-05 07:50:44 -07:00
dependabot[bot] 168c4bff7d
build(deps): bump tokio from 1.45.0 to 1.47.1 (#4040)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.45.0 to 1.47.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.45.0...tokio-1.47.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.47.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-05 09:44:53 -04:00
dependabot[bot] 0df8cdbedb
build(deps): bump cc from 1.2.30 to 1.2.31 (#4042)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.30 to 1.2.31.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.30...cc-v1.2.31)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.31
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 14:59:55 -07:00
dependabot[bot] 1b837b7f91
build(deps): bump tokio-util from 0.7.15 to 0.7.16 (#4041)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.15 to 0.7.16.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.15...tokio-util-0.7.16)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-version: 0.7.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 14:59:00 -07:00
katelyn martin 40078c96ca
chore(deps): update from tokio 1.45 to 1.47 (#4032)
* build(deps): bump tokio from 1.45.0 to 1.47.0

Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.45.0 to 1.47.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.45.0...tokio-1.47.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

---

chore(deny): ignore socket2@v0.5

there is now a v0.6 used by the latest tokio.

while we wait for this new version to propagate through the ecosystem,
allow for two socket2 dependencies.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/integration): remove inbound_io_err test

> @cratelyn I think it would be appropriate to remove these tests, given
> that they can no longer behave properly. I don't think that this test
> case is particularly meaningful or load bearing, it's best just to
> unblock the dependency updates.

\- <https://github.com/BuoyantIO/enterprise-linkerd/issues/1645#issuecomment-3046905516>

Co-authored-by: Oliver Gould <ver@buoyant.io>
Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/integration): remove inbound_multi test

this test exercises the same thing that the previous two tests do, as
the comment at the top of it points out.

this test is redundant, and we have removed the i/o error coverage that
this was redunant with. let's remove it.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2025-08-04 09:04:02 -07:00
dependabot[bot] 9eaf1425a7
build(deps): bump signal-hook-registry from 1.4.5 to 1.4.6 (#4039)
Bumps [signal-hook-registry](https://github.com/vorner/signal-hook) from 1.4.5 to 1.4.6.
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vorner/signal-hook/compare/registry-v1.4.5...registry-v1.4.6)

---
updated-dependencies:
- dependency-name: signal-hook-registry
  dependency-version: 1.4.6
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 08:08:41 -07:00
dependabot[bot] 842452368c
build(deps): bump rustc-demangle from 0.1.25 to 0.1.26 (#4026)
Bumps [rustc-demangle](https://github.com/rust-lang/rustc-demangle) from 0.1.25 to 0.1.26.
- [Release notes](https://github.com/rust-lang/rustc-demangle/releases)
- [Changelog](https://github.com/rust-lang/rustc-demangle/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/rustc-demangle/commits/rustc-demangle-v0.1.26)

---
updated-dependencies:
- dependency-name: rustc-demangle
  dependency-version: 0.1.26
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 11:07:17 -04:00
dependabot[bot] 09333dc2b2
build(deps): bump the symbolic group with 2 updates (#4035)
Bumps the symbolic group with 2 updates: [symbolic-common](https://github.com/getsentry/symbolic) and [symbolic-demangle](https://github.com/getsentry/symbolic).


Updates `symbolic-common` from 12.16.0 to 12.16.1
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.16.0...12.16.1)

Updates `symbolic-demangle` from 12.16.0 to 12.16.1
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.16.0...12.16.1)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-version: 12.16.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symbolic
- dependency-name: symbolic-demangle
  dependency-version: 12.16.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symbolic
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2025-08-01 18:28:55 +00:00
dependabot[bot] ddc847ccc4
build(deps): bump serde_json from 1.0.141 to 1.0.142 (#4036)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.141 to 1.0.142.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.141...v1.0.142)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-version: 1.0.142
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-01 11:23:49 -07:00
Scott Fleener 8d56746c1f
feat!(ci): Remove arm/v7 support (#4037)
This architecture has become too significant of a maintenance burden, and isn't used often enough to justify the associated maintenance cost.

This removes arm/v7 from all the build infrastructure/dockerfiles/etc. Note that arm64 targets are still widely used and well supported.

Related: https://github.com/linkerd/linkerd2/pull/14308

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-08-01 13:26:12 -04:00
dependabot[bot] db0ed46978
build(deps): bump rustls from 0.23.29 to 0.23.31 in the rustls group (#4034)
Bumps the rustls group with 1 update: [rustls](https://github.com/rustls/rustls).


Updates `rustls` from 0.23.29 to 0.23.31
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.29...v/0.23.31)

---
updated-dependencies:
- dependency-name: rustls
  dependency-version: 0.23.31
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rustls
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-31 05:53:48 -07:00
katelyn martin 1d94082d4b
chore(deps): downgrade deranged from 0.4.1 to 0.4.0 (#4031)
- https://crates.io/crates/deranged/versions
- https://crates.io/crates/deranged/0.4.1

this version has been yanked. this commit addresses this cargo deny
warning:

```
warning[yanked]: detected yanked crate (try `cargo update -p deranged`)
   ┌─ /home/katie/linkerd/linkerd2-proxy/Cargo.lock:41:1
   │
41 │ deranged 0.4.1 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ yanked version
   │
```

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-07-29 18:14:11 +00:00
dependabot[bot] 744e29e0bd
build(deps): bump rangemap from 1.5.1 to 1.6.0 (#4028)
Bumps [rangemap](https://github.com/jeffparsons/rangemap) from 1.5.1 to 1.6.0.
- [Changelog](https://github.com/jeffparsons/rangemap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jeffparsons/rangemap/commits)

---
updated-dependencies:
- dependency-name: rangemap
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-29 10:59:35 -04:00
katelyn martin 83373d6b89
chore(deps): bump h2 from 0.4.8 to 0.4.11 (#4024)
- https://github.com/hyperium/h2/compare/v0.4.8...v0.4.11

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-07-28 21:23:25 +00:00
Scott Fleener 1dcb7a7d1a
fix(rustls): Make `ring` and `aws-lc-rs` exclusive features (#4009)
Currently, disabling the `ring` feature does not actually disable the dependency across the tree. Doing so requires a couple of tightly coupled steps:

- Making `ring` and `aws-lc` exclusive features, raising a compile error if they are both enabled.
- Removing a direct dependency on some `ring` types, and instead going through `rustls` for equivalent functionality.
- Removing a direct dependency on the `ring` crypto provider for integration tests, and instead using the provider from `linkerd-meshtls`.
- Installing the default crypto provider globally for the process and re-using it when requested, mostly to make the tests pass.

This was tested using a temporary `cargo deny` config that forbid `ring` when `aws-lc-rs` was used, and vice-versa. Note that it doesn't completely remove ring for dev dependencies, but that can be done as a follow-up.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-07-28 15:28:47 -04:00
Scott Fleener 68a6b6d1e8
fix(tls): Update preferred cipher suite order (#4015)
This makes two changes to the preferred cipher suite order.
- Prefer AES algorithms over ChaCha20. AES is significantly faster when AES hardware is present, and AES hardware is on all x86 CPUs since ~2010, and all ARM server CPUs for a similar amount of time. For these reasons it's reasonable to default to AES for modern deployments, and it's the same default that `aws-lc-rs` makes anyway.
- Remove ChaCha20 when FIPS is enabled. It's no longer a supported algorithm, so we shouldn't have it as an option.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-07-28 15:05:05 -04:00
Oliver Gould cdbb55fd53
build(linkerd2-proxy): make release artifacts auditable (#4023)
Auditing tools like Syft cannot inspect proxy dependencies, which makes it difficult to inspect the state of a binary. This change updates the release process to use cargo-auditable, which documents the proxy's crate dependencies in its release binary.
2025-07-28 17:00:06 +00:00
Oliver Gould 5997453393
build(deps): update linkerd/dev to v47 (#4022) 2025-07-28 11:49:06 -05:00
Joe 10643b9525
updating metrics descriptions (#4020)
Signed-off-by: Joe F <joe@buoyant.io>
2025-07-25 20:08:56 +00:00
dependabot[bot] fd0ea24b87
build(deps): bump serde_json from 1.0.140 to 1.0.141 (#4021)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.140 to 1.0.141.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.140...v1.0.141)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-version: 1.0.141
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-25 16:07:16 -04:00
dependabot[bot] 3a159be91a
build(deps): bump prettyplease from 0.2.35 to 0.2.36 (#4018)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.35 to 0.2.36.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.35...0.2.36)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-version: 0.2.36
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-24 10:03:57 -04:00
dependabot[bot] b3bc6fe8cd
build(deps): bump hyper-util from 0.1.15 to 0.1.16 (#4019)
Bumps [hyper-util](https://github.com/hyperium/hyper-util) from 0.1.15 to 0.1.16.
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.15...v0.1.16)

---
updated-dependencies:
- dependency-name: hyper-util
  dependency-version: 0.1.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-24 10:02:38 -04:00
dependabot[bot] 5a00b70d11
build(deps): bump aws-lc-rs from 1.13.2 to 1.13.3 (#4016)
Bumps [aws-lc-rs](https://github.com/aws/aws-lc-rs) from 1.13.2 to 1.13.3.
- [Release notes](https://github.com/aws/aws-lc-rs/releases)
- [Commits](https://github.com/aws/aws-lc-rs/compare/v1.13.2...v1.13.3)

---
updated-dependencies:
- dependency-name: aws-lc-rs
  dependency-version: 1.13.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-23 07:02:52 -07:00
dependabot[bot] b91dd3e7af
build(deps): bump rcgen from 0.14.2 to 0.14.3 (#4017)
Bumps [rcgen](https://github.com/rustls/rcgen) from 0.14.2 to 0.14.3.
- [Release notes](https://github.com/rustls/rcgen/releases)
- [Commits](https://github.com/rustls/rcgen/compare/v0.14.2...v0.14.3)

---
updated-dependencies:
- dependency-name: rcgen
  dependency-version: 0.14.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-23 07:02:25 -07:00
dependabot[bot] a699b1cf58
build(deps): bump cc from 1.2.29 to 1.2.30 (#4014)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.29 to 1.2.30.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.29...cc-v1.2.30)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.30
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-22 09:35:32 -04:00
dependabot[bot] 9f3c45874e
build(deps): bump rand from 0.9.1 to 0.9.2 (#4013)
Bumps [rand](https://github.com/rust-random/rand) from 0.9.1 to 0.9.2.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/rand_core-0.9.1...rand_core-0.9.2)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-22 09:35:19 -04:00
Oliver Gould 1de179e178
chore(deps): update jemallocator 0.5 to tikv-jemallocator 0.6 (#4012)
tikv-jemallocator supersedes jemallocator. To enable jemalloc profiling, this change updates the dependency and adds a `jemalloc-profiling` feature so that profiling can be enabled at build time.
2025-07-18 17:42:41 -04:00
dependabot[bot] f9d7e08242
build(deps): bump the rustls group with 2 updates (#4010)
---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-version: 0.103.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rustls
- dependency-name: rustls
  dependency-version: 0.23.29
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rustls
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-18 07:48:31 -07:00
dependabot[bot] bd454b4be8
build(deps): bump the symbolic group with 2 updates (#4011)
---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-version: 12.16.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: symbolic
- dependency-name: symbolic-demangle
  dependency-version: 12.16.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: symbolic
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-18 07:48:06 -07:00
Oliver Gould b1f8fa5419
chore(ci): enable overriding the runner in workflows (#4008)
We use the ubuntu-24.04 runner by default, but in forks this may not be appropriate. This change updates the runners to support overriding via the LINKERD2_PROXY_RUNNER variable.
2025-07-17 17:22:42 -07:00
dependabot[bot] e04947610a
build(deps): bump aws-lc-rs from 1.13.1 to 1.13.2 (#4006)
---
updated-dependencies:
- dependency-name: aws-lc-rs
  dependency-version: 1.13.2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-17 11:05:10 -07:00
Oliver Gould 9c48e2471e
fix(app/env): limit default inbound connection pool size (#4007)
The inbound connection pool is effectively unlimited. This change configures a
default limit of 10K.
2025-07-17 16:47:32 +00:00
dependabot[bot] df38a5a2c9
build(deps): bump the rustls group across 1 directory with 3 updates (#3908)
* build(deps): bump the rustls group across 1 directory with 3 updates

Bumps the rustls group with 3 updates in the / directory: [rustls-webpki](https://github.com/rustls/webpki), [rustls](https://github.com/rustls/rustls) and [rustls-pki-types](https://github.com/rustls/pki-types).


Updates `rustls-webpki` from 0.103.1 to 0.103.2
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.103.1...v/0.103.2)

Updates `rustls` from 0.23.26 to 0.23.27
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.26...v/0.23.27)

Updates `rustls-pki-types` from 1.11.0 to 1.12.0
- [Release notes](https://github.com/rustls/pki-types/releases)
- [Commits](https://github.com/rustls/pki-types/compare/v/1.11.0...v/1.12.0)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-version: 0.103.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rustls
- dependency-name: rustls
  dependency-version: 0.23.27
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rustls
- dependency-name: rustls-pki-types
  dependency-version: 1.12.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: rustls
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(rustls): Remove dependency on most rustls internal types

We only used these types for generating a ClientHello message for testing. Instead, we can manually encode a sample message based on the TLS spec.

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Scott Fleener <scott@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Scott Fleener <scott@buoyant.io>
2025-07-17 16:20:37 +00:00
dependabot[bot] 7c6882bb35
build(deps): bump rcgen from 0.13.2 to 0.14.2 (#4000)
* build(deps): bump rcgen from 0.13.2 to 0.14.2

Bumps [rcgen](https://github.com/rustls/rcgen) from 0.13.2 to 0.14.2.
- [Release notes](https://github.com/rustls/rcgen/releases)
- [Commits](https://github.com/rustls/rcgen/compare/v0.13.2...v0.14.2)

---
updated-dependencies:
- dependency-name: rcgen
  dependency-version: 0.14.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(test): Fix breaking changes from rcgen 0.14

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Scott Fleener <scott@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Scott Fleener <scott@buoyant.io>
2025-07-16 19:34:47 -04:00
katelyn martin a6e47d7e03
fix(app/env): a lower default maximum per-host connection limit (#4005)
* chore(app/env): fix typo

Signed-off-by: katelyn martin <kate@buoyant.io>

* fix(app/env): a lower default maximum per-host connection limit

see also:
* #4004
* linkerd/linkerd2#14204

in #4004 we fixed an issue related to our HTTP/1.1 client's connection
pool.

this further hedges against future issues related to our HTTP client
exhausting resources available to its container. today, the limit by
default is `usize::MAX`, which is dramatically higher than the practical
limit.

this commit changes the limit for outbound idle connections per-host to
10,000.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-07-15 13:01:54 -04:00
Oliver Gould 2cc8c7d80e
fix(proxy/http): fix HTTP/1 client idle timeouts (#4004)
When constructing the HTTP/1 client, we configure connection pooling, but
notably do not provide a timer implementation to Hyper. This causes hyper's
connection pool to be configured without idle timeouts, which may lead to
resource leaks, especially for clients that communicate with many virtual hosts.

This change updates the HTTP/1 client builder to use a Tokio timer, which allows
Hyper to manage idle timeouts correctly.
2025-07-14 14:56:35 -07:00
dependabot[bot] 21f3ffc6c1
build(deps): bump crc32fast from 1.4.2 to 1.5.0 (#4002)
Bumps [crc32fast](https://github.com/srijs/rust-crc32fast) from 1.4.2 to 1.5.0.
- [Commits](https://github.com/srijs/rust-crc32fast/compare/v1.4.2...v1.5.0)

---
updated-dependencies:
- dependency-name: crc32fast
  dependency-version: 1.5.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 11:49:32 -04:00
dependabot[bot] 1b85cf93a4
build(deps): bump memmap2 from 0.9.5 to 0.9.7 (#4001)
Bumps [memmap2](https://github.com/RazrFalcon/memmap2-rs) from 0.9.5 to 0.9.7.
- [Changelog](https://github.com/RazrFalcon/memmap2-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/RazrFalcon/memmap2-rs/commits)

---
updated-dependencies:
- dependency-name: memmap2
  dependency-version: 0.9.7
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 07:02:56 -07:00
dependabot[bot] ce5df7d026
build(deps): bump cc from 1.2.27 to 1.2.29 (#3999)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.27 to 1.2.29.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.27...cc-v1.2.29)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.29
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-11 15:17:08 -04:00
Scott Fleener 79e612c2f9
feat(meshtls): Include AES_256_GCM as a supported ciphersuite (#3991)
This is a strong ciphersuite that's reasonable to include as a supported option. We still prefer CHACHA20_POLY1305 in non-FIPS modes for its speed, as well as keeping CHACHA20_POLY1305 as a backup for older proxies that only support it.

Signed-off-by: Scott Fleener <scott@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2025-07-10 15:23:47 -04:00
Oliver Gould 62ed64ea05
chore(build): bump linkerd/dev to v46 (#3984)
* Rust 1.88
2025-07-10 14:15:24 -04:00
dependabot[bot] e8de6359a5
build(deps): bump hyper-util from 0.1.14 to 0.1.15 (#3997)
Bumps [hyper-util](https://github.com/hyperium/hyper-util) from 0.1.14 to 0.1.15.
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.14...v0.1.15)

---
updated-dependencies:
- dependency-name: hyper-util
  dependency-version: 0.1.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-10 12:50:50 -04:00
dependabot[bot] 53a17808a7
build(deps): bump libfuzzer-sys from 0.4.9 to 0.4.10 (#3994)
Bumps [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer) from 0.4.9 to 0.4.10.
- [Changelog](https://github.com/rust-fuzz/libfuzzer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/libfuzzer/compare/0.4.9...0.4.10)

---
updated-dependencies:
- dependency-name: libfuzzer-sys
  dependency-version: 0.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-08 09:17:27 -04:00
katelyn martin 34b46ab6cd
refactor: `FmtLabels` impls use exhaustive bindings (#3988)
this is based on #3987.

in #3987 (_see https://github.com/linkerd/linkerd2/issues/13821_) we discovered that some of the types that implement [`FmtLabels`](085be9978d/linkerd/metrics/src/fmt.rs (L5)) could collide when used in registry keys; i.e., they might emit identical label sets, but distinct `Hash` values.

#3987 solves two bugs. this pull request proposes a follow-on change, introducing _exhaustive_ bindings to implementations of `FmtLabels`, to prevent this category of bug from reoccurring again in the future.

this change means that the introduction of an additional field to any of these label structures, e.g. `OutboundEndpointLabels` or `HTTPLocalRateLimitLabels`, will cause a compilation error unless said new field is handled in the corresponding `FmtLabels` implementation.

### 🔖 a note

in writing this pull request, i noticed one label that i believe is unintentionally being elided. i've refrained from changing behavior in this pull request. i do note it though, as an example of this syntax identifying the category of bug i hope to hedge against here.

---

* fix: do not key transport metrics registry on `ClientTls`

Signed-off-by: katelyn martin <kate@buoyant.io>

* fix: do not key transport metrics registry on `ServerTls`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(transport-metrics): exhaustive `Eos: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `ServerLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `TlsAccept: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `TargetAddr: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(metrics): exhaustive `Label: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/metrics): exhaustive `Status: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `ControlLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `ProfileRouteLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `InboundEndpointLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `ServerLabel: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `ServerAuthzLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `RouteLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `RouteAuthzLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `OutboundEndpointLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `Authority: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): exhaustive `StackLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/inbound): exhaustive `HTTPLocalRateLimitLabels: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/inbound): exhaustive `Key<L>: FmtLabels`

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(metrics): remove redundant banner comment

these impl blocks are all `FmtLabels`, following another series of the
same, above. we don't need another one of these comments.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(metrics): exhaustive `AndThen: FmtMetrics`

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(app/core): note unused label

see #3262 (618838ec7), which introduced this label.

to preserve behavior, this label remains unused.

X-Ref: #3262
Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-07-03 11:56:14 -04:00
Oliver Gould 288fc74800
chore(app): increase default max backoff durations (#3992)
The inbound and outbound connect backoffs are now set at 500ms. This is very aggressive in practice, especially when an endpoint remains unavailable.

This change increases the maximum backoff durations:

* inbound: 10s
* outbound: 60s

The default minimum backoff durations remain unchanged at 100ms so that failed
connections are retried quickly. This change only increases the default _maximum_ backoff so that the timeout increases substantially when an endpoint is unavailable for a longer period of time.
2025-07-02 18:52:53 -07:00
katelyn martin 030fa28d55
fix: remove ambiguous metrics registry keys (#3987)
### 🖼️ background

the linkerd2 proxy implements, registers, and exports Prometheus metrics using a variety of systems, for historical reasons. new metrics broadly rely upon the official [`prometheus-client`](https://github.com/prometheus/client_rust/) library, whose interfaces are reexported for internal consumption in the [`linkerd_metrics::prom`](https://github.com/linkerd/linkerd2-proxy/blob/main/linkerd/metrics/src/lib.rs#L30-L60) namespace.

other metrics predate this library however, and rely on the metrics registry implemented in the workspace's [`linkerd-metrics`](https://github.com/linkerd/linkerd2-proxy/tree/main/linkerd/metrics) library.

### 🐛 bug report

* https://github.com/linkerd/linkerd2/issues/13821

linkerd/linkerd2#13821 reported a bug in which duplicate metrics could be observed and subsequently dropped by Prometheus when upgrading the control plane via helm with an existing workload running.

### 🦋 reproduction example

for posterity, i'll note the reproduction steps here.

i used these steps to identify the `2025.3.2` edge release as the affected release. upgrading from `2025.2.3` to `2025.3.1` did not exhibit this behavior. see below for more discussion about the cause.

generate certificates via <https://linkerd.io/2.18/tasks/generate-certificates/>

using these two deployments, courtesy of @GTRekter:

<details>
<summary>**💾 click to expand: app deployment**</summary>

```yaml
apiVersion: v1 
kind: Namespace 
metadata: 
  name: simple-app 
  annotations: 
    linkerd.io/inject: enabled 
---
apiVersion: v1 
kind: Service 
metadata: 
  name: simple-app-v1 
  namespace: simple-app 
spec: 
  selector: 
    app: simple-app-v1 
    version: v1 
  ports: 
    - port: 80 
      targetPort: 5678
---
apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: simple-app-v1 
  namespace: simple-app 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: simple-app-v1 
      version: v1 
  template: 
    metadata: 
      labels: 
        app: simple-app-v1 
        version: v1 
    spec: 
      containers: 
        - name: http-app 
          image: hashicorp/http-echo:latest 
          args: 
            - "-text=Simple App v1" 
          ports: 
            - containerPort: 5678 
```
</details>

<details>
<summary>**🤠 click to expand: client deployment**</summary>

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: traffic
  namespace: simple-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: traffic
  template:
    metadata:
      labels:
        app: traffic
    spec:
      containers:
      - name: traffic
        image: curlimages/curl:latest
        command:
          - /bin/sh
          - -c
          - |
            while true; do
              TIMESTAMP_SEND=$(date '+%Y-%m-%d %H:%M:%S')
              PAYLOAD="{\"timestamp\":\"$TIMESTAMP_SEND\",\"test_id\":\"sniff_me\",\"message\":\"hello-world\"}"
              echo "$TIMESTAMP_SEND - Sending payload: $PAYLOAD"
              RESPONSE=$(curl -s -X POST \
                -H "Content-Type: application/json" \
                -d "$PAYLOAD" \
                http://simple-app-v1.simple-app.svc.cluster.local:80)
              TIMESTAMP_RESPONSE=$(date '+%Y-%m-%d %H:%M:%S')
              echo "$TIMESTAMP_RESPONSE - RESPONSE: $RESPONSE"
              sleep 1
            done
```
</details>

and this prometheus configuration:

<details>
<summary>**🔥 click to expand: prometheus configuration**</summary>

```yaml
global:
  scrape_interval: 10s

scrape_configs:
  - job_name: 'pod'
    scrape_interval: 10s
    static_configs:
    - targets: ['localhost:4191']
      labels:
        group: 'traffic'
```
</details>

we will perform the following steps:

```sh
# install the edge release

# specify the versions we'll migrate between.
export FROM="2025.3.1"
export TO="2025.3.2"

# create a cluster, and add the helm charts.
kind create cluster
helm repo add linkerd-edge https://helm.linkerd.io/edge

# install linkerd's crd's and control plane.
helm install linkerd-crds linkerd-edge/linkerd-crds \
  -n linkerd --create-namespace --version $FROM

helm install linkerd-control-plane \
  -n linkerd \
  --set-file identityTrustAnchorsPEM=cert/ca.crt \
  --set-file identity.issuer.tls.crtPEM=cert/issuer.crt \
  --set-file identity.issuer.tls.keyPEM=cert/issuer.key \
  --version $FROM \
  linkerd-edge/linkerd-control-plane

# install a simple app and a client to drive traffic.
kubectl apply -f duplicate-metrics-simple-app.yml
kubectl apply -f duplicate-metrics-traffic.yml

# bind the traffic pod's metrics port to the host.
kubectl port-forward -n simple-app deploy/traffic 4191

# start prometheus, begin scraping metrics
prometheus --config.file=prometheus.yml
```

now, open a browser and query `irate(request_total[1m])`.

next, upgrade the control plane:

```
helm upgrade linkerd-crds linkerd-edge/linkerd-crds \
  -n linkerd --create-namespace --version $TO
helm upgrade linkerd-control-plane \
  -n linkerd \
  --set-file identityTrustAnchorsPEM=cert/ca.crt \
  --set-file identity.issuer.tls.crtPEM=cert/issuer.crt \
  --set-file identity.issuer.tls.keyPEM=cert/issuer.key \
  --version $TO \
  linkerd-edge/linkerd-control-plane
```

prometheus will begin emitting warnings regarding 34 time series being dropped.

in your browser, querying `irate(request_total[1m])` once more will show that
the rate of requests has stopped, due to the new time series being dropped.

next, restart the workloads...

```
kubectl rollout restart deployment -n simple-app simple-app-v1 traffic
```

prometheus warnings will go away, as reported in linkerd/linkerd2#13821.

### 🔍 related changes

* https://github.com/linkerd/linkerd2/pull/13699
* https://github.com/linkerd/linkerd2/pull/13715

in linkerd/linkerd2#13715 and linkerd/linkerd2##13699, we made some changes to the destination controller. from the "Cautions" section of the `2025.3.2` edge release:

> Additionally, this release changes the default for `outbound-transport-mode`
> to `transport-header`, which will result in all traffic between meshed
> proxies flowing on port 4143, rather than using the original destination
> port.

linkerd/linkerd2#13699 (_included in `edge-25.3.1`_) introduced this outbound transport-protocol configuration surface, but maintained the default behavior, while linkerd/linkerd2#13715 (_included in `edge-25.3.2`_) altered the default behavior to route meshed traffic via port 4143.

this is a visible change in behavior that can be observed when upgrading from a version that preceded this change to the mesh. this means that when upgrading across `edge-25.3.2`, such as from the `2025.2.1` to `2025.3.2` versions of the helm charts, or from the `2025.2.3` to the `2025.3.4` versions of the helm charts (_reported upstream in linkerd/linkerd2#13821_), the freshly upgraded destination controller pods will begin routing meshed traffic differently.

i'll state explicitly, _that_ is not a bug! it is, however, an important clue to bear in mind: data plane pods that were started with the previous control plane version, and continue running after the control plane upgrade, will have seen both routing patterns. reporting a duplicate time series for affected metrics indicates that there is a hashing collision in our metrics system.

### 🐛 the bug(s)

we define a collection to structures to model labels for inbound and outbound endpoints'
metrics:

```rust
// linkerd/app/core/src/metrics.rs

#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum EndpointLabels {
    Inbound(InboundEndpointLabels),
    Outbound(OutboundEndpointLabels),
}

#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct InboundEndpointLabels {
    pub tls: tls::ConditionalServerTls,
    pub authority: Option<http::uri::Authority>,
    pub target_addr: SocketAddr,
    pub policy: RouteAuthzLabels,
}

#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct OutboundEndpointLabels {
    pub server_id: tls::ConditionalClientTls,
    pub authority: Option<http::uri::Authority>,
    pub labels: Option<String>,
    pub zone_locality: OutboundZoneLocality,
    pub target_addr: SocketAddr,
}
```

\- <https://github.com/linkerd/linkerd2-proxy/blob/main/linkerd/app/core/src/metrics.rs>

bear particular attention to the derived `Hash` implementation. note the `tls::ConditionalClientTls` and `tls::ConditionalServerTls` types used in each of these labels. these are used by some of our types like `TlsConnect` to emit prometheus labels, using our legacy system's `FmtLabels` trait:

```rust
// linkerd/app/core/src/transport/labels.rs

impl FmtLabels for TlsConnect<'_> {
    fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self.0 {
            Conditional::None(tls::NoClientTls::Disabled) => {
                write!(f, "tls=\"disabled\"")
            }
            Conditional::None(why) => {
                write!(f, "tls=\"no_identity\",no_tls_reason=\"{}\"", why)
            }
            Conditional::Some(tls::ClientTls { server_id, .. }) => {
                write!(f, "tls=\"true\",server_id=\"{}\"", server_id)
            }
        }
    }
}
```

\- <99316f7898/linkerd/app/core/src/transport/labels.rs (L151-L165)>

note the `ClientTls` case, which ignores fields in the client tls information:

```rust
// linkerd/tls/src/client.rs

/// A stack parameter that configures a `Client` to establish a TLS connection.
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct ClientTls {
    pub server_name: ServerName,
    pub server_id: ServerId,
    pub alpn: Option<AlpnProtocols>,
}
```

\- <99316f7898/linkerd/tls/src/client.rs (L20-L26)>

this means that there is potential for an identical set of labels to be emitted given two `ClientTls` structures with distinct server names or ALPN protocols. for brevity, i'll elide the equivalent issue with `ServerTls`, and its corresponding `TlsAccept<'_>` label implementation, though it exhibits the same issue.

### 🔨 the fix

this pull request introduces two new types: `ClientTlsLabels` and `ServerTlsLabels`. these continue to implement `Hash`, for use as a key in our metrics registry, and for use in formatting labels.

`ClientTlsLabels` and `ServerTlsLabels` each resemble `ClientTls` and `ServerTls`, respectively, but do not contain any fields that are elided in label formatting, to prevent duplicate metrics from being emitted.

relatedly, #3988 audits our existing `FmtLabels` implementations and makes use of exhaustive bindings, to prevent this category of problem in the short-term future. ideally, we might eventually consider replacing the metrics interfaces in `linkerd-metrics`, but that is strictly kept out-of-scope for the purposes of this particular fix.

---

* fix: do not key transport metrics registry on `ClientTls`

Signed-off-by: katelyn martin <kate@buoyant.io>

* fix: do not key transport metrics registry on `ServerTls`

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-07-02 12:38:04 -04:00
dependabot[bot] 085be9978d
build(deps): bump indexmap from 2.9.0 to 2.10.0 (#3986)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.9.0 to 2.10.0.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.9.0...2.10.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-version: 2.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-27 11:19:12 -04:00
dependabot[bot] 682421c98a
build(deps): bump Swatinem/rust-cache from 2.7.8 to 2.8.0 (#3983)
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.8 to 2.8.0.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](9d47c6ad4b...98c8021b55)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-26 12:25:06 -04:00
katelyn martin 2b1e3925d5
fix(proxy/http): remove http/1 header read timeout (#3985)
this fixes #14131. this relates to #14147, though it does not introduce
a configurable option for this timeout.

 ###  background

in hyper 0.14, http/1.1 connections had no default header read timeout.
per the documentation for
[`hyper::server::Builder::http1_header_read_timeout()`][read-timeout-previous]:

> Set a timeout for reading client request headers. If a client does not
transmit the entire header within this time, the connection is closed.
>
> Default is None.

compare this with the latest hyper release, which enforces a
30 second timeout for http/1.1 connections. per the documentation for
[`hyper::server::conn::http1::Builder::header_read_timeout`][read-timeout-current]:

> Set a timeout for reading client request headers. If a client does not
> transmit the entire header within this time, the connection is closed.
>
> Requires a
> [Timer](https://docs.rs/hyper/latest/hyper/rt/trait.Timer.html) set by
> [Builder::timer](https://docs.rs/hyper/latest/hyper/server/conn/http1/struct.Builder.html#method.timer)
> to take effect. Panics if header_read_timeout is configured without a
> [Timer](https://docs.rs/hyper/latest/hyper/rt/trait.Timer.html).
>
> Pass None to disable.
>
> Default is 30 seconds.

this was changed in hyperium/hyper#3395, which was included in [the v1.0
release][v1-changelog].

[read-timeout-previous]: https://docs.rs/hyper/0.14.31/hyper/server/struct.Builder.html#method.http1_header_read_timeout
[read-timeout-current]: https://docs.rs/hyper/latest/hyper/server/conn/http1/struct.Builder.html#method.header_read_timeout
[v1-changelog]: https://github.com/hyperium/hyper/blob/master/CHANGELOG.md#v100-2023-11-15

 ### 🔨 changes

this commit passes `None` to the `linkerd-proxy-http::server::ServeHttp`
type's http/1 server-side connection builder, to remove the header read
timeout.

this restores the behavior that existed prior to linkerd/linkerd2#8733,
which upgraded our hyper dependency from 0.14 to 1.0.

X-Ref: https://github.com/linkerd/linkerd2/issues/14147
X-Ref: https://github.com/linkerd/linkerd2/issues/14131
X-Ref: https://github.com/linkerd/linkerd2/issues/8733
X-Ref: https://github.com/hyperium/hyper/issues/3395

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-06-26 12:08:38 -04:00
dependabot[bot] 504581e1d7
build(deps): bump bumpalo from 3.18.1 to 3.19.0 (#3982)
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.18.1 to 3.19.0.
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/commits)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-version: 3.19.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 08:32:25 -04:00
Zahari Dichev 2869076d58
identity(spire): provide named pipe support for spire (#3970)
This change does two things: 
- adds support for `NamedPipes` to our SPIRE client. This will allow the client to connect to spire agents running on Windows hosts
- renames the `LINKERD2_PROXY_IDENTITY_SPIRE_SOCKET` to `LINKERD2_PROXY_IDENTITY_SPIRE_WORKLOAD_API_ADDRESS` and deprecates the former.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2025-06-25 11:01:45 +03:00
dependabot[bot] 99316f7898
build(deps): bump prettyplease from 0.2.34 to 0.2.35 (#3981)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.34 to 0.2.35.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.34...0.2.35)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-version: 0.2.35
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 09:17:31 -04:00
dependabot[bot] 7255530037
build(deps): bump syn from 2.0.103 to 2.0.104 (#3980)
---
updated-dependencies:
- dependency-name: syn
  dependency-version: 2.0.104
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 08:04:23 -04:00
Oliver Gould 3fe2dee32e
fix(errno): comment typo (#3949) 2025-06-20 15:00:10 +00:00
dependabot[bot] 3590892686
build(deps): bump errno from 0.3.12 to 0.3.13 (#3979)
Bumps [errno](https://github.com/lambda-fairy/rust-errno) from 0.3.12 to 0.3.13.
- [Release notes](https://github.com/lambda-fairy/rust-errno/releases)
- [Changelog](https://github.com/lambda-fairy/rust-errno/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lambda-fairy/rust-errno/compare/v0.3.12...v0.3.13)

---
updated-dependencies:
- dependency-name: errno
  dependency-version: 0.3.13
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-20 10:09:16 -04:00
dependabot[bot] 80a216892d
build(deps): bump syn from 2.0.102 to 2.0.103 (#3978)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.102 to 2.0.103.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.102...2.0.103)

---
updated-dependencies:
- dependency-name: syn
  dependency-version: 2.0.103
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-20 10:09:07 -04:00
dependabot[bot] 4dc6353d0c
build(deps): bump autocfg from 1.4.0 to 1.5.0 (#3977)
Bumps [autocfg](https://github.com/cuviper/autocfg) from 1.4.0 to 1.5.0.
- [Commits](https://github.com/cuviper/autocfg/compare/1.4.0...1.5.0)

---
updated-dependencies:
- dependency-name: autocfg
  dependency-version: 1.5.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-20 09:58:37 -04:00
dependabot[bot] c325f526af
build(deps): bump slab from 0.4.9 to 0.4.10 (#3976)
Bumps [slab](https://github.com/tokio-rs/slab) from 0.4.9 to 0.4.10.
- [Release notes](https://github.com/tokio-rs/slab/releases)
- [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/slab/compare/v0.4.9...v0.4.10)

---
updated-dependencies:
- dependency-name: slab
  dependency-version: 0.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 07:52:57 -04:00
dependabot[bot] 9b3d93ddf6
build(deps): bump libc from 0.2.173 to 0.2.174 (#3975)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.173 to 0.2.174.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.174/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.173...0.2.174)

---
updated-dependencies:
- dependency-name: libc
  dependency-version: 0.2.174
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 07:51:52 -04:00
dependabot[bot] dcd34222a9
build(deps): bump tracing-attributes in the tracing group (#3974)
Bumps the tracing group with 1 update: [tracing-attributes](https://github.com/tokio-rs/tracing).


Updates `tracing-attributes` from 0.1.29 to 0.1.30
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-attributes-0.1.29...tracing-attributes-0.1.30)

---
updated-dependencies:
- dependency-name: tracing-attributes
  dependency-version: 0.1.30
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tracing
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 07:51:26 -04:00
dependabot[bot] 8203cd2e96
build(deps): bump jiff from 0.2.14 to 0.2.15 (#3973)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.14 to 0.2.15.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.14...jiff-static-0.2.15)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 12:12:22 -04:00
dependabot[bot] 19235e0841
build(deps): bump libc from 0.2.172 to 0.2.173 (#3972)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.172 to 0.2.173.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.173/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.172...0.2.173)

---
updated-dependencies:
- dependency-name: libc
  dependency-version: 0.2.173
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 12:12:08 -04:00
dependabot[bot] 6f51389717
build(deps): bump thread_local from 1.1.8 to 1.1.9 (#3971)
Bumps [thread_local](https://github.com/Amanieu/thread_local-rs) from 1.1.8 to 1.1.9.
- [Release notes](https://github.com/Amanieu/thread_local-rs/releases)
- [Changelog](https://github.com/Amanieu/thread_local-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/thread_local-rs/compare/1.1.8...v1.1.9)

---
updated-dependencies:
- dependency-name: thread_local
  dependency-version: 1.1.9
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 12:11:57 -04:00
dependabot[bot] 3c2854beb1
build(deps): bump aws-lc-fips-sys from 0.13.6 to 0.13.7 (#3968)
Bumps [aws-lc-fips-sys](https://github.com/aws/aws-lc-rs) from 0.13.6 to 0.13.7.
- [Release notes](https://github.com/aws/aws-lc-rs/releases)
- [Commits](https://github.com/aws/aws-lc-rs/compare/aws-lc-fips-sys/v0.13.6...aws-lc-fips-sys/v0.13.7)

---
updated-dependencies:
- dependency-name: aws-lc-fips-sys
  dependency-version: 0.13.7
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 12:26:15 -04:00
dependabot[bot] 35ef9b3c8b
build(deps): bump cc from 1.2.26 to 1.2.27 (#3969)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.26 to 1.2.27.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.26...cc-v1.2.27)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.27
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 12:26:07 -04:00
dependabot[bot] 4922138b3e
build(deps): bump prettyplease from 0.2.33 to 0.2.34 (#3967)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.33 to 0.2.34.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.33...0.2.34)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-version: 0.2.34
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 12:22:48 -04:00
dependabot[bot] 47f3817dea
build(deps): bump memchr from 2.7.4 to 2.7.5 (#3966)
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.7.4 to 2.7.5.
- [Commits](https://github.com/BurntSushi/memchr/compare/2.7.4...2.7.5)

---
updated-dependencies:
- dependency-name: memchr
  dependency-version: 2.7.5
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-12 16:04:26 -04:00
dependabot[bot] 15bcb9a056
build(deps): bump cfg-if from 1.0.0 to 1.0.1 (#3965)
Bumps [cfg-if](https://github.com/rust-lang/cfg-if) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/rust-lang/cfg-if/releases)
- [Changelog](https://github.com/rust-lang/cfg-if/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cfg-if/compare/1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: cfg-if
  dependency-version: 1.0.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-12 16:03:01 -04:00
dependabot[bot] 25212a4423
build(deps): bump softprops/action-gh-release from 2.3.0 to 2.3.2 (#3964)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.3.0 to 2.3.2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](d5382d3e6f...72f2c25fcb)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-12 08:45:20 -07:00
dependabot[bot] 4cd1fbf69a
build(deps): bump wasi (#3963)
Bumps [wasi](https://github.com/bytecodealliance/wasi) from 0.11.0+wasi-snapshot-preview1 to 0.11.1+wasi-snapshot-preview1.
- [Commits](https://github.com/bytecodealliance/wasi/compare/0.11.0...0.11.1)

---
updated-dependencies:
- dependency-name: wasi
  dependency-version: 0.11.1+wasi-snapshot-preview1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-11 11:30:55 -04:00
dependabot[bot] f2c68aa010
build(deps): bump smallvec from 1.15.0 to 1.15.1 (#3962)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.15.0 to 1.15.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.15.0...v1.15.1)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-version: 1.15.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-11 11:30:31 -04:00
dependabot[bot] 14c3716fcd
build(deps): bump miniz_oxide from 0.8.8 to 0.8.9 (#3961)
Bumps [miniz_oxide](https://github.com/Frommi/miniz_oxide) from 0.8.8 to 0.8.9.
- [Changelog](https://github.com/Frommi/miniz_oxide/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Frommi/miniz_oxide/commits)

---
updated-dependencies:
- dependency-name: miniz_oxide
  dependency-version: 0.8.9
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-11 11:30:20 -04:00
dependabot[bot] 6118756991
build(deps): bump adler2 from 2.0.0 to 2.0.1 (#3960)
Bumps [adler2](https://github.com/oyvindln/adler2) from 2.0.0 to 2.0.1.
- [Changelog](https://github.com/oyvindln/adler2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/oyvindln/adler2/commits)

---
updated-dependencies:
- dependency-name: adler2
  dependency-version: 2.0.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 10:11:16 -04:00
dependabot[bot] f508e7998c
build(deps): bump syn from 2.0.101 to 2.0.102 (#3959)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.101 to 2.0.102.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.101...2.0.102)

---
updated-dependencies:
- dependency-name: syn
  dependency-version: 2.0.102
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 10:10:40 -04:00
dependabot[bot] 9ed7f8cf7d
build(deps): bump rustc-demangle from 0.1.24 to 0.1.25 (#3958)
Bumps [rustc-demangle](https://github.com/rust-lang/rustc-demangle) from 0.1.24 to 0.1.25.
- [Commits](https://github.com/rust-lang/rustc-demangle/commits)

---
updated-dependencies:
- dependency-name: rustc-demangle
  dependency-version: 0.1.25
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 10:10:15 -04:00
dependabot[bot] 3da6013871
build(deps): bump softprops/action-gh-release from 2.2.2 to 2.3.0 (#3957)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.2.2 to 2.3.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](da05d55257...d5382d3e6f)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 10:09:51 -04:00
dependabot[bot] 66d558b8b2
build(deps): bump cc from 1.2.25 to 1.2.26 (#3956)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.25 to 1.2.26.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.25...cc-v1.2.26)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.26
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 11:35:37 -04:00
dependabot[bot] ede8a97d25
build(deps): bump tracing-attributes in the tracing group (#3955)
Bumps the tracing group with 1 update: [tracing-attributes](https://github.com/tokio-rs/tracing).


Updates `tracing-attributes` from 0.1.28 to 0.1.29
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-attributes-0.1.28...tracing-attributes-0.1.29)

---
updated-dependencies:
- dependency-name: tracing-attributes
  dependency-version: 0.1.29
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tracing
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 11:35:23 -04:00
dependabot[bot] 44cfdfd7fe
build(deps): bump flate2 from 1.1.1 to 1.1.2 (#3954)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.1...1.1.2)

---
updated-dependencies:
- dependency-name: flate2
  dependency-version: 1.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 11:35:07 -04:00
dependabot[bot] 8a515a3cc0
build(deps): bump portable-atomic from 1.11.0 to 1.11.1 (#3952)
Bumps [portable-atomic](https://github.com/taiki-e/portable-atomic) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/taiki-e/portable-atomic/releases)
- [Changelog](https://github.com/taiki-e/portable-atomic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/portable-atomic/compare/v1.11.0...v1.11.1)

---
updated-dependencies:
- dependency-name: portable-atomic
  dependency-version: 1.11.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-06 10:53:05 -04:00
dependabot[bot] d1ecb03c9f
build(deps): bump bumpalo from 3.17.0 to 3.18.1 (#3951)
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.17.0 to 3.18.1.
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.17.0...v3.18.1)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-version: 3.18.1
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-06 10:52:47 -04:00
dependabot[bot] f4ae038d79
build(deps): bump tracing-core in the tracing group (#3950)
Bumps the tracing group with 1 update: [tracing-core](https://github.com/tokio-rs/tracing).


Updates `tracing-core` from 0.1.33 to 0.1.34
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-core-0.1.33...tracing-core-0.1.34)

---
updated-dependencies:
- dependency-name: tracing-core
  dependency-version: 0.1.34
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tracing
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-06 10:52:38 -04:00
dependabot[bot] 3aa53596f7
build(deps): bump hyper-util from 0.1.13 to 0.1.14 (#3948)
Bumps [hyper-util](https://github.com/hyperium/hyper-util) from 0.1.13 to 0.1.14.
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.13...v0.1.14)

---
updated-dependencies:
- dependency-name: hyper-util
  dependency-version: 0.1.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-05 06:51:50 -07:00
katelyn martin 67dc85a367
chore(app/test): remove unused dependencies (#3932)
`linkerd-app-test` relies on some dependencies that are unused.

this commit removes these dependencies from the crate's manifest.

see #3928 and #3929.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-06-02 15:10:53 -07:00
katelyn martin ea6f407c57
fix(http/retry): `PeekTrailersBody<B>` retains first frame (#3947)
see linkerd/linkerd2#14050.

this change fixes a logical bug with
`linkerd_http_retry::peek_trailers::PeekTrailersBody::<B>::read_body(..)`.

`read_body(..)` constructs a `PeekTrailersBody<B>`, by polling the inner
body to see whether or not it can reach the end of the stream by only
yielding to the asynchronous runtime once.

in linkerd/linkerd2-proxy#3559, we restructured this middleware's
internal modeling to reflect the `Frame<T>`-oriented signatures of the
`http_body::Body` trait's 1.0 interface.

unfortunately, this included a bug which could cause the first frame in
a stream to be discarded if the second `Body::poll_frame()` call
(_invoked via `now_or_never()`_) returns `Pending`. this could cause
non-deterministic errors for users when sending traffic to HTTPRoutes
and GRPCRoutes with retry annotations applied.

this change rectifies this problem, ensuring that the first frame is not
discarded when attempting to peek a body's trailers.

to confirm that this works as expected, additional test coverage is
introduced that confirms that the data and trailers of the inner body
are passed through faithfully.

---

* feat(http/retry): additional `PeekTrailersBody<B>` test coverage

this commit introduces additional test coverage to
`linker_http_retry::peek_trailers::PeekTrailersBody<B>`.

this body middleware is used to facilitate transparent http retries, and
allows callers to possibly inspect the trailers for a response, by
polling an `http_body::Body`.

this commit introduces additional unit test coverage that confirms that
the data and trailers of the inner body are passed through faithfully.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): another `PeekTrailersBody<B>` test case

this commit introduces some additional coverage for bodies that return
`Pending` when polled a second time.

Signed-off-by: katelyn martin <kate@buoyant.io>

* fix(http/retry): `PeekTrailersBody<B>` retains first frame

this commit fixes a logical bug with
`linkerd_http_retry::peek_trailers::PeekTrailersBody::<B>::read_body(..)`.

`read_body(..)` constructs a `PeekTrailersBody<B>`, by polling the inner
body to see whether or not it can reach the end of the stream by only
yielding to the asynchronous runtime once.

in linkerd/linkerd2-proxy#3559, we restructured this middleware's
internal modeling to reflect the `Frame<T>`-oriented signatures of the
`http_body::Body` trait's 1.0 interface.

unfortunately, this included a bug which could cause the first frame in
a stream to be discarded if the second `Body::poll_frame()` call
(_invoked via `now_or_never()`_) returns `Pending`. this could cause
non-deterministic errors for users when sending traffic to HTTPRoutes
and GRPCRoutes with retry annotations applied.

this commit rectifies this problem, ensuring that the first frame is not
discarded when attempting to peek a body's trailers.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-06-02 09:53:24 -07:00
dependabot[bot] c36bef6b47
build(deps): bump num_cpus from 1.16.0 to 1.17.0 (#3946)
Bumps [num_cpus](https://github.com/seanmonstar/num_cpus) from 1.16.0 to 1.17.0.
- [Release notes](https://github.com/seanmonstar/num_cpus/releases)
- [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.16.0...v1.17.0)

---
updated-dependencies:
- dependency-name: num_cpus
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 08:51:23 -04:00
dependabot[bot] 12822d1848
build(deps): bump cc from 1.2.24 to 1.2.25 (#3945)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.24 to 1.2.25.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.24...cc-v1.2.25)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.25
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 08:51:10 -04:00
dependabot[bot] 66b5f330c3
build(deps): bump prettyplease from 0.2.32 to 0.2.33 (#3944)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.32 to 0.2.33.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.32...0.2.33)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-version: 0.2.33
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 08:50:58 -04:00
dependabot[bot] 423b5c07e6
build(deps): bump parking_lot from 0.12.3 to 0.12.4 (#3943)
Bumps [parking_lot](https://github.com/Amanieu/parking_lot) from 0.12.3 to 0.12.4.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/0.12.3...parking_lot-v0.12.4)

---
updated-dependencies:
- dependency-name: parking_lot
  dependency-version: 0.12.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-30 08:18:04 -04:00
dependabot[bot] 0a17238d10
build(deps): bump parking_lot_core from 0.9.10 to 0.9.11 (#3942)
Bumps [parking_lot_core](https://github.com/Amanieu/parking_lot) from 0.9.10 to 0.9.11.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/core-0.9.10...parking_lot_core-v0.9.11)

---
updated-dependencies:
- dependency-name: parking_lot_core
  dependency-version: 0.9.11
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-30 08:17:37 -04:00
dependabot[bot] cbfef553ce
build(deps): bump lock_api from 0.4.12 to 0.4.13 (#3941)
Bumps [lock_api](https://github.com/Amanieu/parking_lot) from 0.4.12 to 0.4.13.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/lock_api-0.4.12...lock_api-v0.4.13)

---
updated-dependencies:
- dependency-name: lock_api
  dependency-version: 0.4.13
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-30 08:17:20 -04:00
dependabot[bot] 6233b47dd3
build(deps): bump libloading from 0.8.7 to 0.8.8 (#3940)
Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.8.7 to 0.8.8.
- [Commits](https://github.com/nagisa/rust_libloading/commits)

---
updated-dependencies:
- dependency-name: libloading
  dependency-version: 0.8.8
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-29 10:44:53 -04:00
dependabot[bot] 19bfb14f1f
build(deps): bump pprof from 0.14.0 to 0.15.0 (#3938)
Bumps [pprof](https://github.com/tikv/pprof-rs) from 0.14.0 to 0.15.0.
- [Changelog](https://github.com/tikv/pprof-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tikv/pprof-rs/commits)

---
updated-dependencies:
- dependency-name: pprof
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-28 11:13:34 -04:00
dependabot[bot] c6eea70f1a
build(deps): bump hyper-util from 0.1.12 to 0.1.13 (#3939)
Bumps [hyper-util](https://github.com/hyperium/hyper-util) from 0.1.12 to 0.1.13.
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.12...v0.1.13)

---
updated-dependencies:
- dependency-name: hyper-util
  dependency-version: 0.1.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-28 11:13:08 -04:00
dependabot[bot] 96d7c25704
build(deps): bump the boring group with 3 updates (#3937)
Bumps the boring group with 3 updates: [boring](https://github.com/cloudflare/boring), [tokio-boring](https://github.com/cloudflare/boring) and [boring-sys](https://github.com/cloudflare/boring).


Updates `boring` from 4.16.0 to 4.17.0
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.16.0...v4.17.0)

Updates `tokio-boring` from 4.16.0 to 4.17.0
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.16.0...v4.17.0)

Updates `boring-sys` from 4.16.0 to 4.17.0
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.16.0...v4.17.0)

---
updated-dependencies:
- dependency-name: boring
  dependency-version: 4.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: boring
- dependency-name: tokio-boring
  dependency-version: 4.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: boring
- dependency-name: boring-sys
  dependency-version: 4.17.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: boring
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-28 08:23:55 -04:00
dependabot[bot] 1450af00d8
build(deps): bump the opentelemetry group with 2 updates (#3934)
Bumps the opentelemetry group with 2 updates: [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust) and [opentelemetry_sdk](https://github.com/open-telemetry/opentelemetry-rust).


Updates `opentelemetry` from 0.29.1 to 0.30.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.29.1...opentelemetry-0.30.0)

Updates `opentelemetry_sdk` from 0.29.0 to 0.30.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry_sdk-0.29.0...opentelemetry_sdk-0.30.0)

---
updated-dependencies:
- dependency-name: opentelemetry
  dependency-version: 0.30.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
- dependency-name: opentelemetry_sdk
  dependency-version: 0.30.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 07:17:39 -07:00
dependabot[bot] 27f62ad034
build(deps): bump mio from 1.0.3 to 1.0.4 (#3933)
Bumps [mio](https://github.com/tokio-rs/mio) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/commits)

---
updated-dependencies:
- dependency-name: mio
  dependency-version: 1.0.4
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 09:35:24 -04:00
dependabot[bot] fefa7c0cbf
build(deps): bump socket2 from 0.5.9 to 0.5.10 (#3936)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.5.9 to 0.5.10.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/commits)

---
updated-dependencies:
- dependency-name: socket2
  dependency-version: 0.5.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 09:33:06 -04:00
katelyn martin b3549bc767
chore(app/test): remove unused functions (#3929)
`linkerd-app-test` exposes some functions that we never use elsewhere.

this commit removes these functions.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-23 09:25:12 -07:00
katelyn martin c00ce3241b
chore(app/test): remove unused `service` submodule (#3928)
`linkerd_app_test::service` contains facilities that are unused.

this commit removes this submodule from the `linkerd-app-test` library.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-23 09:25:00 -07:00
dependabot[bot] 21fd4ec51b
build(deps): bump rustversion from 1.0.20 to 1.0.21 (#3931)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.20 to 1.0.21.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.20...1.0.21)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-version: 1.0.21
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-23 08:38:35 -04:00
dependabot[bot] fa0c104931
build(deps): bump cc from 1.2.23 to 1.2.24 (#3930)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.23 to 1.2.24.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.23...cc-v1.2.24)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.24
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-23 08:38:10 -04:00
katelyn martin cab7adc456
chore(meshtls/boring): sort dependencies (#3927)
Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-22 16:20:58 -04:00
katelyn martin 478e1e151f
chore(deps): bump DavidAnson/markdownlint-cli2-action (#3923)
* chore(docs): address `no-generic-link-test` lint (#3923)

this addresses errors observed by dependabot when upgrading to the
latest version of `markdownlint`.

there is a new lint, added in DavidAnson/markdownlint#1459, that
introduces forbidden link text to discourage generic `here` text in
links.

this fixes sentences that included a link labeled "here".

* https://github.com/linkerd/linkerd2-proxy/pull/3918
* https://github.com/linkerd/linkerd2-proxy/actions/runs/15043224730/job/42279610780?pr=3918
* https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md059.md
* https://github.com/DavidAnson/markdownlint/pull/1459
* https://github.com/DavidAnson/markdownlint/issues/681

```
 Summary: 3 error(s)
Error: docs/FUZZING.md:17:13 MD059/descriptive-link-text Link text should be descriptive [Context: "[here]"] https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md059.md
Error: docs/FUZZING.md💯2 MD059/descriptive-link-text Link text should be descriptive [Context: "[here]"] https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md059.md
Error: README.md:90:2 MD059/descriptive-link-text Link text should be descriptive [Context: "[here]"] https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md059.md
Error: Failed with exit code: 1
```

Signed-off-by: katelyn martin <kate@buoyant.io>

* build(deps): bump DavidAnson/markdownlint-cli2-action (#3923)

Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 19.1.0 to 20.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](05f32210e8...992badcdf2)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-version: 20.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-22 13:16:37 -07:00
dependabot[bot] 1eeae37018
build(deps): bump jiff from 0.2.13 to 0.2.14 (#3926)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.13 to 0.2.14.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.13...jiff-static-0.2.14)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-21 10:29:08 -04:00
dependabot[bot] 83d4eacb27
build(deps): bump hyper-util from 0.1.11 to 0.1.12 (#3925)
Bumps [hyper-util](https://github.com/hyperium/hyper-util) from 0.1.11 to 0.1.12.
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.11...v0.1.12)

---
updated-dependencies:
- dependency-name: hyper-util
  dependency-version: 0.1.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 09:15:20 -04:00
dependabot[bot] ddc590f38b
build(deps): bump the icu4x group with 2 updates (#3924)
Bumps the icu4x group with 2 updates: [icu_properties](https://github.com/unicode-org/icu4x) and [icu_properties_data](https://github.com/unicode-org/icu4x).


Updates `icu_properties` from 2.0.0 to 2.0.1
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

Updates `icu_properties_data` from 2.0.0 to 2.0.1
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: icu_properties
  dependency-version: 2.0.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: icu4x
- dependency-name: icu_properties_data
  dependency-version: 2.0.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: icu4x
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 09:14:43 -04:00
dependabot[bot] 0f42f15102
build(deps): bump codecov/codecov-action from 5.4.2 to 5.4.3 (#3920)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.4.2 to 5.4.3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](ad3126e916...18283e04ce)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-16 16:21:34 -04:00
dependabot[bot] 20f47ad9de
build(deps): bump errno from 0.3.11 to 0.3.12 (#3922)
Bumps [errno](https://github.com/lambda-fairy/rust-errno) from 0.3.11 to 0.3.12.
- [Release notes](https://github.com/lambda-fairy/rust-errno/releases)
- [Changelog](https://github.com/lambda-fairy/rust-errno/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lambda-fairy/rust-errno/compare/v0.3.11...v0.3.12)

---
updated-dependencies:
- dependency-name: errno
  dependency-version: 0.3.12
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-16 10:01:34 -04:00
dependabot[bot] 7abe88119c
build(deps): bump cc from 1.2.22 to 1.2.23 (#3921)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.22 to 1.2.23.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.22...cc-v1.2.23)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.23
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-16 10:01:02 -04:00
katelyn martin 37c0f96cfc
nit(app): consolidate `impl Config` blocks (#3919)
this is a trivial, cosmetic change.

`Config` has two consecutive `impl` blocks in the `linkerd-app` library.
these do not include distinct generics or trait bounds, so the methods
contained therein do not need to live in two distinct `impl` blocks.

this commit consolidates these blocks.

while we are performing this change, we add two `=== impl T ===`
banners, which are used throughout the project as greppable strings to
find methods and trait implementations for a given type.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-16 09:37:02 -04:00
dependabot[bot] 79e10775f0
build(deps): bump generator from 0.8.4 to 0.8.5 (#3917)
Bumps [generator](https://github.com/Xudong-Huang/generator-rs) from 0.8.4 to 0.8.5.
- [Release notes](https://github.com/Xudong-Huang/generator-rs/releases)
- [Commits](https://github.com/Xudong-Huang/generator-rs/compare/0.8.4...0.8.5)

---
updated-dependencies:
- dependency-name: generator
  dependency-version: 0.8.5
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-14 09:29:51 -04:00
dependabot[bot] a2eadec54a
build(deps): bump resolv-conf from 0.7.3 to 0.7.4 (#3916)
Bumps [resolv-conf](https://github.com/hickory-dns/resolv-conf) from 0.7.3 to 0.7.4.
- [Release notes](https://github.com/hickory-dns/resolv-conf/releases)
- [Commits](https://github.com/hickory-dns/resolv-conf/compare/v0.7.3...v0.7.4)

---
updated-dependencies:
- dependency-name: resolv-conf
  dependency-version: 0.7.4
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 09:53:37 -04:00
katelyn martin 7b7ffbc69d
chore(deps): define `tracing` workspace dependency (#3834)
this commit hoists `tracing`, used liberally throughout our project,
such that it is managed as a single workspace dependency.

this will be helpful someday when a 0.2 release happens.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-12 16:00:34 -04:00
katelyn martin 00b5de1936
refactor(proxy/http): a concrete `orig_proto` error (#3901)
this commit introduces a concrete error type for the `orig_proto`
upgrade layer.

this layer is used by the proxy's http client to transparently upgrade
outbound http/1 traffic to http/2. rather than boxing errors, we define
a concrete error type to facilitate inspecting errors in the future.

for now, the top-level http client continues to box errors thrown by the
"orig_proto" upgrade client.

see also, #3894 (ea75ac0).

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-12 15:59:56 -04:00
katelyn martin d3a176446c
fix: report error causes properly (#3915)
the `linkerd-error` crate includes two functions that can be used to
examine the cause of a dynamic, boxed error. for example, here is the
`is_caused_by()` function, used in some of our error recovery logic:

```rust
/// Determines whether the provided error was caused by an `E` typed error.
pub fn is_caused_by<E: std::error::Error + 'static>(
    mut error: &(dyn std::error::Error + 'static),
) -> bool {
    loop {
        if error.is::<E>() {
            return true;
        }
        error = match error.source() {
            Some(e) => e,
            None => return false,
        };
    }
}
```

we rely on [`thiserror`](https://github.com/dtolnay/thiserror/) to
generate boilerplate code for our error structures. this includes an
attribute called `transparent` that will delegate down to an inner
error.

however, this delegation means that the causal chains inspected by
the function above might not properly identify an inner error. this
test, for example, fails:

```rust
// linkerd/dns/src/lib.rs
#[derive(Debug, Clone, Error)]
#[error("invalid SRV record {:?}", self.0)]
struct InvalidSrv(rdata::SRV);

#[derive(Debug, Error)]
enum SrvRecordError {
    #[error(transparent)]
    Invalid(#[from] InvalidSrv),
    #[error("failed to resolve SRV record: {0}")]
    Resolve(#[from] hickory_resolver::ResolveError),
}

#[test]
fn srv_record_reports_cause_correctly() {
    let srv = "foobar.linkerd-dst-headless.linkerd.svc.cluster.local."
        .parse::<hickory_resolver::Name>()
        .map(|name| rdata::SRV::new(1, 1, 8086, name))
        .expect("a valid domain name");

    let error = SrvRecordError::Invalid(InvalidSrv(srv));
    let error: Box<dyn std::error::Error + 'static> = Box::new(error);

    assert!(linkerd_error::is_caused_by::<InvalidSrv>(&*error));
    assert!(linkerd_error::cause_ref::<InvalidSrv>(&*error).is_some());
}
```

the `transparent` attribute will delegate directly down to `InvalidSrv`
when `Error::source()` is invoked. this means that our downcasting logic
in `linkerd-error` used to ascertain causes of dynamic, boxed errors
will fail to identify a `SrvRecordError` as being caused by an
`InvalidSrv`.

by replacing the `transparent` attribute with a `"{0}"` display
attribute, we continue to transparently show the inner error when
printed as a string, but will include `InvalidSrv` in the causal chain.

this branch replaces `transparent` attributes in an assortment of
error variants.

---

* test(dns): add a failing test

this commit adds a failing unit test. this test shows that dns errors
might not report their cause correctly, due to thiserror's `transparent`
attribute passing directly through to `InvalidSrv`'s cause.

Signed-off-by: katelyn martin <kate@buoyant.io>

* fix(dns): replace `error(transparent)` attribute

this commit fixes the failing unit test introduced in the previous
commit.

the `transparent` attribute will delegate directly down to `InvalidSrv`
when `Error::source()` is invoke. this means that our downcasting logic
in `linkerd-error` used to ascertain causes of dynamic, boxed errors
will fail to identify a `SrvRecordError` as being caused by an
`InvalidSrv`.

by replacing the `transparent` attribute with a `"{0}"` display
attribute, we continue to transparently show the inner error when
printed as a string, but will include `InvalidSrv` in the causal chain.

Signed-off-by: katelyn martin <kate@buoyant.io>

* fix: errors report inner sources

this commit performs the same transformation as the previous commit,
replacing `transparent` with equivalent pass-through `"{0}"` display
strings, adding `#[source]` where needed.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-12 15:52:06 -04:00
katelyn martin 015c499891
refactor(app/outbound): `Connect` fields are not pub (#3895)
this structure exposes its fields, but those fields are never accessed
elsewhere, aside from test code.

this commit removes the `pub` directives from the address and tls
fields. in their stead, test interfaces are added to allow the
`tagged_transport` test suite to function.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-12 15:38:59 -04:00
katelyn martin ea75ac0126
refactor(proxy/http): http/1 client is a `Service<T>` (#3894)
this is a small mechanical refactor to the http/1 client.

our http/2 and "orig_proto" clients are tower services. our http/1
client, on the other hand, exposes a concrete inherent method `request`.

to be consistent, this changes our http client to treat this http/1
client as a service as well.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-12 15:38:26 -04:00
katelyn martin 3a795967af
nit(app/integration): sort cargo dependencies (#3887)
this alphabetizes dependencies in `linkerd-app-integration`'s
manifest.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-05-12 15:37:52 -04:00
dependabot[bot] c5c2c24b0d
build(deps): bump libloading from 0.8.6 to 0.8.7 (#3914)
Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.8.6 to 0.8.7.
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.8.6...0.8.7)

---
updated-dependencies:
- dependency-name: libloading
  dependency-version: 0.8.7
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 10:00:18 -04:00
dependabot[bot] 971ec0e14d
build(deps): bump multimap from 0.10.0 to 0.10.1 (#3913)
Bumps [multimap](https://github.com/havarnov/multimap) from 0.10.0 to 0.10.1.
- [Commits](https://github.com/havarnov/multimap/commits)

---
updated-dependencies:
- dependency-name: multimap
  dependency-version: 0.10.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 10:00:01 -04:00
dependabot[bot] f45a6185f6
build(deps): bump tempfile from 3.19.1 to 3.20.0 (#3912)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.19.1 to 3.20.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.19.1...v3.20.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-version: 3.20.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 09:58:57 -04:00
dependabot[bot] 6ea7f158a5
build(deps): bump aws-lc-rs from 1.13.0 to 1.13.1 (#3911)
Bumps [aws-lc-rs](https://github.com/aws/aws-lc-rs) from 1.13.0 to 1.13.1.
- [Release notes](https://github.com/aws/aws-lc-rs/releases)
- [Commits](https://github.com/aws/aws-lc-rs/compare/v1.13.0...v1.13.1)

---
updated-dependencies:
- dependency-name: aws-lc-rs
  dependency-version: 1.13.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 13:12:34 -04:00
dependabot[bot] 0e9f9443b8
build(deps): bump cc from 1.2.21 to 1.2.22 (#3910)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.21 to 1.2.22.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.21...cc-v1.2.22)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.22
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 13:12:23 -04:00
dependabot[bot] 34dae165d6
build(deps): bump idna_adapter from 1.2.0 to 1.2.1 (#3909)
Bumps [idna_adapter](https://github.com/hsivonen/idna_adapter) from 1.2.0 to 1.2.1.
- [Commits](https://github.com/hsivonen/idna_adapter/compare/v1.2.0...v1.2.1)

---
updated-dependencies:
- dependency-name: idna_adapter
  dependency-version: 1.2.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 13:12:15 -04:00
dependabot[bot] 9063a6df66
build(deps): bump backtrace from 0.3.74 to 0.3.75 (#3907)
Bumps [backtrace](https://github.com/rust-lang/backtrace-rs) from 0.3.74 to 0.3.75.
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases)
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.74...0.3.75)

---
updated-dependencies:
- dependency-name: backtrace
  dependency-version: 0.3.75
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-07 10:21:51 -04:00
dependabot[bot] a9ce356bf8
build(deps): bump jiff from 0.2.12 to 0.2.13 (#3906)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.12 to 0.2.13.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.12...jiff-static-0.2.13)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 11:11:16 -04:00
dependabot[bot] dd432b3143
build(deps): bump tokio from 1.44.2 to 1.45.0 (#3905)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.44.2 to 1.45.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.44.2...tokio-1.45.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.45.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:52:23 -04:00
dependabot[bot] d35e12facb
build(deps): bump jiff from 0.2.11 to 0.2.12 (#3900)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.11 to 0.2.12.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.11...jiff-static-0.2.12)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-05 09:19:42 -04:00
dependabot[bot] 430eb75667
build(deps): bump the hickory group with 2 updates (#3899)
Bumps the hickory group with 2 updates: [hickory-resolver](https://github.com/hickory-dns/hickory-dns) and [hickory-proto](https://github.com/hickory-dns/hickory-dns).


Updates `hickory-resolver` from 0.25.1 to 0.25.2
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/OLD-CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.25.1...v0.25.2)

Updates `hickory-proto` from 0.25.1 to 0.25.2
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/OLD-CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.25.1...v0.25.2)

---
updated-dependencies:
- dependency-name: hickory-resolver
  dependency-version: 0.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: hickory
- dependency-name: hickory-proto
  dependency-version: 0.25.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: hickory
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-05 09:18:40 -04:00
dependabot[bot] 025f0a19cb
build(deps): bump the symbolic group with 2 updates (#3896)
Bumps the symbolic group with 2 updates: [symbolic-common](https://github.com/getsentry/symbolic) and [symbolic-demangle](https://github.com/getsentry/symbolic).


Updates `symbolic-common` from 12.15.4 to 12.15.5
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.15.4...12.15.5)

Updates `symbolic-demangle` from 12.15.4 to 12.15.5
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.15.4...12.15.5)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-version: 12.15.5
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symbolic
- dependency-name: symbolic-demangle
  dependency-version: 12.15.5
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symbolic
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-02 11:00:55 -04:00
dependabot[bot] d9ed5e3835
build(deps): bump jiff from 0.2.10 to 0.2.11 (#3898)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.10 to 0.2.11.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.10...jiff-static-0.2.11)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-02 11:00:28 -04:00
dependabot[bot] f2e4961a4b
build(deps): bump cc from 1.2.20 to 1.2.21 (#3897)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.20 to 1.2.21.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.20...cc-v1.2.21)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.21
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-02 10:59:54 -04:00
dependabot[bot] facaf571d8
build(deps): bump sha2 from 0.10.8 to 0.10.9 (#3893)
Bumps [sha2](https://github.com/RustCrypto/hashes) from 0.10.8 to 0.10.9.
- [Commits](https://github.com/RustCrypto/hashes/compare/sha2-v0.10.8...sha2-v0.10.9)

---
updated-dependencies:
- dependency-name: sha2
  dependency-version: 0.10.9
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 10:55:25 -04:00
dependabot[bot] 905f71fa25
build(deps): bump resolv-conf from 0.7.1 to 0.7.3 (#3892)
Bumps [resolv-conf](https://github.com/hickory-dns/resolv-conf) from 0.7.1 to 0.7.3.
- [Release notes](https://github.com/hickory-dns/resolv-conf/releases)
- [Commits](https://github.com/hickory-dns/resolv-conf/compare/v0.7.1...v0.7.3)

---
updated-dependencies:
- dependency-name: resolv-conf
  dependency-version: 0.7.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 10:55:14 -04:00
dependabot[bot] c822b72786
build(deps): bump synstructure from 0.13.1 to 0.13.2 (#3891)
Bumps [synstructure](https://github.com/mystor/synstructure) from 0.13.1 to 0.13.2.
- [Commits](https://github.com/mystor/synstructure/commits)

---
updated-dependencies:
- dependency-name: synstructure
  dependency-version: 0.13.2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 10:54:55 -04:00
dependabot[bot] b6a07aa01e
build(deps): bump tokio-metrics from 0.4.1 to 0.4.2 (#3890)
Bumps [tokio-metrics](https://github.com/tokio-rs/tokio-metrics) from 0.4.1 to 0.4.2.
- [Release notes](https://github.com/tokio-rs/tokio-metrics/releases)
- [Changelog](https://github.com/tokio-rs/tokio-metrics/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/tokio-metrics/compare/v0.4.1...v0.4.2)

---
updated-dependencies:
- dependency-name: tokio-metrics
  dependency-version: 0.4.2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 10:54:44 -04:00
dependabot[bot] f657ceabb4
build(deps): bump aws-lc-fips-sys from 0.13.5 to 0.13.6 (#3889)
Bumps [aws-lc-fips-sys](https://github.com/aws/aws-lc-rs) from 0.13.5 to 0.13.6.
- [Release notes](https://github.com/aws/aws-lc-rs/releases)
- [Commits](https://github.com/aws/aws-lc-rs/compare/aws-lc-fips-sys/v0.13.5...aws-lc-fips-sys/v0.13.6)

---
updated-dependencies:
- dependency-name: aws-lc-fips-sys
  dependency-version: 0.13.6
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 09:12:22 -04:00
dependabot[bot] 89e28324da
build(deps): bump syn from 2.0.100 to 2.0.101 (#3886)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.100 to 2.0.101.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.100...2.0.101)

---
updated-dependencies:
- dependency-name: syn
  dependency-version: 2.0.101
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 09:40:18 -04:00
Scott Fleener 577a67b2c6
feat(meshtls): Add aws-lc-rs as optional rustls backend (#3883)
This has a few benefits. Primarily this gives us a reasonable path to creating FIPS-enabled builds on architectures other than x86-64, as well as a path away from using BoringSSL as a backend.

Additionally, rustls has been using the aws-lc-rs library as the default backend for a little while now, so this gives us the opportunity to stay in line with the most widely used option in the ecosystem.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-04-28 08:38:40 -04:00
dependabot[bot] b4fb4277d4
build(deps): bump actions/download-artifact from 4.2.1 to 4.3.0 (#3885)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](95815c38cf...d3f86a106a)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-25 10:28:33 -04:00
dependabot[bot] 5e626ef240
build(deps): bump cc from 1.2.19 to 1.2.20 (#3884)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.19 to 1.2.20.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.19...cc-v1.2.20)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.20
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-25 09:35:30 -04:00
dependabot[bot] d4c8a74596
build(deps): bump tokio-util from 0.7.14 to 0.7.15 (#3882)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.14 to 0.7.15.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.14...tokio-util-0.7.15)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-version: 0.7.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 13:22:17 -04:00
dependabot[bot] ff162dba22
build(deps): bump getrandom from 0.2.15 to 0.2.16 (#3881)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.15 to 0.2.16.
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.15...v0.2.16)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-version: 0.2.16
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 10:53:37 -04:00
dependabot[bot] 266ec108ac
build(deps): bump the symbolic group with 2 updates (#3880)
Bumps the symbolic group with 2 updates: [symbolic-common](https://github.com/getsentry/symbolic) and [symbolic-demangle](https://github.com/getsentry/symbolic).


Updates `symbolic-common` from 12.15.3 to 12.15.4
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.15.3...12.15.4)

Updates `symbolic-demangle` from 12.15.3 to 12.15.4
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.15.3...12.15.4)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-version: 12.15.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symbolic
- dependency-name: symbolic-demangle
  dependency-version: 12.15.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: symbolic
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 10:53:25 -04:00
dependabot[bot] c4ded832b8
build(deps): bump jiff from 0.2.9 to 0.2.10 (#3879)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.9 to 0.2.10.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.9...jiff-static-0.2.10)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 10:44:42 -04:00
dependabot[bot] dd38e6b45a
build(deps): bump tokio-metrics from 0.4.0 to 0.4.1 (#3878)
Bumps [tokio-metrics](https://github.com/tokio-rs/tokio-metrics) from 0.4.0 to 0.4.1.
- [Release notes](https://github.com/tokio-rs/tokio-metrics/releases)
- [Changelog](https://github.com/tokio-rs/tokio-metrics/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/tokio-metrics/compare/v0.4.0...v0.4.1)

---
updated-dependencies:
- dependency-name: tokio-metrics
  dependency-version: 0.4.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 10:43:19 -04:00
katelyn martin ad5952f021
nit(http/retry): remove extra body poll in tests (#3877)
the initial replay body, circa the usage of our "compatibility" layer
(4b53081, #3598), used to need an extra poll to confirm the absence of
trailers before it would report itself as reaching the end of the
stream. these tests were added in (afda8a7b3, #3583).

this was an artifact of how the compatibility middleware masked the
previous `poll_data()` and `poll_trailer()` methods behind a
forward-compatible `poll_frame()`- and `frame()`-oriented interface.

this commit removes these extra calls to `initial.frame().await`, now
that the initial body will report the end of stream without an extra
call to await a `None`.

X-ref: #3598
X-ref: #3583

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-04-21 09:54:12 -07:00
Oliver Gould d25bbf262a
chore(dev): introduce copilot instructions (#3873)
This introduces a GitHub Copilot instructions file under .github to guide AI-driven code generation and updates the devcontainer configuration accordingly.

The new instructions enforce Rust styling, error handling, and tracing conventions across the project. It ensures generated code passes `cargo fmt` and `clippy`, avoids unwraps, and uses structured logging.
2025-04-21 12:24:34 -04:00
Oliver Gould ce62199344
fix(client-policy): enable TLS hostnames via overrides (#3871)
In 65db3dd we enabled overriding the behavior to export TLS hostnames for
outbound traffic, but we omitted TLS hostname labels.

This change updates the tls module to mirror the http module's behavior.
2025-04-21 12:13:51 -04:00
dependabot[bot] 5ebea46ca2
build(deps): bump rand from 0.9.0 to 0.9.1 (#3872)
Bumps [rand](https://github.com/rust-random/rand) from 0.9.0 to 0.9.1.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.9.0...rand_core-0.9.1)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-21 07:59:03 -07:00
dependabot[bot] 0c343ce118
build(deps): bump jiff from 0.2.8 to 0.2.9 (#3876)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.8 to 0.2.9.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.8...jiff-static-0.2.9)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-21 09:24:57 -04:00
dependabot[bot] d3943c6833
build(deps): bump signal-hook-registry from 1.4.2 to 1.4.5 (#3875)
Bumps [signal-hook-registry](https://github.com/vorner/signal-hook) from 1.4.2 to 1.4.5.
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vorner/signal-hook/compare/registry-v1.4.2...registry-v1.4.5)

---
updated-dependencies:
- dependency-name: signal-hook-registry
  dependency-version: 1.4.5
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-21 09:24:17 -04:00
dependabot[bot] 9135162dc8
build(deps): bump softprops/action-gh-release from 2.2.1 to 2.2.2 (#3874)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](c95fe14893...da05d55257)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-21 09:23:36 -04:00
dependabot[bot] 2a34d40df4
build(deps): bump codecov/codecov-action from 5.4.0 to 5.4.2 (#3867)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.4.0 to 5.4.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](0565863a31...ad3126e916)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 21:24:48 -07:00
dependabot[bot] ea1aa58255
build(deps): bump libc from 0.2.171 to 0.2.172 (#3868)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.171 to 0.2.172.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.172/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.171...0.2.172)

---
updated-dependencies:
- dependency-name: libc
  dependency-version: 0.2.172
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 21:24:26 -07:00
dependabot[bot] 46b90f8ae1
build(deps): bump proc-macro2 from 1.0.94 to 1.0.95 (#3869)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.94 to 1.0.95.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.94...1.0.95)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-version: 1.0.95
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 21:24:12 -07:00
dependabot[bot] 13ab2f4825
build(deps): bump jiff from 0.2.6 to 0.2.8 (#3866)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.6 to 0.2.8.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.6...jiff-static-0.2.8)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 10:14:56 -04:00
dependabot[bot] dc3a31c156
build(deps): bump anyhow from 1.0.97 to 1.0.98 (#3865)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.97 to 1.0.98.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.97...1.0.98)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-version: 1.0.98
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 10:14:31 -04:00
dependabot[bot] c5e9098f3d
build(deps): bump data-encoding from 2.8.0 to 2.9.0 (#3864)
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.8.0 to 2.9.0.
- [Commits](https://github.com/ia0/data-encoding/compare/v2.8.0...v2.9.0)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-version: 2.9.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 10:14:19 -04:00
katelyn martin 8a3a7aa072
chore(deps): group symbolic dependencies (#3863)
we use the `symbolic-common` and `symbolic-demangle` crates in our
dependency tree. these live in the same repo, here:
<https://github.com/getsentry/symbolic>

this commit introduces a "group" so that dependabot will upgrade them in
lockstep, rather than individually, such as in pull requests like
 #3853, #3852, #3857, #3858, or #3860.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-04-11 16:07:49 -04:00
dependabot[bot] 6bd80d4898
build(deps): bump symbolic-common from 12.15.1 to 12.15.3 (#3862)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.15.1 to 12.15.3.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/commits/12.15.3)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-version: 12.15.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-11 10:04:42 -04:00
dependabot[bot] ab11b85fee
build(deps): bump cc from 1.2.18 to 1.2.19 (#3861)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.18 to 1.2.19.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.18...cc-v1.2.19)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.19
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-11 10:04:26 -04:00
dependabot[bot] bd859fdb69
build(deps): bump symbolic-demangle from 12.15.1 to 12.15.3 (#3860)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.15.1 to 12.15.3.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/commits/12.15.3)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-version: 12.15.3
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-11 10:04:17 -04:00
dependabot[bot] 36f1fac274
build(deps): bump rustls from 0.23.25 to 0.23.26 in the rustls group (#3859)
Bumps the rustls group with 1 update: [rustls](https://github.com/rustls/rustls).


Updates `rustls` from 0.23.25 to 0.23.26
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.25...v/0.23.26)

---
updated-dependencies:
- dependency-name: rustls
  dependency-version: 0.23.26
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rustls
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-11 10:04:03 -04:00
dependabot[bot] 2f345f9aea
build(deps): bump symbolic-common from 12.15.0 to 12.15.1 (#3858)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.15.0 to 12.15.1.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/commits)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-version: 12.15.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-10 09:55:34 -04:00
dependabot[bot] a9c123566f
build(deps): bump symbolic-demangle from 12.15.0 to 12.15.1 (#3857)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.15.0 to 12.15.1.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/commits)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-version: 12.15.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-10 09:55:24 -04:00
katelyn martin 6426c38906
fix(http/prom): record bodies when eos reached (#3856)
* chore(app/outbound): `linkerd-mock-http-body` test dependency

this adds a development dependency, so we can use this mock body type in
the outbound proxy's unit tests.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/outbound): additional http route metrics tests

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/outbound): additional grpc route metrics tests

Signed-off-by: katelyn martin <kate@buoyant.io>

* fix(http/prom): record bodies when eos reached

this commit fixes a bug discovered by @alpeb, which was introduced in
proxy v2.288.0.

> The associated metric is `outbound_http_route_request_statuses_total`:
>
> ```
> $ linkerd dg proxy-metrics -n booksapp deploy/webapp|rg outbound_http_route_request_statuses_total.*authors
> outbound_http_route_request_statuses_total{parent_group="core",parent_kind="Service",parent_namespace="booksapp",parent_name="authors",parent_port="7001",parent_section_name="",route_group="",route_kind="default",route_namespace="",route_name="http",hostname="",http_status="204",error=""} 5
> outbound_http_route_request_statuses_total{parent_group="core",parent_kind="Service",parent_namespace="booksapp",parent_name="authors",parent_port="7001",parent_section_name="",route_group="",route_kind="default",route_namespace="",route_name="http",hostname="",http_status="201",error="UNKNOWN"} 5
> outbound_http_route_request_statuses_total{parent_group="core",parent_kind="Service",parent_namespace="booksapp",parent_name="authors",parent_port="7001",parent_section_name="",route_group="",route_kind="default",route_namespace="",route_name="http",hostname="",http_status="200",error="UNKNOWN"} 10
> ```
>
> The problem was introduced in `edge-25.3.4`, with the proxy `v2.288.0`.
> Before that the metrics looked like:
>
> ```
> $ linkerd dg proxy-metrics -n booksapp deploy/webapp|rg outbound_http_route_request_statuses_total.*authors
> outbound_http_route_request_statuses_total{parent_group="core",parent_kind="Service",parent_namespace="booksapp",parent_name="authors",parent_port="7001",parent_section_name="",route_group="",route_kind="default",route_namespace="",route_name="http",hostname="",http_status="200",error=""} 193
> outbound_http_route_request_statuses_total{parent_group="core",parent_kind="Service",parent_namespace="booksapp",parent_name="authors",parent_port="7001",parent_section_name="",route_group="",route_kind="default",route_namespace="",route_name="http",hostname="",http_status="204",error=""} 96
> outbound_http_route_request_statuses_total{parent_group="core",parent_kind="Service",parent_namespace="booksapp",parent_name="authors",parent_port="7001",parent_section_name="",route_group="",route_kind="default",route_namespace="",route_name="http",hostname="",http_status="201",error=""} 96
> ```
>
> So the difference is the non-empty value for `error=UNKNOWN` even
> when `https_status` is 2xx, which `linkerd viz stat-outbound`
> interprets as failed requests.

in #3086 we introduced a suite of route- and backend-level metrics. that
subsystem contains a body middleware that will report itself as having
reached the end-of-stream by delegating directly down to its inner
body's `is_end_stream()` hint.

this is roughly correct, but is slightly distinct from the actual
invariant: a `linkerd_http_prom::record_response::ResponseBody<B>` must
call its `end_stream` helper to classify the outcome and increment the
corresponding time series in the
`outbound_http_route_request_statuses_total` metric family.

in #3504 we upgraded our hyper dependency. while doing so, we neglected
to include a call to `end_stream` if a data frame is yielded and the
inner body reports itself as having reached the end-of-stream.

this meant that instrumented bodies would be polled until the end is
reached, but were being dropped before a `None` was encountered.

this commit fixes this issue in two ways, to be defensive:

* invoke `end_stream()` if a non-trailers frame is yielded, and the
  inner body now reports itself as having ended. this restores the
  behavior in place prior to #3504. see the relevant component of that
  diff, here:
  <https://github.com/linkerd/linkerd2-proxy/pull/3504/files#diff-45d0bc344f76c111551a8eaf5d3f0e0c22ee6e6836a626e46402a6ae3cbc0035L262-R274>

* rather than delegating to the inner `<B as Body>::is_end_stream()`
  method, report the end-of-stream being reached by inspecting whether
  or not the inner response state has been taken. this is the state that
  directly indicates whether or not the `ResponseBody<B>` middleware is
  finished.

X-ref: #3504
X-ref: #3086
X-ref: linkerd/linkerd2#8733
Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-04-09 15:30:55 -04:00
dependabot[bot] 985580f9b5
build(deps): bump miniz_oxide from 0.8.7 to 0.8.8 (#3855)
Bumps [miniz_oxide](https://github.com/Frommi/miniz_oxide) from 0.8.7 to 0.8.8.
- [Changelog](https://github.com/Frommi/miniz_oxide/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Frommi/miniz_oxide/compare/0.8.7...0.8.8)

---
updated-dependencies:
- dependency-name: miniz_oxide
  dependency-version: 0.8.8
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 10:59:41 -04:00
dependabot[bot] ad7fcf2dfb
build(deps): bump crossbeam-channel from 0.5.14 to 0.5.15 (#3854)
Bumps [crossbeam-channel](https://github.com/crossbeam-rs/crossbeam) from 0.5.14 to 0.5.15.
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases)
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.14...crossbeam-channel-0.5.15)

---
updated-dependencies:
- dependency-name: crossbeam-channel
  dependency-version: 0.5.15
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 10:59:35 -04:00
dependabot[bot] f6bbab6640
build(deps): bump symbolic-common from 12.14.1 to 12.15.0 (#3853)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.14.1 to 12.15.0.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/commits)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-version: 12.15.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 10:59:28 -04:00
dependabot[bot] 5f2f8fbacd
build(deps): bump symbolic-demangle from 12.14.1 to 12.15.0 (#3852)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.14.1 to 12.15.0.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/commits)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-version: 12.15.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 10:59:20 -04:00
dependabot[bot] 096f547ffb
build(deps): bump tj-actions/changed-files from 46.0.4 to 46.0.5 (#3851)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 46.0.4 to 46.0.5.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](6cb76d07be...ed68ef82c0)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-version: 46.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 10:59:09 -04:00
dependabot[bot] abeb366500
build(deps): bump jiff from 0.2.5 to 0.2.6 (#3849)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.5 to 0.2.6.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.5...jiff-static-0.2.6)

---
updated-dependencies:
- dependency-name: jiff
  dependency-version: 0.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 12:05:56 -04:00
dependabot[bot] c17a6acee8
build(deps): bump hostname from 0.4.0 to 0.4.1 (#3850)
Bumps [hostname](https://github.com/svartalf/hostname) from 0.4.0 to 0.4.1.
- [Release notes](https://github.com/svartalf/hostname/releases)
- [Changelog](https://github.com/djc/hostname/blob/main/CHANGELOG.md)
- [Commits](https://github.com/svartalf/hostname/commits)

---
updated-dependencies:
- dependency-name: hostname
  dependency-version: 0.4.1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 12:05:23 -04:00
dependabot[bot] a9f7a9ae9d
build(deps): bump indexmap from 2.8.0 to 2.9.0 (#3848)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.8.0 to 2.9.0.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.8.0...2.9.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-version: 2.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-07 10:18:15 -04:00
dependabot[bot] 6de15c0a55
build(deps): bump tokio from 1.44.1 to 1.44.2 (#3847)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.44.1 to 1.44.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.44.1...tokio-1.44.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.44.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-07 10:17:40 -04:00
dependabot[bot] 77837c5e45
build(deps): bump smallvec from 1.14.0 to 1.15.0 (#3846)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.14.0...v1.15.0)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-version: 1.15.0
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-07 10:17:17 -04:00
dependabot[bot] e6fee10099
build(deps): bump prettyplease from 0.2.31 to 0.2.32 (#3845)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.31 to 0.2.32.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.31...0.2.32)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-version: 0.2.32
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-07 10:17:00 -04:00
dependabot[bot] 52a30254c7
build(deps): bump errno from 0.3.10 to 0.3.11 (#3844)
Bumps [errno](https://github.com/lambda-fairy/rust-errno) from 0.3.10 to 0.3.11.
- [Release notes](https://github.com/lambda-fairy/rust-errno/releases)
- [Changelog](https://github.com/lambda-fairy/rust-errno/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lambda-fairy/rust-errno/compare/v0.3.10...v0.3.11)

---
updated-dependencies:
- dependency-name: errno
  dependency-version: 0.3.11
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-04 12:25:48 -04:00
dependabot[bot] fee5b9734a
build(deps): bump cc from 1.2.17 to 1.2.18 (#3843)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.17 to 1.2.18.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.17...cc-v1.2.18)

---
updated-dependencies:
- dependency-name: cc
  dependency-version: 1.2.18
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-04 15:55:47 +00:00
katelyn martin 33a177d054
chore(deps): add `tokio-boring` to dependabot group (#3842)
this adds `tokio-boring` to the `boring` group.

this will group these crates together and bump them in lockstep.

see, for example:
* #3838
* #3840

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-04-04 11:44:05 -04:00
dependabot[bot] 6cc16b430e
build(deps): bump tokio-boring from 4.15.0 to 4.16.0 (#3838)
Bumps [tokio-boring](https://github.com/cloudflare/boring) from 4.15.0 to 4.16.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.15.0...v4.16.0)

---
updated-dependencies:
- dependency-name: tokio-boring
  dependency-version: 4.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-04 11:34:16 -04:00
dependabot[bot] 18109a447e
build(deps): bump opentelemetry in the opentelemetry group (#3837)
Bumps the opentelemetry group with 1 update: [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust).


Updates `opentelemetry` from 0.29.0 to 0.29.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.29.0...opentelemetry-0.29.1)

---
updated-dependencies:
- dependency-name: opentelemetry
  dependency-version: 0.29.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: opentelemetry
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-04 11:03:32 -04:00
dependabot[bot] 05b4ab7314
build(deps): bump miniz_oxide from 0.8.5 to 0.8.7 (#3841)
Bumps [miniz_oxide](https://github.com/Frommi/miniz_oxide) from 0.8.5 to 0.8.7.
- [Changelog](https://github.com/Frommi/miniz_oxide/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Frommi/miniz_oxide/compare/0.8.5...0.8.7)

---
updated-dependencies:
- dependency-name: miniz_oxide
  dependency-version: 0.8.7
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-04 10:51:20 -04:00
dependabot[bot] 483cd0d3ff
build(deps): bump tj-actions/changed-files (#3839)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from b74df86ccb65173a8e33ba5492ac1a2ca6b216fd to 6cb76d07bee4c9772c6882c06c37837bf82a04d3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](b74df86ccb...6cb76d07be)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-version: 6cb76d07bee4c9772c6882c06c37837bf82a04d3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-04 10:50:18 -04:00
dependabot[bot] 5444732bab
build(deps): bump flate2 from 1.1.0 to 1.1.1 (#3835)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.0...1.1.1)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 11:47:35 -04:00
katelyn martin 686934cec6
chore(proxy/http): use `hyper_util::rt::tokio::TokioExecutor` (#3833)
this commit removes the `linkerd-http-executor` crate, and replaces all
usage of its `TracingExecutor` type with the `TokioExecutor` type
provided by `hyper-util`.

this work is based upon hyperium/hyper-util#166. that change, included
in the 0.1.11 release, altered the `TokioExecutor` type so that it
propagates tracing context when the `tracing` feature is enabled.

with that change made, our `TracingExecutor` type is now redundant.

* https://github.com/hyperium/hyper-util/pull/166
* https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md#0111-2025-03-31

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-04-01 13:19:53 -04:00
katelyn martin c01e7e268a
feat(app,dns): add prometheus metrics to `Dns` (#3822)
this commit introduces a new metric family tracking the rate and outcome
of dns lookups made by the linkerd2 proxy. this metric family has three
labels, counting the number of DNS resolutions for each distinct
control plane client, by record type (A/AAAA or SRV), and by outcome
(success or failure).

this metric is named `control_dns_resolutions_total`.

this commit generally does this via the addition of some new interfaces
to `linkerd-dns`'s `Resolver` structure. the `resolve_addrs()` method is
extended to increment particular counters if they have been installed.

the `linkerd-app` crate's `Dns` type now encapsulates its resolver, and
callers acquire a new resolver by providing a client name to its
`resolver()` method. this uses the client name to construct label sets
and create the corresponding time series for each client.

once proxies with this patch are running, and the viz extension has been
installed, one can query this metric like so:

**nb:** this screenshot shows an early prototype, this metric has since
been renamed.

![linkerd-dns-prometheus-metrics](https://github.com/user-attachments/assets/3138dcfc-6800-4c0f-8215-61d84085032b)

this promQL query...

```
sum(rate(control_dns_resolutions_total[1m])) by (app,client,result) > 0
```

...will show the per-minute rate of dns lookups/failures across each
application workload, for each control-plane client, for each possible
outcome.

Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2025-04-01 16:02:17 +00:00
Oliver Gould c631974d97
feat(inbound): support unsafe authority labels via configuration (#3830)
In linkerd/linkerd2-proxy#3547, we removed unsafe authority labels. This was a
breaking change, since the behavior was considered unsafe.

To support a graceful migration, this change adds an environment configuration,
`LINKERD2_PROXY_INBOUND_AUTHORITY_LABELS=unsafe`, that reverts to the prior
behavior.

It may be configured in linkerd2 via the proxy.additionalEnv helm value.
2025-04-01 18:17:09 +03:00
dependabot[bot] f3b67eaaa7
build(deps): bump tj-actions/changed-files (#3831)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99 to b74df86ccb65173a8e33ba5492ac1a2ca6b216fd.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](27ae6b33ea...b74df86ccb)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 11:16:53 -04:00
dependabot[bot] c426634f6d
build(deps): bump hyper-util from 0.1.10 to 0.1.11 (#3832)
Bumps [hyper-util](https://github.com/hyperium/hyper-util) from 0.1.10 to 0.1.11.
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.10...v0.1.11)

---
updated-dependencies:
- dependency-name: hyper-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 11:16:00 -04:00
dependabot[bot] 652ab23578
build(deps): bump governor from 0.8.0 to 0.10.0 (#3817)
Bumps [governor](https://github.com/boinkor-net/governor) from 0.8.0 to 0.10.0.
- [Release notes](https://github.com/boinkor-net/governor/releases)
- [Changelog](https://github.com/boinkor-net/governor/blob/master/release.toml)
- [Commits](https://github.com/boinkor-net/governor/compare/v0.8.0...v0.10.0)

---
updated-dependencies:
- dependency-name: governor
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 18:58:17 +00:00
Oliver Gould 9d2df887a7
chore(deny): allow Zlib (#3829) 2025-03-31 14:43:45 -04:00
dependabot[bot] a3d854ee8e
build(deps): bump once_cell from 1.21.2 to 1.21.3 (#3826)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.21.2 to 1.21.3.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.21.2...v1.21.3)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 08:47:13 -07:00
dependabot[bot] 89971fc130
build(deps): bump socket2 from 0.5.8 to 0.5.9 (#3825)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.5.8 to 0.5.9.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/commits)

---
updated-dependencies:
- dependency-name: socket2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 08:46:57 -07:00
katelyn martin 523d3ed25d
chore(deps): group grpc dependabot groups (#3821)
* https://github.com/linkerd/linkerd2/blob/main/.github/dependabot.yml#L81-L86
* #3809
* https://github.com/linkerd/linkerd2-proxy-api/pull/455#discussion_r2017528014

tonic and prost are interconnected. we should bump them in lockstep.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-31 08:44:46 -07:00
Oliver Gould e0c4d42317
chore(deps): bump linkerd2-proxy-api from git to v0.16.0 (#3827) 2025-03-31 08:10:21 -07:00
Oliver Gould 2e4ca134b5
fix(ci): work around broken `linkerd install --crds` (#3828)
The latest edge doesn't properly install gateway API crds. This changes our
justfile to install the resources from the upstream release instead of the
Linkerd CLI.
2025-03-31 14:55:09 +00:00
katelyn martin cdfcbc10f0
nit(app): tweak debug event message (#3823)
this commit changes a message for a debug-level tracing event.

this block builds a trace collector. we can call it that, instead of the
more generic term "client". there are many clients being built here,
including identity, policy, and destination controller clients.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-27 15:34:00 -07:00
katelyn martin 0404a69250
nit(docs): fix broken intradoc links (#3820)
this commit fixes some broken links now that we have updated to the
latest 1.0 version of `http-body`.

this should address some warnings that can be seen in pull requests'
"files" tab in github. see, for example:
`https://github.com/linkerd/linkerd2-proxy/pull/3818/files`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-27 15:12:41 -07:00
katelyn martin ae8caa630b
refactor(app/core): remove unused dns configuration surface (#3819)
`LINKERD2_PROXY_RESOLV_CONF` is an environment variable that ostensibly
is used to set the path of the resolver configuration file.

this connects to a `resolv_conf_path` field in the application's dns
`Config` structure, but that field is never used.

because it is marked as public, this isn't caught by the compiler's dead
code analysis.

see `resolv.conf(5)` for more information.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-27 16:45:52 -04:00
dependabot[bot] df39864cea
build(deps): bump once_cell from 1.21.1 to 1.21.2 (#3818)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.21.1 to 1.21.2.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.21.1...v1.21.2)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-27 16:43:54 -04:00
katelyn martin 9300d3b4a5
chore(deps): dependabot group for unicode components (#3815)
* chore(deps): dependabot group for unicode components

this commit introduces a new dependabot group.

this will update all of the crates maintained by the icu4x organization
in lockstep. we depend upon these transitively to handle urls.

```
; cargo tree | rg icu_ | rg 'icu_\w*' --only-matching | sort | uniq
icu_collections
icu_locid
icu_locid_transform
icu_locid_transform_data
icu_normalizer
icu_normalizer_data
icu_properties
icu_properties_data
icu_provider
icu_provider_macros
```

see:

- https://docs.rs/icu/latest/icu/
- https://icu.unicode.org/
- https://github.com/orgs/unicode-org/repositories?type=all
- https://crates.io/crates/idna
- #3811
- #3812
- #3813

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit: alphabetize

Signed-off-by: katelyn martin <kate@buoyant.io>

* review: use a glob

Co-authored-by: Oliver Gould <ver@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2025-03-27 14:55:43 -04:00
katelyn martin 92e55e46f1
chore(deps): update unicode dependencies (#3816)
this commit updates our `icu_*` dependencies.

see:
* #3811
* #3812
* #3813
* #3815

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-27 14:54:19 -04:00
katelyn martin 6691c16b79
nit(proxy-resolve): address `XXX` comment (#3814)
this commit addresses a todo comment in the `linkerd-proxy-resolve`
crate. this comment mentioned that a `match` block was originally an `if
let` block. a clippy lint is locally ignored as well, regarding `match`
statements with a single pattern.

contrary to the comment, `if let` *does* work with pin projection, as of
today.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-27 14:54:02 -04:00
katelyn martin 3c2d5ddfc3
chore(deps): add `tonic` dependabot group (#3809)
this commit adds a group to the dependabot configuration.

this will mean that dependabot updates `tonic` and `tonic-build` in
lockstep.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-26 16:13:53 -04:00
dependabot[bot] 9ef862b8c7
build(deps): bump rustls-webpki in the rustls group (#3808)
Bumps the rustls group with 1 update: [rustls-webpki](https://github.com/rustls/webpki).


Updates `rustls-webpki` from 0.103.0 to 0.103.1
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.103.0...v/0.103.1)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rustls
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-26 10:58:28 -04:00
katelyn martin a3ce71954e
fix(dns-resolve): add a lower-bound TTL for dns refreshing (#3807)
DNS servers may return extremely low TTLs in some cases. When we're polling DNS to power a load balancer, we need to enforce a minimum duration to prevent tight-looping DNS queries.

This change adds a 5s minimum time between DNS lookups when resolving control plane components.

fixes linkerd/linkerd2#13508
2025-03-25 16:37:38 -07:00
dependabot[bot] 135a7352ae
build(deps): bump log from 0.4.26 to 0.4.27 (#3806)
Bumps [log](https://github.com/rust-lang/log) from 0.4.26 to 0.4.27.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.26...0.4.27)

---
updated-dependencies:
- dependency-name: log
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-25 10:44:51 -04:00
dependabot[bot] 85d1d31f06
build(deps): bump deranged from 0.4.0 to 0.4.1 (#3805)
* build(deps): bump deranged from 0.4.0 to 0.4.1

Bumps [deranged](https://github.com/jhpratt/deranged) from 0.4.0 to 0.4.1.
- [Commits](https://github.com/jhpratt/deranged/commits)

---
updated-dependencies:
- dependency-name: deranged
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(proxy/tap): fix inference error

https://github.com/jhpratt/deranged/issues/19

`deranged` added some additional interfaces in 0.4.1 that seem to affect
this `Into<T>` invocation. use `From::from` instead, so we can
explicitly indicate that we wish to convert this into an integer for
comparison.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: katelyn martin <kate@buoyant.io>
2025-03-24 11:16:37 -04:00
dependabot[bot] a7c12ea54c
build(deps): bump time from 0.3.40 to 0.3.41 (#3804)
Bumps [time](https://github.com/time-rs/time) from 0.3.40 to 0.3.41.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.40...v0.3.41)

---
updated-dependencies:
- dependency-name: time
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 06:53:24 -07:00
dependabot[bot] 59e330f561
build(deps): bump jiff from 0.2.4 to 0.2.5 (#3803)
Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.4 to 0.2.5.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.4...jiff-static-0.2.5)

---
updated-dependencies:
- dependency-name: jiff
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 06:53:02 -07:00
dependabot[bot] f20851ee0b
build(deps): bump jiff-tzdb from 0.1.3 to 0.1.4 (#3802)
Bumps [jiff-tzdb](https://github.com/BurntSushi/jiff) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-tzdb-0.1.3...jiff-tzdb-0.1.4)

---
updated-dependencies:
- dependency-name: jiff-tzdb
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 06:52:48 -07:00
dependabot[bot] a92e6e97e7
build(deps): bump the opentelemetry group with 2 updates (#3801)
Bumps the opentelemetry group with 2 updates: [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust) and [opentelemetry_sdk](https://github.com/open-telemetry/opentelemetry-rust).


Updates `opentelemetry` from 0.28.0 to 0.29.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.28.0...opentelemetry-0.29.0)

Updates `opentelemetry_sdk` from 0.28.0 to 0.29.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry_sdk-0.28.0...opentelemetry_sdk-0.29.0)

---
updated-dependencies:
- dependency-name: opentelemetry
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
- dependency-name: opentelemetry_sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 06:47:06 -07:00
dependabot[bot] 2108f3433e
build(deps): bump tj-actions/changed-files (#3800)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 6482371e862961013f9584015cf362c4f664b20c to 27ae6b33eaed7bf87272fdeb9f1c54f9facc9d99.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](6482371e86...27ae6b33ea)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 06:45:04 -07:00
Oliver Gould 9f4c019844
fix(app): avoid unused import on non-linux builds (#3799) 2025-03-21 10:53:16 -07:00
Oliver Gould 41b93cb805
chore(ci): disable unnecessary k3s components (#3798)
We can run our testing k3d cluster with minimal components enabled. This will
speed up the cluster creation and deletion process (i.e. especially in CI).
2025-03-21 17:15:17 +00:00
katelyn martin 76d969544f
chore(deps): upgrade to tower 0.5 (#3744)
* chore(deps)!: upgrade to tower 0.5

this commit updates our tower dependency from 0.4 to 0.5.

note that this commit does not affect the `tower-service` and
`tower-layer` crates, reëxported by `tower` itself. the `Service<T>`
trait and the closely related `Layer<S>` trait have not been changed.

the `tower` crate's utilities have changed in various ways, some of
particular note for the linkerd2 proxy. see these items, excerpted from
the tower changelog:

- **retry**: **Breaking Change** `retry::Policy::retry` now accepts `&mut Req` and `&mut Res` instead of the previous mutable versions. This
  increases the flexibility of the retry policy. To update, update your method signature to include `mut` for both parameters. ([tower-rs/tower#584])
- **retry**: **Breaking Change** Change Policy to accept &mut self ([tower-rs/tower#681])
- **retry**: **Breaking Change** `Budget` is now a trait. This allows end-users to implement their own budget and bucket implementations. ([tower-rs/tower#703])
- **util**: **Breaking Change** `Either::A` and `Either::B` have been renamed `Either::Left` and `Either::Right`, respectively. ([tower-rs/tower#637])
- **util**: **Breaking Change** `Either` now requires its two services to have the same error type. ([tower-rs/tower#637])
- **util**: **Breaking Change** `Either` no longer implemenmts `Future`. ([tower-rs/tower#637])
- **buffer**: **Breaking Change** `Buffer<S, Request>` is now generic over `Buffer<Request, S::Future>.` ([tower-rs/tower#654])

see:

* <https://github.com/tower-rs/tower/pull/584>
* <https://github.com/tower-rs/tower/pull/681>
* <https://github.com/tower-rs/tower/pull/703>
* <https://github.com/tower-rs/tower/pull/637>
* <https://github.com/tower-rs/tower/pull/654>

the `Either` trait bounds are particularly impactful for us. because
this runs counter to how we treat errors (skewing towards boxed errors,
in general), we temporarily vendor a version of `Either` from the 0.4
release, whose variants have been renamed to match the 0.5 interface.

updating to box the inner `A` and `B` services' errors, so we satiate
the new `A::Error = B::Error` bounds, can be addressed as a follow-on.
that's intentionally left as a separate change, due to the net size of
our patchset between this branch and #3504.

* <https://github.com/tower-rs/tower/compare/v0.4.x...master>
* <https://github.com/tower-rs/tower/blob/master/tower/CHANGELOG.md>

this work is based upon #3504. for more information, see:

* https://github.com/linkerd/linkerd2/issues/8733
* https://github.com/linkerd/linkerd2-proxy/pull/3504

Signed-off-by: katelyn martin <kate@buoyant.io>
X-Ref: https://github.com/tower-rs/tower/pull/815
X-Ref: https://github.com/tower-rs/tower/pull/817
X-Ref: https://github.com/tower-rs/tower/pull/818
X-Ref: https://github.com/tower-rs/tower/pull/819

* fix(stack/loadshed): update test affected by tower-rs/tower#635

this commit updates a test that was affected by breaking changes in
tower's `Buffer` middleware. see this excerpt from the description of
that change:

> I had to change some of the integration tests slightly as part of this
> change. This is because the buffer implementation using semaphore
> permits is _very subtly_ different from one using a bounded channel. In
> the `Semaphore`-based implementation, a semaphore permit is stored in
> the `Message` struct sent over the channel. This is so that the capacity
> is used as long as the message is in flight. However, when the worker
> task is processing a message that's been recieved from the channel,
> the permit is still not dropped. Essentially, the one message actively
> held by the worker task _also_ occupies one "slot" of capacity, so the
> actual channel capacity is one less than the value passed to the
> constructor, _once the first request has been sent to the worker_. The
> bounded MPSC changed this behavior so that capacity is only occupied
> while a request is actually in the channel, which broke some tests
> that relied on the old (and technically wrong) behavior.

bear particular attention to this:

> The bounded MPSC changed this behavior so that capacity is only
> occupied while a request is actually in the channel, which broke some
> tests that relied on the old (and technically wrong) behavior.

that pr adds an additional message to the channel in tests exercising
the laod-shedding behavior, on account of the previous (incorrect)
behavior.

https://github.com/tower-rs/tower/pull/635/files#r797108274

this commit performs the same change for our corresponding test, adding
an additional `ready()` call before we hit the buffer's limit.

Signed-off-by: katelyn martin <kate@buoyant.io>

* review: use vendored `Either` for consistency

https://github.com/linkerd/linkerd2-proxy/pull/3744#discussion_r1999878537

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-21 17:08:34 +00:00
Oliver Gould bab244210e
chore(just): set installGatewayAPI in CRD install (#3797) 2025-03-21 12:59:20 -04:00
Alejandro Pedraza f1768a3044
fix(transport): repair IPv6 support (#3793)
In #3626, we refactored the origin_dst determination logic to utilize
socket2 calls. However, this change inadvertently disrupted IPv6 and
dual-stack support, causing the server to fail to start when deployed on
such network configurations:

```
WARN ThreadId(01) inbound: linkerd_app_core::serve: Server failed to accept connection error=No such file or directory (os error 2)
```

This change reintroduces detection of the current network family,
calling socket2's `original_dst()` or `original_dst_ipv6()` depending on
the case.

Tested fine in both IPv6 and dual-stack Kind clusters.
2025-03-21 09:54:12 -07:00
katelyn martin 76d4181499
chore(deps)!: upgrade to hyper 1.x (#3504)
##  chore(deps): upgrade to hyperium 1.x crates

this branch performs an exciting upgrade for our proxy.

this branch upgrades a number of our dependencies so that we use the 1.0
release family of the `hyper` http framework, and its ecosystem. see the
[v1.0 announcement][hyper-v1] for more information.

this branch upgrades the following dependencies:

* `h2`: 0.3 -> 0.4
* `http`: 0.2 -> 1
* `http-body`: 0.4 -> 1
* `hyper`: 0.14.32 -> 1
* `prost`: 0.12 -> 0.13
* `prost-build`: 0.12 -> 0.13
* `prost-types`: 0.12 -> 0.13
* `tonic`: 0.10 -> 0.12
* `tonic-build`: 0.10 -> 0.12

a `hyper-util` dependency is added, which provides among other things,
legacy-compatible interfaces such as `hyper_util::client::legacy::Client`, or
glue to use `hyper` with the tokio runtime.

see <https://docs.rs/hyper-util/latest/hyper_util/> for more information.

a `http-body-util` dependency is added, which provides a `BodyExt` trait and a
channel-backed body for use in unit tests. the `deprecated` feature flag that
was active on our `0.14` hyper dependency has been removed, along with the
`stream` and `runtime` feature flags.

the `linkerd2-proxy-api` dependency is updated. see:
<https://github.com/linkerd/linkerd2-proxy-api/pull/421>

### 📝 notes for review

bear particular attention to changes involving `http_body::Body` middleware.

the change from two separate `poll_data()` and `poll_trailers()` functions,
to a single `poll_frame()` method, induces some subtle changes to various
pieces of middleware.

also bear in mind that failing to set a timer, in our case
`hyper_util::rt::TokioTimer`, can cause http/2 clients, or http/1 and http/2
servers, to panic. make sure that any uses of
`hyper::server::conn::http1::Builder`, `hyper::client::conn::http1::Builder`,
or `hyper::client::conn::http2::Builder` install a timer.

###  breaking change: `l5d-proxy-error` values

the `l5d-proxy-error` header can be examined to observe the cause of proxy
errors encountered when sending meshed traffic. by virtue of this using a newer
`hyper` client in the proxy, some error messages may in turn look different.
for example, an error like `"connect timed out after 1s"` may now appear as
`"client error (Connect)"`.

### 📚 other notes

this work, by virtue of touching so many parts of the system, is carried out
in distinct commits. an initial commit upgrades the dependencies at th
workspace level. subsequent commits will not compile if the `--workspace` flag
is provided, but the intent of this branch is to update each crate
individually.

use commands like, e.g. `cargo check --tests -p linkerd-proxy-http` to build
particular crates at intermediate commits within this branch.

this commit is also only the final leaf in an _extended_ line of work. this
has been done to mitigate the effort of reviewing this change, and the risk of
churn in the event of any unanticipated errors. see the top-level comment in
https://github.com/linkerd/linkerd2/issues/8733 for an overview of all of the
work that brought us to this juncture.

[hyper-v1]: https://seanmonstar.com/blog/hyper-v1/

---

* chore(deps): upgrade to hyper 1.x

note: this commit will not compile, code changes are intentionally
elided from this commit.

this commit upgrades hyper, http, tonic, prost, related dependencies,
and their assorted cargo features.

see <https://github.com/linkerd/linkerd2/issues/8733>.

see also:

* https://github.com/linkerd/linkerd2-proxy/pull/3379
* https://github.com/linkerd/linkerd2-proxy/pull/3380
* https://github.com/linkerd/linkerd2-proxy/pull/3382
* https://github.com/linkerd/linkerd2-proxy/pull/3405
* https://github.com/hyperium/hyper/pull/3796
* https://github.com/linkerd/linkerd2-proxy/pull/3411
* https://github.com/linkerd/linkerd2-proxy/pull/3421
* https://github.com/linkerd/linkerd2-proxy/pull/3427
* https://github.com/linkerd/linkerd2-proxy/pull/3428
* https://github.com/linkerd/linkerd2-proxy/pull/3432
* https://github.com/linkerd/linkerd2-proxy/pull/3433
* https://github.com/linkerd/linkerd2-proxy/pull/3444
* https://github.com/linkerd/linkerd2-proxy/pull/3445
* https://github.com/linkerd/linkerd2-proxy/pull/3454
* https://github.com/linkerd/linkerd2-proxy/pull/3455
* https://github.com/linkerd/linkerd2-proxy/pull/3456
* https://github.com/linkerd/linkerd2-proxy/pull/3457
* https://github.com/linkerd/linkerd2-proxy/pull/3461
* https://github.com/linkerd/linkerd2-proxy/pull/3459
* https://github.com/linkerd/linkerd2-proxy/pull/3465
* https://github.com/linkerd/linkerd2-proxy/pull/3466
* https://github.com/linkerd/linkerd2-proxy/pull/3467
* https://github.com/linkerd/linkerd2-proxy/pull/3468
* https://github.com/linkerd/linkerd2-proxy-api/pull/421
* https://github.com/linkerd/linkerd2/pull/13492
* https://github.com/linkerd/linkerd2/pull/13493
* https://github.com/hyperium/hyper/pull/3816
* https://github.com/linkerd/linkerd2-proxy/pull/3472
* https://github.com/linkerd/linkerd2-proxy/pull/3473
* https://github.com/linkerd/linkerd2-proxy/pull/3479
* https://github.com/tokio-rs/tokio/pull/7059
* https://github.com/linkerd/linkerd2-proxy/pull/3509
* https://github.com/hyperium/http-body/pull/140/
* https://github.com/linkerd/linkerd2-proxy/pull/3515
* https://github.com/hyperium/http-body/pull/141/
* https://github.com/linkerd/linkerd2-proxy/pull/3530
* https://github.com/linkerd/linkerd2-proxy/pull/3531
* https://github.com/linkerd/linkerd2-proxy/pull/3540
* https://github.com/linkerd/linkerd2-proxy/pull/3556
* https://github.com/linkerd/linkerd2-proxy/pull/3558
* https://github.com/linkerd/linkerd2-proxy/pull/3559
* https://github.com/linkerd/linkerd2-proxy/pull/3564
* https://github.com/linkerd/linkerd2-proxy/pull/3567
* https://github.com/linkerd/linkerd2-proxy/pull/3573
* https://github.com/linkerd/linkerd2-proxy/pull/3583
* https://github.com/hyperium/http-body/pull/144
* https://github.com/linkerd/linkerd2-proxy/pull/3585
* https://github.com/linkerd/linkerd2-proxy/pull/3586
* https://github.com/linkerd/linkerd2-proxy/pull/3597
* https://github.com/linkerd/linkerd2-proxy/pull/3598
* https://github.com/linkerd/linkerd2-proxy/pull/3611
* https://github.com/linkerd/linkerd2-proxy/pull/3614
* https://github.com/linkerd/linkerd2-proxy/pull/3615
* https://github.com/linkerd/linkerd2-proxy/pull/3616
* https://github.com/linkerd/linkerd2-proxy/pull/3647
* https://github.com/linkerd/linkerd2-proxy/pull/3651
* https://github.com/linkerd/linkerd2-proxy/pull/3653
* https://github.com/linkerd/linkerd2-proxy/pull/3654
* https://github.com/linkerd/linkerd2-proxy/pull/3655
* https://github.com/linkerd/linkerd2-proxy/pull/3656
* https://github.com/linkerd/linkerd2-proxy/pull/3657
* https://github.com/linkerd/linkerd2-proxy/pull/3660
* https://github.com/linkerd/linkerd2-proxy/pull/3671
* https://github.com/linkerd/linkerd2-proxy/pull/3672
* https://github.com/linkerd/linkerd2-proxy/pull/3673
* https://github.com/linkerd/linkerd2-proxy/pull/3676
* https://github.com/hyperium/http-body/pull/147
* https://github.com/linkerd/linkerd2-proxy/pull/3692
* https://github.com/linkerd/linkerd2-proxy/pull/3699
* https://github.com/linkerd/linkerd2-proxy/pull/3700
* https://github.com/linkerd/linkerd2-proxy/pull/3701
* https://github.com/linkerd/linkerd2-proxy/pull/3708
* https://github.com/linkerd/drain-rs/pull/36
* https://github.com/linkerd/linkerd2-proxy/pull/3715
* https://github.com/linkerd/linkerd2-proxy/pull/3717
* https://github.com/eminence/procfs/pull/340

---

squash:

chore(deps): add hyper-util workspace dependency

chore(deps): add http-body-util workspace dependency

chore(deps): upgrade linkerd2-proxy-api

this commit represents main as of linkerd/linkerd2-proxy-api#421.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/box): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(hyper-balance): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/retain): ugrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/stream-timeouts): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/classify): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/upgrade): upgrade to hyper 1.x

NOTE: there is a comment noting that the upgrade middleware does not
expect to be cloneable. it is unfortunately, however, at odds with the
new bounds expected of extensions.

so, `Http11Upgrade` is now Clone'able, but a comment is left in place
noting this weakened invariant.

it's worth investigating how upgrades have changed since, in more
detail, but for the current moment we are interested in being
especially conservative about changing behavior, and focusing on api
changes like `Body::poll_frame(..)`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(metrics): upgrade to hyper 1.x

a brief note; this commit happened to tickle an unfortunate sharp edge
in `BoxBody` and `Full`'s respective constructors. type inference could
not figure out how to construct the body, so we refrain from boxing the
response body now.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/metrics): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/prom): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/insert): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/retry): deprecate linkerd-http-body-compat

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(mock/http-body): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/retry): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(proxy/tap): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(proxy/http): update to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/core): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/test): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/admin): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/outbound): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/inbound): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/integration): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app): upgrade to hyper 1.x

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(transport-header): update generated code

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(spiffe-proto): update generated code

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(opencensus-proto): update generated code

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(opentelemetry-proto): update generated code

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(deny.toml): update cargo-deny directives

this commit updates the contents of `deny.toml`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore: `compile` has been renamed to `compile_protos`

this addresses deprecation warnings, updating calls to a function that
has since been renamed.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(deps): remove `linkerd-http-body-compat` dependencies

this commit removes this crate, which we added to future proof code for
this upgrade, from its dependents.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/body-compat): remove `linkerd-http-body-compat` crate

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(deps): update to drain 0.2.1

see https://github.com/linkerd/drain-rs/pull/41.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-21 12:53:11 -04:00
dependabot[bot] a41642a7fd
build(deps): bump cc from 1.2.16 to 1.2.17 (#3794)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.16 to 1.2.17.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.16...cc-v1.2.17)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-21 07:13:33 -07:00
dependabot[bot] 4de4ab12ce
build(deps): bump backtrace from 0.3.73 to 0.3.74 (#3795)
Bumps [backtrace](https://github.com/rust-lang/backtrace-rs) from 0.3.73 to 0.3.74.
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases)
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.73...0.3.74)

---
updated-dependencies:
- dependency-name: backtrace
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-21 07:13:21 -07:00
dependabot[bot] 97adbd47ae
build(deps): bump Swatinem/rust-cache from 2.7.7 to 2.7.8 (#3780)
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.7 to 2.7.8.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](f0deed1e0e...9d47c6ad4b)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 12:21:17 -07:00
dependabot[bot] 869e420733
build(deps): bump actions/download-artifact from 4.2.0 to 4.2.1 (#3789)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](b14cf4c926...95815c38cf)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 12:20:59 -07:00
dependabot[bot] bd4f430740
build(deps): bump actions/upload-artifact from 4.6.1 to 4.6.2 (#3788)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](4cec3d8aa0...ea165f8d65)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 12:20:44 -07:00
katelyn martin 6a5cce8854
nit: golf `NameRef::try_from_ascii_str()` (#3786)
this golfs down the return expression in
`NameRef::try_from_ascii_str()`.

rather than binding our `s` to a temporary variable, in order to return
a `Self(s)` result, we can take the same result and use `Result::map` to
convert a `Result<&'a str, InvalidName>` to a
`Result<NameRef<'a>, InvalidName>`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-20 12:12:22 -07:00
dependabot[bot] acbea26364
build(deps): bump tj-actions/changed-files (#3790)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 0b975f61488402a699abcebd6a1e25924cf85218 to 6482371e862961013f9584015cf362c4f664b20c.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](0b975f6148...6482371e86)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 11:07:47 -04:00
dependabot[bot] 7f5c42a2b2
build(deps): bump loom from 0.7.1 to 0.7.2 (#3791)
Bumps [loom](https://github.com/tokio-rs/loom) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/tokio-rs/loom/releases)
- [Changelog](https://github.com/tokio-rs/loom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/loom/commits)

---
updated-dependencies:
- dependency-name: loom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 11:07:25 -04:00
dependabot[bot] 7caef34cda
build(deps): bump tempfile from 3.19.0 to 3.19.1 (#3792)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.19.0 to 3.19.1.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.19.0...v3.19.1)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 11:07:11 -04:00
katelyn martin 03e9adb489
chore(dns): upgrade to `hickory-resolver` v0.25 (#3787)
* build(deps): bump the hickory group with 2 updates

Bumps the hickory group with 2 updates: [hickory-resolver](https://github.com/hickory-dns/hickory-dns) and [hickory-proto](https://github.com/hickory-dns/hickory-dns).


Updates `hickory-resolver` from 0.24.4 to 0.25.1
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/OLD-CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.4...v0.25.1)

Updates `hickory-proto` from 0.24.4 to 0.25.1
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/OLD-CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.4...v0.25.1)

---
updated-dependencies:
- dependency-name: hickory-resolver
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: hickory
- dependency-name: hickory-proto
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: hickory
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(dns): address breaking changes in `hickory-resolver`

see also #3782.

this commit addresses breaking changes in the v0.25.0 release of
`hickory-resolver`, used by our `linkerd-dns` crate to handle DNS
resolution.

see the release notes, here:
<https://github.com/hickory-dns/hickory-dns/releases/tag/v0.25.0>

> 0.25.0 represents a large release for the Hickory DNS project. Over 14
> months since 0.24.0, we've [..] addressed a number of findings from our
> first security audit.

changes that are relevant to us include:

> * Support for TLS using native-tls or OpenSSL has been removed. We now
>   only provide first-party support for rustls (0.23, for DNS over TLS,
>   HTTP/2, QUIC and HTTP/3). We support ring or aws-lc-rs for
>   cryptographic operations both for DNSSEC and TLS. The
>   dns-over-rustls,dns-over-native-tls, dns-over-openssl,
>   dns-over-https-rustls, dns-over-https, dns-over-quic and dns-over-h3
>   features have been removed in favor of a set of
>   {tls,https,quic,h3}-{aws-lc-rs,ring} features across our library
>   crates.
>
> * The synchronous API in the resolver and client crates, which
>   previously provided a thin partial wrapper over the asynchronous
>   API, has been removed. Downstream users will have to migrate to the
>   asynchronous API.
>
> * Error types are now exposed directly in the crate roots.

this commit updates references to the
`hickory_resolver::error::ResolveError` error with
`hickory_resolver::ResolveError` now that the errors submodule is
private. (hickory-dns/hickory-dns#2530)

this commit replaces references to
`hickory_resolver::TokioAsyncResolver` with its new name,
`hickory_resolver::TokioResolver`. (hickory-dns/hickory-dns#2521)

this commit inspects "no records found" errors according to the new api.
this particular change isn't especially documented, explicitly, but
occurred in hickory-dns/hickory-dns#2094. see in particular, in that
respect, corresponding changes in the upstream repo's own code. for
example: https://github.com/hickory-dns/hickory-dns/pull/2094/files#diff-330847b46040a30d449f85e8a804bea085f0974d3cba80d79d83acc56f33542dL176-R178

```diff
-  match error.kind() {
-       ResolveErrorKind::NoRecordsFound { query, soa, .. } => {
+   match error.proto().map(ProtoError::kind) {
+       Some(ProtoErrorKind::NoRecordsFound { query, soa, .. }) => {
```

there is a small pull request being proposed upstream to introduce a
`Builder::with_options()` method, which would make our construction of a
dns resolver marginally more idiomatic. this however, is not a blocker,
by any means.

X-Ref: hickory-dns/hickory-dns#2521
X-Ref: hickory-dns/hickory-dns#2830
X-Ref: hickory-dns/hickory-dns#2094
X-Ref: hickory-dns/hickory-dns#2877
Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 22:00:17 -04:00
dependabot[bot] 924403f62c
build(deps): bump actions/download-artifact from 4.1.9 to 4.2.0 (#3781)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.9 to 4.2.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](cc20338598...b14cf4c926)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 11:37:37 -04:00
dependabot[bot] 949cd5625c
build(deps): bump prettyplease from 0.2.30 to 0.2.31 (#3784)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.30 to 0.2.31.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.30...0.2.31)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 11:30:01 -04:00
dependabot[bot] a16235b937
build(deps): bump tokio from 1.43.0 to 1.44.1 (#3783)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.43.0 to 1.44.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.43.0...tokio-1.44.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 11:29:46 -04:00
Zahari Dichev a961efc883
chore(ci): add windows release target to relase matrix (#3771)
This PR adds os param to our package job in the release workflow.
This allows us to build and release Windows artifacts.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2025-03-18 15:45:54 -07:00
katelyn martin 04d86a0375
refactor(http/upgrade): remove `HttpConnect` extension (#3779)
this branch is motivated by [review feedback](https://github.com/linkerd/linkerd2-proxy/pull/3504#discussion_r1999706761) from #3504. see
linkerd/linkerd2#8733 for more information on upgrading `hyper`. there,
we asked:

> I wonder if we should be a little more defensive about cloning [`HttpConnect`]. What does cloning it mean? When handling a CONNECT request, we can't clone the request, really. (Technically, we can't clone the body, but practically, it means we can't clone the request). Can we easily track whether this was accidentally cloned (i.e. with a custom Clone impl or Arc or some such) and validate at runtime (i.e., in proxy::http::h1) that everything is copacetic?

`linkerd-http-upgrade` provides a `HttpConnect` type that is intended
for use as a response extension. this commit performs a refactor,
removing this type.

we use this extension in a single piece of tower middleware. typically,
these sorts of extensions are intended for e.g. passing state between
distinct layers of tower middleware, or otherwise facilitating
extensions to the HTTP family of protocols.

this extension is only constructed and subsequently referenced within a
single file, in the `linkerd_proxy_http::http::h1::Client`. we can
perform the same task by using the `is_http_connect` boolean we use to
conditionally insert this extension.

then, this branch removes a helper function for a computation whose
amortization is no longer as helpful. now that we are passing
`is_http_connect` down into this function, we are no longer inspecting
the response's extensions. because of that, the only work to do is to
check the status code, which is a very cheap comparison.

this also restates an `if version != HTTP_11 { .. }` conditional block as
a match statement. this is a code motion change, none of the inner blocks
are changed.

reviewers are encouraged to examine this branch commit-by-commit; because
of the sensitivity of this change, this refactor is performed in small,
methodical changes.

for posterity, i've run the linkerd/linkerd2 test suite against this branch, as of
57dd7f4a60.

---

* refactor(http/upgrade): remove `HttpConnect` extension

`linkerd-http-upgrade` provides a `HttpConnect` type that is intended
for use as a response extension. this commit performs a refactor,
removing this type.

we use this extension in a single piece of tower middleware. typically,
these sorts of extensions are intended for e.g. passing state between
distinct layers of tower middleware, or otherwise facilitating
extensions to the HTTP family of protocols.

this extension is only constructed and subsequently referenced within a
single file, in the `linkerd_proxy_http::http::h1::Client`. we can
perform the same task by using the `is_http_connect` boolean we use to
conditionally insert this extension.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): fold helper function

this removes a helper function for a computation whose amortization is
no longer as helpful.

now that we are passing `is_http_connect` down into this function, we
are no longer inspecting the response's extensions. because of that, the
only work to do is to check the status code, which is a very cheap
comparison.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): match on response status

this commit refactors a sequence of conditional blocks in a helper
function used to identity HTTP/1.1 upgrades.

this commit replaces this sequence of conditional blocks with a match
statement.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(proxy/http): rename `res` to `rsp`

we follow a convention where we tend to name responses `rsp`, not `res`
or `resp`. this commit applies that convention to this helper function.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(proxy/http): import `Version`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): match on http version

this restates an `if version != HTTP_11 { .. }` conditional block as a
match statement.

this is a code motion change, none of the inner blocks are changed.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): add comments on http/1.1

this commit adds a brief comment noting that upgrades are a concept
specific to http/1.1.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-18 18:42:01 -04:00
dependabot[bot] 13478ae70a
build(deps): bump tj-actions/changed-files (#3777)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 9200e69727eb73eb060652b19946b8a2fdfb654b to 0b975f61488402a699abcebd6a1e25924cf85218.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](9200e69727...0b975f6148)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 12:54:48 -07:00
Zahari Dichev 61588895f7
chore(just): add .exe extension to windows binaries (#3769)
Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2025-03-18 12:34:09 -07:00
dependabot[bot] 912bacb7c5
build(deps): bump itoa from 1.0.14 to 1.0.15 (#3773)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.14 to 1.0.15.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.14...1.0.15)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 11:00:53 -04:00
dependabot[bot] 5da8af300e
build(deps): bump time from 0.3.39 to 0.3.40 (#3774)
Bumps [time](https://github.com/time-rs/time) from 0.3.39 to 0.3.40.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.39...v0.3.40)

---
updated-dependencies:
- dependency-name: time
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 11:00:43 -04:00
dependabot[bot] 487377c888
build(deps): bump widestring from 1.1.0 to 1.2.0 (#3775)
Bumps [widestring](https://github.com/starkat99/widestring-rs) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/starkat99/widestring-rs/releases)
- [Changelog](https://github.com/starkat99/widestring-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/starkat99/widestring-rs/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: widestring
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 11:00:29 -04:00
dependabot[bot] c83a2a1ac6
build(deps): bump aligned-vec from 0.6.2 to 0.6.4 (#3776)
Bumps [aligned-vec](https://github.com/sarah-ek/aligned-vec) from 0.6.2 to 0.6.4.
- [Commits](https://github.com/sarah-ek/aligned-vec/compare/v0.6.2...v0.6.4)

---
updated-dependencies:
- dependency-name: aligned-vec
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 10:59:25 -04:00
dependabot[bot] 396cfcec2f
build(deps): bump rustls from 0.23.24 to 0.23.25 in the rustls group (#3772)
Bumps the rustls group with 1 update: [rustls](https://github.com/rustls/rustls).


Updates `rustls` from 0.23.24 to 0.23.25
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.24...v/0.23.25)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rustls
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 10:58:33 -04:00
Scott Fleener 65db3dd927
feat(policy): Allow outbound hostname metrics (#3770)
Outbound hostname metrics were recently disabled. This conditionally re-enables those through a `LINKERD2_PROXY_OUTBOUND_METRICS_HOSTNAME_LABELS` env var, wired through the policy/routing config with the option of individual policies and routes to set this separately from the global config.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-03-18 13:27:54 +00:00
dependabot[bot] 123d7a344e
build(deps): bump async-trait from 0.1.87 to 0.1.88 (#3764)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.87 to 0.1.88.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.87...0.1.88)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 10:15:41 -04:00
dependabot[bot] 594f013902
build(deps): bump asn1-rs from 0.7.0 to 0.7.1 (#3765)
Bumps [asn1-rs](https://github.com/rusticata/asn1-rs) from 0.7.0 to 0.7.1.
- [Release notes](https://github.com/rusticata/asn1-rs/releases)
- [Changelog](https://github.com/rusticata/asn1-rs/blob/asn1-rs-0.7.1/CHANGELOG.md)
- [Commits](https://github.com/rusticata/asn1-rs/compare/asn1-rs-0.7.0...asn1-rs-0.7.1)

---
updated-dependencies:
- dependency-name: asn1-rs
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 10:15:17 -04:00
dependabot[bot] d7f961750f
build(deps): bump libc from 0.2.170 to 0.2.171 (#3766)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.170 to 0.2.171.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.171/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.170...0.2.171)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 10:14:38 -04:00
dependabot[bot] 2c2fc8b0d9
build(deps): bump uuid from 1.15.1 to 1.16.0 (#3767)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.15.1 to 1.16.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.15.1...v1.16.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 10:14:12 -04:00
dependabot[bot] e746454f50
build(deps): bump the rustls group across 1 directory with 4 updates (#3768)
Bumps the rustls group with 4 updates in the / directory: [tokio-rustls](https://github.com/rustls/tokio-rustls), [ring](https://github.com/briansmith/ring), [rustls-webpki](https://github.com/rustls/webpki) and [rustls](https://github.com/rustls/rustls).


Updates `tokio-rustls` from 0.26.1 to 0.26.2
- [Release notes](https://github.com/rustls/tokio-rustls/releases)
- [Commits](https://github.com/rustls/tokio-rustls/compare/v/0.26.1...v/0.26.2)

Updates `ring` from 0.17.13 to 0.17.14
- [Changelog](https://github.com/briansmith/ring/blob/main/RELEASES.md)
- [Commits](https://github.com/briansmith/ring/commits)

Updates `rustls-webpki` from 0.102.8 to 0.103.0
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.102.8...v/0.103.0)

Updates `rustls` from 0.23.23 to 0.23.24
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.23...v/0.23.24)

---
updated-dependencies:
- dependency-name: tokio-rustls
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rustls
- dependency-name: ring
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rustls
- dependency-name: rustls-webpki
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rustls
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: rustls
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 10:13:48 -04:00
katelyn martin 23784c01a3
chore: use workspace-level package metadata (#3761)
this commit adds a `[workspace.package]` table at the root of the cargo
workspace. constituent manifests are updated to use the workspace-level
metadata.

this is generally a superficial chore, but has a pleasant future upside:
when new rust editions are released (e.g. 2024), we will only need to
update the edition specified at the root of the workspace.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-15 12:54:50 -04:00
dependabot[bot] c5215ad21e
build(deps): bump tj-actions/changed-files from 45.0.7 to 45.0.8 (#3760)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.7 to 45.0.8.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](dcc7a0cba8...9200e69727)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-14 11:50:48 -04:00
dependabot[bot] 2ab03e2b95
build(deps): bump tempfile from 3.17.1 to 3.19.0 (#3759)
* build(deps): bump tempfile from 3.17.1 to 3.19.0

Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.17.1 to 3.19.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.17.1...v3.19.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deny.toml): skip rustix v0.38

this commit adds mention of rustix, whose 1.0 release is still
propagating through the ecosystem, to the deny.toml.

nb: this also removes the bitflags directive, which no longer included a
duplicate version.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: katelyn martin <kate@buoyant.io>
2025-03-14 11:38:13 -04:00
dependabot[bot] 56faf968db
build(deps): bump once_cell from 1.21.0 to 1.21.1 (#3756)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.21.0 to 1.21.1.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.21.0...v1.21.1)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-14 11:31:41 -04:00
dependabot[bot] a616e96779
build(deps): bump aligned-vec from 0.6.1 to 0.6.2 (#3757)
Bumps [aligned-vec](https://github.com/sarah-ek/aligned-vec) from 0.6.1 to 0.6.2.
- [Commits](https://github.com/sarah-ek/aligned-vec/commits/v0.6.2)

---
updated-dependencies:
- dependency-name: aligned-vec
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-14 11:31:15 -04:00
dependabot[bot] 5a373bc569
build(deps): bump tokio-util from 0.7.13 to 0.7.14 (#3758)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.13 to 0.7.14.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.13...tokio-util-0.7.14)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-14 11:30:08 -04:00
katelyn martin 11e990ee16
refactor(stack/loadshed): unit test instruments spawned tasks (#3755)
this commit performs a small refactor to one of the unit tests in
`linkerd-stack`'s load-shedding middleware.

this adds a span to the worker tasks spawned in this test, so that
tracing logs can be associated with particular oneshot services.

see #3744 for more information on upgrading our tower dependency. this
is cherry-picked from investigations on that branch related to breaking
changes in 0.5 related to the `Buffer` middleware.

after this change, logs now look like this:

```
; RUST_LOG="trace" cargo test -p linkerd-stack buffer_load_shed -- --nocapture

running 1 test
[     0.002770s] TRACE worker{id=oneshot1}: tower::buffer::service: sending request to buffer worker
[     0.002809s] TRACE worker{id=oneshot2}: tower::buffer::service: sending request to buffer worker
[     0.002823s] TRACE worker{id=oneshot3}: tower::buffer::service: sending request to buffer worker
[     0.002843s] DEBUG worker{id=oneshot4}: linkerd_stack::loadshed: Service has become unavailable
[     0.002851s] DEBUG worker{id=oneshot4}: linkerd_stack::loadshed: Service shedding load
[     0.002878s] TRACE tower::buffer::worker: worker polling for next message
[     0.002885s] TRACE tower::buffer::worker: processing new request
[     0.002892s] TRACE worker{id=oneshot1}: tower::buffer::worker: resumed=false worker received request; waiting for service readiness
[     0.002901s] DEBUG worker{id=oneshot1}: tower::buffer::worker: service.ready=true processing request
[     0.002914s] TRACE worker{id=oneshot1}: tower::buffer::worker: returning response future
[     0.002926s] TRACE tower::buffer::worker: worker polling for next message
[     0.002931s] TRACE tower::buffer::worker: processing new request
[     0.002935s] TRACE worker{id=oneshot2}: tower::buffer::worker: resumed=false worker received request; waiting for service readiness
[     0.002946s] TRACE worker{id=oneshot2}: tower::buffer::worker: service.ready=false delay
[     0.002983s] TRACE worker{id=oneshot5}: tower::buffer::service: sending request to buffer worker
[     0.003001s] DEBUG worker{id=oneshot6}: linkerd_stack::loadshed: Service has become unavailable
[     0.003007s] DEBUG worker{id=oneshot6}: linkerd_stack::loadshed: Service shedding load
[     0.003017s] DEBUG worker{id=oneshot7}: linkerd_stack::loadshed: Service has become unavailable
[     0.003024s] DEBUG worker{id=oneshot7}: linkerd_stack::loadshed: Service shedding load
[     0.003035s] TRACE tower::buffer::worker: worker polling for next message
[     0.003041s] TRACE tower::buffer::worker: resuming buffered request
[     0.003045s] TRACE worker{id=oneshot2}: tower::buffer::worker: resumed=true worker received request; waiting for service readiness
[     0.003052s] DEBUG worker{id=oneshot2}: tower::buffer::worker: service.ready=true processing request
[     0.003060s] TRACE worker{id=oneshot2}: tower::buffer::worker: returning response future
[     0.003068s] TRACE tower::buffer::worker: worker polling for next message
[     0.003073s] TRACE tower::buffer::worker: processing new request
[     0.003077s] TRACE worker{id=oneshot3}: tower::buffer::worker: resumed=false worker received request; waiting for service readiness
[     0.003084s] DEBUG worker{id=oneshot3}: tower::buffer::worker: service.ready=true processing request
[     0.003091s] TRACE worker{id=oneshot3}: tower::buffer::worker: returning response future
[     0.003099s] TRACE tower::buffer::worker: worker polling for next message
[     0.003103s] TRACE tower::buffer::worker: processing new request
[     0.003107s] TRACE worker{id=oneshot5}: tower::buffer::worker: resumed=false worker received request; waiting for service readiness
[     0.003114s] DEBUG worker{id=oneshot5}: tower::buffer::worker: service.ready=true processing request
[     0.003121s] TRACE worker{id=oneshot5}: tower::buffer::worker: returning response future
[     0.003129s] TRACE tower::buffer::worker: worker polling for next message
test loadshed::tests::buffer_load_shed ... ok
```

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-13 13:26:21 -04:00
dependabot[bot] 5fa3745b57
build(deps): bump resolv-conf from 0.7.0 to 0.7.1 (#3751)
Bumps [resolv-conf](https://github.com/hickory-dns/resolv-conf) from 0.7.0 to 0.7.1.
- [Commits](https://github.com/hickory-dns/resolv-conf/commits)

---
updated-dependencies:
- dependency-name: resolv-conf
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-13 09:43:41 -04:00
dependabot[bot] e67ac67288
build(deps): bump http from 0.2.11 to 0.2.12 (#3754)
Bumps [http](https://github.com/hyperium/http) from 0.2.11 to 0.2.12.
- [Release notes](https://github.com/hyperium/http/releases)
- [Changelog](https://github.com/hyperium/http/blob/v0.2.12/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http/compare/v0.2.11...v0.2.12)

---
updated-dependencies:
- dependency-name: http
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-13 09:42:47 -04:00
dependabot[bot] a8390b2ee6
build(deps): bump syn from 2.0.99 to 2.0.100 (#3752)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.99 to 2.0.100.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.99...2.0.100)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-13 09:42:08 -04:00
katelyn martin c35cf270cf
chore(deps): address RUSTSEC-2025-0014 (#3750)
this commit replaces `humantime`, which is no longer maintained, with
`jiff`.

see this error when `main` today is built:

```
error[unmaintained]: humantime is unmaintained
   ┌─ /linkerd/linkerd2-proxy/Cargo.lock:78:1
   │
78 │ humantime 2.1.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unmaintained advisory detected
   │
   ├ ID: RUSTSEC-2025-0014
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2025-0014
   ├ Latest `humantime` crates.io release is four years old and GitHub repository has
     not seen commits in four years. Question about maintenance status has not gotten
     any reaction from maintainer: https://github.com/tailhook/humantime/issues/31

     ## Possible alternatives

      * [jiff](https://crates.io/crates/jiff) provides same kind of functionality
   ├ Announcement: https://github.com/tailhook/humantime/issues/31
   ├ Solution: No safe upgrade is available!
   ├ humantime v2.1.0
     └── linkerd-http-access-log v0.1.0
         └── linkerd-app-inbound v0.1.0
             ├── linkerd-app v0.1.0
             │   ├── linkerd-app-integration v0.1.0
             │   └── linkerd2-proxy v0.1.0
             ├── linkerd-app-admin v0.1.0
             │   ├── linkerd-app v0.1.0 (*)
             │   └── (dev) linkerd-app-integration v0.1.0 (*)
             └── linkerd-app-gateway v0.1.0
                 └── linkerd-app v0.1.0 (*)

advisories FAILED, bans ok, licenses ok, sources ok
```

see:
  * https://github.com/rustsec/advisory-db/pull/2249.
  * https://github.com/tailhook/humantime/issues/31.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-12 16:05:03 -07:00
dependabot[bot] d3b4ad6362
build(deps): bump dtoa from 1.0.9 to 1.0.10 (#3749)
Bumps [dtoa](https://github.com/dtolnay/dtoa) from 1.0.9 to 1.0.10.
- [Release notes](https://github.com/dtolnay/dtoa/releases)
- [Commits](https://github.com/dtolnay/dtoa/compare/1.0.9...1.0.10)

---
updated-dependencies:
- dependency-name: dtoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 09:58:59 -04:00
dependabot[bot] 332e29af5c
build(deps): bump prettyplease from 0.2.29 to 0.2.30 (#3747)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.29 to 0.2.30.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.29...0.2.30)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 09:58:28 -04:00
dependabot[bot] 6d7b165727
build(deps): bump once_cell from 1.20.3 to 1.21.0 (#3748)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.20.3 to 1.21.0.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.3...v1.21.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 09:58:02 -04:00
dependabot[bot] df651278f2
build(deps): bump quote from 1.0.39 to 1.0.40 (#3746)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.39 to 1.0.40.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.39...1.0.40)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 09:57:24 -04:00
Oliver Gould 16b2ff7232
chore(cargo): make prometheus-client a workspace dependency (#3743) 2025-03-11 22:38:39 +00:00
Oliver Gould 46babf0849
chore(metrics): use kubert-prometheus-process metrics (#3742)
kubert-prometheus-process is a new crate that includes all of Linkerd's system
metrics and more. This also helps avoid annoying compilation build issues on
non-Linux systems.
2025-03-11 18:37:17 -04:00
katelyn martin 575ba0008b
chore(deps): use `prometheus-client` v0.23 (#3732)
this updates the prometheus client dependency.

additionally, this commit updates the `kubert-prometheus-tokio`
dependency, so that we agree on the client library in use.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-11 21:42:13 +00:00
Oliver Gould 4c79bdf730
chore(metrics): clean up feature flagging (#3741)
linkerd-metrics exposes a 'stack' feature but uses a 'linkerd-stack' feature
internally. This change cleans this up.
2025-03-11 15:46:39 -04:00
Oliver Gould 87d6d38510
chore(app-core): remove unused linkerd-system dep (#3740) 2025-03-11 19:43:27 +00:00
Oliver Gould ed42c2ad3a
feat(runtime): support CORES_MIN, CORES_MAX, and CORES_MAX_RATIO (#3731)
When the proxy boots up, it needs to select a number of I/O worker threads to
allocate to the runtime. This change adds a new environment variable that allows
this value to scale based on the number of CPUs available on on the host.

A CORES_MAX_RATIO value of 1.0 will allocate one worker thread per CPU core. A
lesser value will allocate fewer worker threads. Values are rounded to the
nearest whole number.

The CORES_MIN value sets a lower bound on the number of worker threads to use.
The CORES_MAX value sets an upper bound.
2025-03-11 18:53:30 +00:00
katelyn martin 13a79167d7
refactor(stack/switch_ready): use `Either<A, B>` future (#3739)
this commit makes a noöp change to the `SwitchReady<A, B>` machinery
provided by our `linkerd-stack` library.

this commit is a small refactor that is intended to pave the way for an
impending upgrade to tower v0.5, which notably includes breaking changes
to the `tower::util::Either<A, B>` service.

as of tower v0.5, by way of https://github.com/tower-rs/tower/pull/637,
the `Either<A, B>` service is no longer itself a `Future`. so, we can
instead use the future provided by `futures`.

for more information, see:
* https://github.com/linkerd/linkerd2/issues/8733
* https://github.com/linkerd/linkerd2-proxy/pull/3504
* https://github.com/linkerd/linkerd2-proxy/pull/3504/files#r1988082658
* https://github.com/tower-rs/tower/pull/637

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-11 14:50:51 -04:00
Oliver Gould 1c15dd087d
chore(linkerd2-proxy): always enable multicore features (#3738)
The proxy predates the multi-threaded tokio runtime. When switching to it, we
added a 'multicore' feature to adopt it incrementally. This has been the only
supported configuration for many years now.

This change removes the needless feature flag to simplify the runtime
configuration.
2025-03-11 17:08:26 +00:00
Oliver Gould a683ff5c67
feat(outbound): instrument per-parent connection protocol counts (#3733)
The outbound proxy makes protocol decisions based on the discovery response,
keyed on a "parent" reference.

This change adds a `protocol::metrics` middleware that records connection counts
by parent reference.
2025-03-11 09:49:45 -07:00
dependabot[bot] ec168c3977
build(deps): bump tinyvec from 1.8.1 to 1.9.0 (#3737)
Bumps [tinyvec](https://github.com/Lokathor/tinyvec) from 1.8.1 to 1.9.0.
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.8.1...v1.9.0)

---
updated-dependencies:
- dependency-name: tinyvec
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-11 07:18:58 -07:00
dependabot[bot] 0dc3c8dde4
build(deps): bump indexmap from 2.7.1 to 2.8.0 (#3736)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.7.1 to 2.8.0.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.7.1...2.8.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-11 07:18:47 -07:00
dependabot[bot] f2bc4cd76d
build(deps): bump bytes from 1.10.0 to 1.10.1 (#3735)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.10.0...v1.10.1)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-11 07:18:36 -07:00
dependabot[bot] 72ee0b31d2
build(deps): bump quote from 1.0.38 to 1.0.39 (#3734)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.38 to 1.0.39.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.38...1.0.39)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-11 07:18:23 -07:00
Oliver Gould 64c608ca8d
feat(inbound): record metrics about transport header usage (#3723)
Inbound proxies may receive meshed traffic directly on the proxy's inbound port
with a transport header, informing inbound routing behavior.

This change updates the inbound proxy to record metrics about the usage of
transport headers, including the total number of requests with a transport
header by session protocol and target port.
2025-03-10 14:07:38 -07:00
Oliver Gould 25bc9730ee
feat: instrument HTTP protocol detection metrics (#3722)
This change updates the DetectHttp middleware to record metrics about HTTP
protocol detection. Specfically, it records the the counts of results and a very
coarse histogram of the time taken to detect the protocol.

The inbound, outbound, and admin (via inbound) stacks are updated to record
metrics against the main registry.
2025-03-10 11:12:56 -07:00
Oliver Gould e7c2afd5c1
feat(http/detect)!: error when the socket is closed (#3721)
* refactor(http): consolidate HTTP protocol detection

Linkerd's HTTP protocol detection logic is spread across a few crates: the
linkerd-detect crate is generic over the actual protocol detection logic, and
the linkerd-proxy-http crate provides an implementation. There are no other
implemetations of the Detect interface. This leads to gnarly type signatures in
the form `Result<Option<http::Variant>, DetectTimeoutError>`: simultaneously
verbose and not particularly informative (what does the None case mean exactly).

This commit introduces a new crate, `linkerd-http-detect`, consolidating this
logic and removes the prior implementations. The admin, inbound, and outbound
stacks are updated to use these new types. This work is done in anticipation of
introducing metrics that report HTTP detection behavior.

There are no functional changes.

* feat(http/detect)!: error when the socket is closed

When a proxy does protocol detection, the initial read may indicate that the
connection was closed by the client with no data being written to the socket. In
such a case, the proxy continues to process the connection as if may be proxied,
but we expect this to fail immediately. This can lead to unexpected proxy
behavior: for example, inbound proxies may report policy denials.

To address this, this change surfaces an error (as if the read call failed).
This could, theoretically, impact some bizarre clients that initiate half-open
connections. These corner cases can use explicit opaque policies to bypass
detection.
2025-03-10 08:31:17 -07:00
dependabot[bot] 606b51ba32
build(deps): bump thiserror from 2.0.11 to 2.0.12 (#3728)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.11 to 2.0.12.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.11...2.0.12)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-10 08:02:20 -07:00
dependabot[bot] 3a7d207950
build(deps): bump ryu from 1.0.19 to 1.0.20 (#3729)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.19 to 1.0.20.
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.19...1.0.20)

---
updated-dependencies:
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-10 08:01:36 -07:00
dependabot[bot] 77b21876cd
build(deps): bump serde from 1.0.218 to 1.0.219 (#3727)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.218 to 1.0.219.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.218...v1.0.219)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-10 08:01:20 -07:00
dependabot[bot] 5a0fe3d221
build(deps): bump time from 0.3.37 to 0.3.39 (#3726)
Bumps [time](https://github.com/time-rs/time) from 0.3.37 to 0.3.39.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.37...v0.3.39)

---
updated-dependencies:
- dependency-name: time
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-10 08:01:02 -07:00
Oliver Gould fc928b637a
feat(inbound): include srv_port label in server metrics (#3725)
We include a group/version/kind for inbound server resources, but we do not
indicate which specific port the server is applied to. This is important context
to understand the inbound proxy's behavior, especially when using the default
servers.

This change adds a `srv_port` label to inbound server metrics to definitively
and consistently indicate the server port used for inbound policy.
2025-03-09 20:40:22 -04:00
Oliver Gould 9f5a6cce27
fix(inbound): correct error message when transport header is missing (#3724)
The RefusedNoTarget error type is a remnant of an older version of the direct
stack. This commit updates the error message to reflect the current state of the
code: we require ALPN-negotiated transport headers on all direct connections.
2025-03-09 19:46:45 -04:00
Oliver Gould c87d202098
refactor(http): consolidate HTTP protocol detection (#3720)
Linkerd's HTTP protocol detection logic is spread across a few crates: the
linkerd-detect crate is generic over the actual protocol detection logic, and
the linkerd-proxy-http crate provides an implementation. There are no other
implemetations of the Detect interface. This leads to gnarly type signatures in
the form `Result<Option<http::Variant>, DetectTimeoutError>`: simultaneously
verbose and not particularly informative (what does the None case mean exactly).

This commit introduces a new crate, `linkerd-http-detect`, consolidating this
logic and removes the prior implementations. The admin, inbound, and outbound
stacks are updated to use these new types. This work is done in anticipation of
introducing metrics that report HTTP detection behavior.

There are no functional changes.
2025-03-09 08:27:25 -07:00
Oliver Gould 114ee8d878
fix(just): make dev versions semver (#3719)
Our build can occaisionally fail when the sha is not a valid semver label:

    --- stdout
    cargo:rustc-env=GIT_SHA=025979070
    cargo:rustc-env=LINKERD2_PROXY_BUILD_DATE=2025-03-08T16:32:34Z
    --- stderr
    thread 'main' panicked at linkerd/app/core/build.rs:18:17:
    LINKERD2_PROXY_VERSION must be semver: version='0.0.0-dev.025979070'
       error='invalid leading zero in pre-release identifier'

To fix this, the dot is removed so the version string is 0.0.0-dev025979070,
which is valid.
2025-03-08 18:30:06 -05:00
katelyn martin 4f24b84ee0
chore(deps): `tower` is a workspace dependency (#3718)
pr #3715 missed a small handful of cargo dependencies. this commit marks
these so that they also use the workspace-level tower version.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-08 10:17:51 -08:00
katelyn martin 09ecbd79b7
chore(deps): `drain` is a workspace dependency (#3717)
see https://github.com/linkerd/linkerd2/issues/8733 and
https://github.com/linkerd/linkerd2-proxy/pull/3504 for more
information.

see also linkerd/drain-rs#36 for a related pull request that
updated `drain`'s `tower` dependency. see #3715 (2f97549a) for a related
pull request that made `tower` a workspace dependency.

see #3456 (c740b6d8), #3466 (ca50d6bb), #3473 (b87455a9), and #3701
(cf4ef39), for some other previous pr's that moved dependencies to be
managed at the workspace level.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-07 16:34:24 -05:00
katelyn martin 4589be41ee
nit(detect): sort dependencies (#3716)
this is a follow-on to #3715.

this commit sorts the dependencies in this manifest.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-07 13:05:13 -08:00
katelyn martin 2f97549aed
chore(deps): `tower` crates are workspace dependencies (#3715)
* chore(deps): `tower` is a workspace dependency

see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

see https://github.com/linkerd/linkerd2-proxy/pull/3504 as well.

see #3456 (c740b6d8), #3466 (ca50d6bb), #3473 (b87455a9), and #3701
(cf4ef39) for some other previous pr's that moved dependencies to be
managed at the workspace level.

see also https://github.com/linkerd/drain-rs/pull/36 for another related
pull request that relates to our tower dependency.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(deps): `tower-service` is a workspace dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(deps): `tower-test` is a workspace dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-07 14:58:18 -05:00
katelyn martin d2111e59b9
chore(deps): update to ring 0.17.13 (#3713)
https://rustsec.org/advisories/RUSTSEC-2025-0009.html

0.17.11 is vulnerable to RUSTSEC-2025-0009. this commit updates the
`ring` dependency to a patched version.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-07 12:19:13 -05:00
dependabot[bot] 4a2bf8d876
build(deps): bump rustversion from 1.0.19 to 1.0.20 (#3712)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.19 to 1.0.20.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.19...1.0.20)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-07 07:28:18 -08:00
dependabot[bot] bba79fd1dd
build(deps): bump either from 1.14.0 to 1.15.0 (#3711)
Bumps [either](https://github.com/rayon-rs/either) from 1.14.0 to 1.15.0.
- [Commits](https://github.com/rayon-rs/either/compare/1.14.0...1.15.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-07 07:28:04 -08:00
dependabot[bot] c6c369c41f
build(deps): bump semver from 1.0.25 to 1.0.26 (#3710)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.25 to 1.0.26.
- [Commits](https://github.com/dtolnay/semver/compare/1.0.25...1.0.26)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-07 07:27:52 -08:00
dependabot[bot] a1d49e9ee8
build(deps): bump unicode-ident from 1.0.17 to 1.0.18 (#3709)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.17 to 1.0.18.
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.17...1.0.18)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-07 07:27:39 -08:00
katelyn martin 90e005a832
chore(deps): remove unused `opencensus`, `opentelemetry` dependencies (#3708)
noticed while addressing `cargo-deny` errors in #3504. these crates
include a few unused dependencies, which we can remove. while we
are in the neighborhood, we make some subjective tweaks to tidy up
these imports.

---

* chore(opentelemetry): remove unused `http` dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(opentelemetry): tidy imports

this groups imports at the crate level, and directly imports some
imports from their respective crates rather than through an alias of
said crate. a `self` prefix is added to clarify imports from submodules
of this crate.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(opentelemetry): remove unused `tokio-stream` dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(opencensus): remove unused `http` dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(opencensus): use self prefix in import

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-06 14:03:16 -08:00
Scott Fleener 40a622ee48
fix(inbound): instrument http connections in tagged transport stack (#3707)
Currently, TCP metrics are not logged for HTTP requests coming in through the tagged transport header stack.

This adds that instrumentation, like we do for the opaque and gateway stacks already present.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-03-06 20:19:30 +00:00
katelyn martin cf4ef39a89
chore(deps): `prost-build` is a workspace dependency (#3701)
see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

this commit moves `prost-build` so that it is now managed as a workspace
dependency. while only used in tests, these tests can fail if this is
not versioned in lockstep with our other protobuffer dependencies.

see #3456 (c740b6d8), #3466 (ca50d6bb), and especially #3473 (b87455a9)
for some other previous pr's that moved dependencies to be managed at
the workspace level.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-06 08:24:19 -08:00
dependabot[bot] cd34762962
build(deps): bump serde_json from 1.0.139 to 1.0.140 (#3706)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.139 to 1.0.140.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.139...v1.0.140)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-06 05:48:14 -05:00
dependabot[bot] d98cff0b74
build(deps): bump pin-project from 1.1.9 to 1.1.10 (#3705)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.9 to 1.1.10.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.9...v1.1.10)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-06 05:47:41 -05:00
dependabot[bot] 0b4420ec6a
build(deps): bump symbolic-demangle from 12.13.4 to 12.14.1 (#3704)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.13.4 to 12.14.1.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.13.4...12.14.1)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-06 05:46:53 -05:00
dependabot[bot] f1c8eb0487
build(deps): bump httparse from 1.10.0 to 1.10.1 (#3703)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.10.0...v1.10.1)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-06 05:46:10 -05:00
katelyn martin f5b4f6b1c6
refactor(app/integration): remove artificial `Sync` bounds (#3700)
see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

we are in the process of upgrading to hyper 1.x.

in the process of doing so, we will wish to use our friendly `BoxBody`
type, which provides a convenient and reusable interface to abstract
over different artitrary `B`-typed request and response bodies.

unfortunately, by virtue of its definition, it is not a `Sync` type:

```rust
 pub struct BoxBody {
     inner: Pin<Box<dyn Body<Data = Data, Error = Error> + Send + 'static>>,
 }

 #[pin_project]
 pub struct Data {
     #[pin]
     inner: Box<dyn bytes::Buf + Send + 'static>,
 }
```

these are erased `Box<dyn ..>` objects that only ensure `Send`-ness.

rather than changing that, because that is the proper definition of the
type, we should update code in our test client and test server to stop
requesting arbitrary `Sync` bounds.

this commit removes `Sync` bounds from various places that in fact only
need be `Send + 'static`.

this will help facilitate making use of `BoxBody` in #3504.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-04 15:29:03 -08:00
katelyn martin dacf85896e
refactor(app/integration): forward-compatible test code (#3699)
see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

see https://github.com/linkerd/linkerd2-proxy/pull/3559 and
https://github.com/linkerd/linkerd2-proxy/pull/3614 for more information
on the `ForwardCompatibleBody<B>` wrapper.

`telemetry::log_stream::collect_logs` is a function responsible for
digesting a streaming body, and deserializing each chunk into a
`serde_json::Value`, until either (a) a shutdown signal is received, or
(b) the end of the body is reached.

this commit updates test code in `linkerd-app-integration` so that it
interacts with request and response bodies via an adapter that polls for
frames in a manner consistent with the 1.0 api of `http_body`.

this allows us to limit the diff in
https://github.com/linkerd/linkerd2-proxy/pull/3504, which will only
need to remove this adapter once using hyper 1.0.

* https://github.com/linkerd/linkerd2/issues/8733
* https://github.com/linkerd/linkerd2-proxy/pull/3671
* https://github.com/linkerd/linkerd2-proxy/pull/3672
* https://github.com/linkerd/linkerd2-proxy/pull/3673
* https://github.com/linkerd/linkerd2-proxy/pull/3676

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-04 11:37:58 -08:00
katelyn martin d4bfd607c5
refactor(app/integration): remove unused `TcpConn::target_addr()` (#3695)
this method is not used by any test code, nor any other internal code.

this commit removes
`linkerd_app_integration::tcp::TcpConn::target_addr()`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-04 10:06:11 -08:00
katelyn martin 16614ca2d5
refactor(app/integration): remove unused `request_init_method()` (#3698)
`TapEventExt` provides an extension trait interface that we use to
extends `linkerd_proxy_api::tap::TapEvent` with additional interfaces
for use in integration tests.

this commit removes `request_init_path()`. this method was originally
added in 3ac6b72c4 (#154), but was never actually implemented and will
only ever panic when invoked. thus, it can be removed.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-04 16:03:53 +00:00
katelyn martin 8117c51a4a
nit(app/integration): tidy `tcp` imports (#3696)
we follow a convention of grouping imported symbols at the crate-level.

this commit tidies up imports in `linkerd_app_integration::tcp` to
follow this convention.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-04 07:59:24 -08:00
katelyn martin 799583af90
refactor(app/integration): call `tcp::client()` directly (#3694)
`linkerd_app_integration::tcp` provides a `TcpClient` type that is
distinct from the primary `linkerd_app_integration::client::Client` type
broadly used in integration tests.

this commit makes a small change to reduce indirection, and clarify that
this is constructing a different client implementation from a different
submodule.

this removes `linkerd_app_integration::client::tcp()`, and updates test
code to call the `tcp::client()` function that this is masking.

this is the client-side equivalent to #3688 (a10d1d7e).

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-04 07:59:13 -08:00
katelyn martin 4e3119cd45
refactor(app/integration): clean up `Server` constructors (#3693)
this commit removes some misdirection from the various constructors for
our test server.

currently, we expose a family of constructor functions `server::new()`,
`server::http1()`, ..., and so forth.

each of these invoke a private `server::Server::http1()`,
`server::Server::http2()`, `server::Server::http2_tls()`, ...,
counterpart, which then delegates down once more to another private
constructor `server::Server::new()`.

this is all a bit roundabout, particularly because these private
constructors are not used by any other internal code in the `server`
submodule.

this commit removes these inherent `Server` constructors, since they are
private and not used by any test code. each free-standing constructor
function is altered to instead directly construct a `Server`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-04 00:42:01 +00:00
katelyn martin ce7e6645e3
refactor(app/integration): remove `Request`, `Response` aliases (#3692)
* refactor(app/integration): remove `Request`, `Response` aliases

see https://github.com/linkerd/linkerd2/issues/8733.

this commit removes two type aliases from our test server
implementation. these are each tied to the defunct `hyper::Body` type.

since much of this code was originally written (between 2017 and 2020)
we've since developed some patterns / idioms elsewhere for dealing with
request and response bodies.

to help set the stage for tweaks to which interfaces need
`hyper::body::Incoming`, which types work with our general default of
`BoxBody`, and which can be generic across arbitrary `B`-typed bodies,
we remove these aliases and provide the body parameter to `Request` and
`Response`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/integration): remove `Request`, `Response` aliases

see https://github.com/linkerd/linkerd2/issues/8733.

this commit removes two type aliases from our test client
implementation. these are each tied to the defunct `hyper::Body` type.

since much of this code was originally written (between 2017 and 2020)
we've since developed some patterns / idioms elsewhere for dealing with
request and response bodies.

to help set the stage for tweaks to which interfaces need
`hyper::body::Incoming`, which types work with our general default of
`BoxBody`, and which can be generic across arbitrary `B`-typed bodies,
we remove these aliases and provide the body parameter to `Request` and
`Response`.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 23:46:09 +00:00
katelyn martin 84c3b8491e
nit(app/integration): add/remove whitespace for consistency (#3689)
* nit(app/integration): add whitespace for consistency

we follow a convention of an empty line between functions.

this commit adds an empty line.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(app/integration): remove whitespace for consistency

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(app/integration): add whitespace for consistency

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 18:39:55 -05:00
katelyn martin abc8364f39
nit(app/integration): use `OK`, `NOT_FOUND` constants (#3691)
these constants exist, and are generally considered a best practice for
these situations.

this commit replaces numeric literals with named constants.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 18:39:03 -05:00
katelyn martin f4eac760f0
refactor(app/integration): use `linker_app_core::Error` (#3690)
the test server implementation in `linkerd_app_integration` defines an
`BoxError` alias. we have a boxed error type in
`linkerd_app_core::Error` that achieves the same purpose, that we can
use instead.

this commit replaces this type alias with a reëxport of
`linkerd_app_core::Error`.

see also, #3685, which removed another similar alias.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 18:38:48 -05:00
katelyn martin a10d1d7ef8
refactor(app/integration): call `tcp::server()` directly (#3688)
`linkerd_app_integration::tcp` provides a `TcpServer` type that is
distinct from the primary `linkerd_app_integration::server::Server` type
broadly used in integration tests.

this commit makes a small change to reduce indirection, and clarify that
this is constructing a different server implementation from a
different submodule.

this removes `linkerd_app_integration::server::tcp()`, and updates test
code to call the `tcp::server()` function that this is masking.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 16:20:45 -05:00
katelyn martin cd3a200a5e
refactor(app/integration): remove inert `NewService<T>` (#3687)
elsewhere in our codebase, we follow a pattern that can be called a
"new service". this is a `Service<T>` whose response `S` is itself
a `Service<U>`.

new services are often useful for dealing with particular connection
semantics, and provide us a way to model a connection that services many
requests.

our test server code makes use of a `Svc`, which wraps a reference to a
map of uri's and routes. there is an associated `NewSvc` type that does
not provide any material benefit. this `NewSvc` type is a `Service<()>`
that never exerts backpressure, nor performs any action besides
`Arc::clone`ing the map of routes.

this commit golfs down `linkerd_app_integration::server::Server`, by
directly cloning the routes into a `Svc(_)`, without the need for
polling a future or handling an (impossible) error.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 16:20:29 -05:00
katelyn martin be868306f5
refactor(app/integration): inline `Running` future (#3686)
`linkerd_app_integration::running()` is a public function that is not
used by any external callers. this function is used in one place, when
setting up test client used for integration tests.

this commit inlines this logic, and moves the associated `Running` type
alias down alongside the `Run` enum.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 14:22:16 -05:00
Oliver Gould 93aecec642
chore(just): add windows os target (#3683)
To support cross-compilation to windows, this change adds an 'os' param to the
justfile, used in the release to cross-build to x86_64-pc-windows-gnu.

This will produce a binary named 'linkerd2-proxy-v2.999.9-x86_64.exe'.

The proxy does not yet compile on windows, so this is a placeholder for now.
2025-03-03 19:07:05 +00:00
katelyn martin 7aa7f069ea
refactor(app/integration): use `linkerd_app_core::Error` (#3685)
`linkerd_app_integration` defines an `Error` alias.

we have a boxed error type in `linkerd_app_core::Error` that achieves
the same purpose, that we can use instead.

this commit replaces this type alias with a reëxport of
`linkerd_app_core::Error`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 14:05:34 -05:00
Oliver Gould 3afd59cac2
fix(ci): remove EmbarkStudios/cargo-deny-action (#3684)
cargo-deny-action is broken: EmbarkStudios/cargo-deny-action#91

This change replaces the action with a manual invocation.
2025-03-03 17:57:56 +00:00
katelyn martin 672727effa
refactor(app/integration): clarify `<SyncSvc as Service<T>>::call()` (#3677)
* refactor(app/integration): use `Result::expect()`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/integration): clarify `<SyncSvc as Service<T>>::call()`

this commit makes some cosmetic changes to
`linkerd_app_integration::tap::SyncSvc`'s implementation of
`tower::Service<T>`.

documentation comments are added to clarify something that makes this
service slightly interesting, and notably different from code suitable
for use in production / real-world contexts.

this service wraps an underlying `Client`, and provides a service
implementation that deals with arbitrary `B`-typed request bodies.
this provides a flexible adapter that simplifies test code.

this service, however, *blocks* the calling thread (off-task) to collect
the body into a cheaply-cloneable `Bytes`.

this commit outlines that logic into an associated function and adds
additional documentation noting this property, and the basis for this
assumption.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/integration): loosen `SyncSvc` bounds

the bounds placed upon the inbound request's `B`-typed body are overly
restrictive for `<SyncSvc as Service<T>>`. this commit removes some
superfluous bounds, so that only those that are currently needed by this
code are now required.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-03-03 10:57:49 -05:00
dependabot[bot] 7e52a0acc6
build(deps): bump syn from 2.0.98 to 2.0.99 (#3679)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.98 to 2.0.99.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.98...2.0.99)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-03 09:04:56 -05:00
dependabot[bot] ae60a095bb
build(deps): bump async-trait from 0.1.86 to 0.1.87 (#3680)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.86 to 0.1.87.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.86...0.1.87)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-03 09:04:49 -05:00
dependabot[bot] b230f7b792
build(deps): bump proc-macro2 from 1.0.93 to 1.0.94 (#3681)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.93 to 1.0.94.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.93...1.0.94)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-03 09:04:41 -05:00
dependabot[bot] 7038e314bb
build(deps): bump anyhow from 1.0.96 to 1.0.97 (#3682)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.96 to 1.0.97.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.96...1.0.97)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-03 09:04:33 -05:00
katelyn martin 6b4ca820c7
refactor(app/outbound): forward-compatible test code (#3676)
see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

see https://github.com/linkerd/linkerd2-proxy/pull/3559 and
https://github.com/linkerd/linkerd2-proxy/pull/3614 for more information
on the `ForwardCompatibleBody<B>` wrapper.

this branch updates test code in `linkerd-app-outbound` related to
timeouts so that it interacts with request and response bodies via an
adapter that polls for frames in a manner consistent with the 1.0 api of
`http_body`.

this allows us to limit the diff in
https://github.com/linkerd/linkerd2-proxy/pull/3504, which will only
need to remove this adapter once using hyper 1.0.

see #3671, #3672, and #3673, which performed the same change for
`linkerd-app-inbound`, other code in `linkerd-app-outbound`, and
`linkerd-app-integration`, respectively.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-28 11:01:44 -05:00
katelyn martin 67b4d419cf
refactor(app/integration): forward-compatible test code (#3673)
see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

see https://github.com/linkerd/linkerd2-proxy/pull/3559 and
https://github.com/linkerd/linkerd2-proxy/pull/3614 for more information
on the `ForwardCompatibleBody<B>` wrapper.

this branch updates test code in `linkerd-app-integration` so that it
interacts with request and response bodies via an adapter that polls for
frames in a manner consistent with the 1.0 api of `http_body`.

this allows us to limit the diff in
https://github.com/linkerd/linkerd2-proxy/pull/3504, which will only
need to remove this adapter once using hyper 1.0.

see #3671 and #3672, which perform the same change for
`linkerd-app-inbound` and `linkerd-app-outbound`, respectively.

---

* chore(app/integration): `linkerd-http-body-compat` test dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/integration): generalize `hyper::Body`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/integration): use `ForwardCompatibleBody`

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-28 09:34:03 -05:00
katelyn martin f934c8040b
refactor(app/outbound): forward-compatible test code (#3672)
see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

see https://github.com/linkerd/linkerd2-proxy/pull/3559 and
https://github.com/linkerd/linkerd2-proxy/pull/3614 for more information
on the `ForwardCompatibleBody<B>` wrapper.

this branch updates test code in `linkerd-app-outbound` so that it
interacts with request and response bodies via an adapter that polls for
frames in a manner consistent with the 1.0 api of `http_body`.

this allows us to limit the diff in
https://github.com/linkerd/linkerd2-proxy/pull/3504, which will only
need to remove this adapter once using hyper 1.0.

see #3671 and #3673, which perform the same change for
`linkerd-app-inbound` and `linkerd-app-integration`, respectively.

---

* chore(app/outbound): `linkerd-http-body-compat` test dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/outbound): use `Response::into_body()`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/outbound): use `ForwardCompatibleBody`

see https://github.com/linkerd/linkerd2/issues/8733.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/outbound): use `ForwardCompatibleBody`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/outbound): use `ForwardCompatibleBody`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/outbound): use `ForwardCompatibleBody`

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-28 09:33:55 -05:00
katelyn martin d02c377222
refactor(app/inbound): forward-compatible test code (#3671)
see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

see https://github.com/linkerd/linkerd2-proxy/pull/3559 and
https://github.com/linkerd/linkerd2-proxy/pull/3614 for more information
on the `ForwardCompatibleBody<B>` wrapper.

this branch updates test code in `linkerd-app-inbound` so that it
interacts with request and response bodies via an adapter that polls for
frames in a manner consistent with the 1.0 api of `http_body`.

this allows us to limit the diff in
https://github.com/linkerd/linkerd2-proxy/pull/3504, which will only
need to remove this adapter once using hyper 1.0.

see #3672 and #3673, which perform the same change for
`linkerd-app-outbound` and `linkerd-app-integration`, respectively.

---

* refactor(app/inbound): `linkerd-http-body-compat` test dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/inbound): use `ForwardCompatibleBody`

see https://github.com/linkerd/linkerd2/issues/8733.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-28 09:33:48 -05:00
dependabot[bot] ecbc3ec1fe
build(deps): bump cc from 1.2.15 to 1.2.16 (#3675)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.15 to 1.2.16.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.15...cc-v1.2.16)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-28 05:24:45 -08:00
dependabot[bot] 2584fcd9a0
build(deps): bump the boring group with 2 updates (#3667)
Bumps the boring group with 2 updates: [boring](https://github.com/cloudflare/boring) and [boring-sys](https://github.com/cloudflare/boring).


Updates `boring` from 4.14.0 to 4.15.0
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.14.0...v4.15.0)

Updates `boring-sys` from 4.14.0 to 4.15.0
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.14.0...v4.15.0)

---
updated-dependencies:
- dependency-name: boring
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: boring
- dependency-name: boring-sys
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: boring
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 13:34:13 -05:00
dependabot[bot] d4ab1b774c
build(deps): bump the tracing group with 2 updates (#3669)
Bumps the tracing group with 2 updates: [tracing-subscriber](https://github.com/tokio-rs/tracing) and [tracing-serde](https://github.com/tokio-rs/tracing).


Updates `tracing-subscriber` from 0.3.18 to 0.3.19
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.18...tracing-subscriber-0.3.19)

Updates `tracing-serde` from 0.1.3 to 0.2.0
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-serde-0.1.3...tracing-serde-0.2.0)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: tracing
- dependency-name: tracing-serde
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: tracing
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 13:34:04 -05:00
dependabot[bot] a92a3871cd
build(deps): bump tokio-boring from 4.14.0 to 4.15.0 (#3670)
Bumps [tokio-boring](https://github.com/cloudflare/boring) from 4.14.0 to 4.15.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.14.0...v4.15.0)

---
updated-dependencies:
- dependency-name: tokio-boring
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 13:33:54 -05:00
Oliver Gould e4307a61ee
chore(dependabot): group dependency updates (#3666)
This change updates the dependabot configuration to group certain ecosystems of
dependencies, especially rustls.
2025-02-27 10:14:58 -08:00
dependabot[bot] 46db23783d
build(deps): bump zerofrom from 0.1.5 to 0.1.6 (#3665)
Bumps [zerofrom](https://github.com/unicode-org/icu4x) from 0.1.5 to 0.1.6.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: zerofrom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 17:28:44 +00:00
dependabot[bot] ec6239f6b7
build(deps): bump litemap from 0.7.4 to 0.7.5 (#3664)
Bumps [litemap](https://github.com/unicode-org/icu4x) from 0.7.4 to 0.7.5.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: litemap
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 09:20:28 -08:00
dependabot[bot] f3ba58d2a9
build(deps): bump uuid from 1.15.0 to 1.15.1 (#3663)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.15.0 to 1.15.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.15.0...v1.15.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 09:20:11 -08:00
dependabot[bot] 33fc3e3f0f
build(deps): bump zerofrom-derive from 0.1.5 to 0.1.6 (#3662)
Bumps [zerofrom-derive](https://github.com/unicode-org/icu4x) from 0.1.5 to 0.1.6.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: zerofrom-derive
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 09:18:34 -08:00
dependabot[bot] 3119806c85
build(deps): bump codecov/codecov-action from 5.3.1 to 5.4.0 (#3661)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.3.1 to 5.4.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](13ce06bfc6...0565863a31)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 09:18:12 -08:00
katelyn martin 5945c92447
chore(app/trace-collector): remove `Default` bound (#3660)
see #3651 and linkerd/linkerd2#8733.

#3651 missed this unused trait bound, which we want to loosen
to account for changes in hyper's api.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-26 08:18:00 -08:00
dependabot[bot] 3597b90ce2
build(deps): bump actions/download-artifact from 4.1.8 to 4.1.9 (#3658)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.8 to 4.1.9.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](fa0a91b85d...cc20338598)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-26 10:07:58 -05:00
dependabot[bot] fcb5773b19
build(deps): bump uuid from 1.14.0 to 1.15.0 (#3659)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.14.0...v1.15.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-26 10:07:38 -05:00
katelyn martin 8daafde63b
chore(proxy/identity-client): remove `Default` bounds (#3653)
https://github.com/linkerd/linkerd2/issues/8733 for more information.

see also, https://github.com/linkerd/linkerd2-proxy/pull/3651 for
another related pull request.

in hyper 1.x, `Incoming` bodies do not provide a `Default`
implementation. compare the trait implementations here:

* https://docs.rs/hyper/0.14.31/hyper/body/struct.Body.html#impl-Default-for-Body
* https://docs.rs/hyper/latest/hyper/body/struct.Incoming.html#trait-implementations

this commit removes these bounds from
`linkerd_proxy_identity_client::Certify<C, S>`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-26 10:06:56 -05:00
katelyn martin 9aca7b6894
nit(opencensus): format use statements (#3652)
this commit makes some superficial adjustments to import statements in
`linkerd-opencensus`. we have a convention of using crate-level symbol
groupings in `use` statements. this commit follows that convention.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-25 16:02:28 -05:00
katelyn martin 4df3d57c32
chore(service-profiles): remove `Default` bounds (#3657)
see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

see also, #3651 #3653, #3654, and #3655 for some related pull requests.

in hyper 1.x, `Incoming` bodies do not provide a `Default`
implementation. compare the trait implementations here:

* https://docs.rs/hyper/0.14.31/hyper/body/struct.Body.html#impl-Default-for-Body
* https://docs.rs/hyper/latest/hyper/body/struct.Incoming.html#trait-implementations

this commit removes `Default` bounds from `Client<R, S>` used to create
watches on service profiles.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-25 16:01:39 -05:00
katelyn martin f054e54bce
chore(proxy/api-resolve): remove `Default` bounds (#3656)
see https://github.com/linkerd/linkerd2/issues/8733 for more information.

see also, #3651 #3653, and #3654 for some related pull requests.

in hyper 1.x, `Incoming` bodies do not provide a `Default`
implementation. compare the trait implementations here:

* https://docs.rs/hyper/0.14.31/hyper/body/struct.Body.html#impl-Default-for-Body
* https://docs.rs/hyper/latest/hyper/body/struct.Incoming.html#trait-implementations

this commit removes `Default` bounds from `Resolve<S>`.

this means that in `linkerd-app`, we can invoke
`new_recover_default()` when using hyper 1.x (_see #3504_)

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-25 16:01:28 -05:00
katelyn martin 09a0c0f4eb
chore(app/outbound): remove `Default` bounds (#3655)
see https://github.com/linkerd/linkerd2/issues/8733 for more information.

see also, #3651 #3653, and #3654 for some related pull requests.

in hyper 1.x, `Incoming` bodies do not provide a `Default` implementation. compare the trait implementations here:

* https://docs.rs/hyper/0.14.31/hyper/body/struct.Body.html#impl-Default-for-Body
* https://docs.rs/hyper/latest/hyper/body/struct.Incoming.html#trait-implementations

this commit removes `Default` bounds from policy lookup in the outbound
proxy. this means that in `linkerd-app`, we can invoke
`Outbound::build_policies()` when using hyper 1.x (_see #3504_)

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-25 16:01:16 -05:00
katelyn martin 1a12be5eb6
chore(app/inbound): remove `Default` bounds (#3654)
see https://github.com/linkerd/linkerd2/issues/8733 for more information.

see also, #3651 and #3653 for some related pull requests.

in hyper 1.x, `Incoming` bodies do not provide a `Default`
implementation. compare the trait implementations here:

* https://docs.rs/hyper/0.14.31/hyper/body/struct.Body.html#impl-Default-for-Body
* https://docs.rs/hyper/latest/hyper/body/struct.Incoming.html#trait-implementations

this commit removes `Default` bounds from policy lookup in the inbound
proxy.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-25 16:00:56 -05:00
katelyn martin 5ee4f711cf
chore(app/trace_collector): remove `Default` bounds (#3651)
see https://github.com/linkerd/linkerd2/issues/8733 for more information.

in hyper 1.x, `Incoming` bodies do not provide a `Default`
implementation. compare the trait implementations here:

* https://docs.rs/hyper/0.14.31/hyper/body/struct.Body.html#impl-Default-for-Body
* https://docs.rs/hyper/latest/hyper/body/struct.Incoming.html#trait-implementations

this commit removes these bounds from the
`linkerd_app::trace_collector::otel_collector::SpanExporter<T, S>` and
other connected functions.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-25 16:00:28 -05:00
dependabot[bot] ea8a970c70
build(deps): bump either from 1.13.0 to 1.14.0 (#3649)
Bumps [either](https://github.com/rayon-rs/either) from 1.13.0 to 1.14.0.
- [Commits](https://github.com/rayon-rs/either/compare/1.13.0...1.14.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-25 12:01:14 -05:00
dependabot[bot] bb0a1ec57d
build(deps): bump portable-atomic from 1.10.0 to 1.11.0 (#3648)
Bumps [portable-atomic](https://github.com/taiki-e/portable-atomic) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/taiki-e/portable-atomic/releases)
- [Changelog](https://github.com/taiki-e/portable-atomic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/portable-atomic/compare/v1.10.0...v1.11.0)

---
updated-dependencies:
- dependency-name: portable-atomic
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-25 12:01:03 -05:00
katelyn martin 8e5d0fdc0c
chore(tls): remove redundant i/o bounds (#3647)
this commit removes a redundant set of trait bounds from
`linkerd_tls::Client<L, C>`'s `tower::Service<T>` implementation.

this client type is generic over a `C`-typed `MakeConnection`. this
trait is effectively an alias for particular services, and already by
definition is prerequisite upon `Connection` responses that are
an asynchronous reader/writer.

see the definition of the trait, here:

```rust
// linkerd/stack/src/connect.rs

pub trait MakeConnection<T> {
    /// An I/O type that represents a connection to the remote endpoint.
    type Connection: AsyncRead + AsyncWrite;

    /// Metadata associated with the established connection.
    type Metadata;

    type Error: Into<Error>;

    type Future: Future<Output = Result<(Self::Connection, Self::Metadata), Self::Error>>;

    /// Determines whether the connector is ready to establish a connection.
    fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>;

    /// Establishes a connection.
    fn connect(&mut self, t: T) -> Self::Future;

    // contd...
}
```

thus, we can remove these bounds from the tls client. the connection is
already, by virtue of `C: MakeConnection`, an `AsyncRead + AsyncWrite`
type.

see https://github.com/linkerd/linkerd2/issues/8733.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-24 11:03:23 -05:00
dependabot[bot] 78e6c7a40c
build(deps): bump actions/upload-artifact from 4.6.0 to 4.6.1 (#3646)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](65c4c4a1dd...4cec3d8aa0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 09:30:06 -05:00
dependabot[bot] d0c10e02d6
build(deps): bump EmbarkStudios/cargo-deny-action from 2.0.5 to 2.0.6 (#3645)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 2.0.5 to 2.0.6.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](13fd9ef18c...0484eedcba)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 09:29:53 -05:00
dependabot[bot] f86d5f9e88
build(deps): bump pem from 3.0.4 to 3.0.5 (#3644)
Bumps [pem](https://github.com/jcreekmore/pem-rs) from 3.0.4 to 3.0.5.
- [Changelog](https://github.com/jcreekmore/pem-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jcreekmore/pem-rs/compare/v3.0.4...v3.0.5)

---
updated-dependencies:
- dependency-name: pem
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 09:29:41 -05:00
dependabot[bot] c5c33d580d
build(deps): bump ring from 0.17.9 to 0.17.11 (#3643)
Bumps [ring](https://github.com/ctz/ring) from 0.17.9 to 0.17.11.
- [Release notes](https://github.com/ctz/ring/releases)
- [Commits](https://github.com/ctz/ring/compare/0.17.9...0.17.11)

---
updated-dependencies:
- dependency-name: ring
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 09:29:23 -05:00
dependabot[bot] f24e13c983
build(deps): bump libc from 0.2.169 to 0.2.170 (#3642)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.169 to 0.2.170.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.170/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.169...0.2.170)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 09:29:11 -05:00
dependabot[bot] a8dea3cd05
build(deps): bump uuid from 1.13.2 to 1.14.0 (#3641)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.13.2 to 1.14.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.13.2...v1.14.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 09:28:59 -05:00
dependabot[bot] 6fd566715b
build(deps): bump flate2 from 1.0.35 to 1.1.0 (#3640)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.35 to 1.1.0.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Changelog](https://github.com/rust-lang/flate2-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.35...1.1.0)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 09:28:42 -05:00
Zahari Dichev 46ea686439
chore(transport): Ignore TCP_USER_TIMEOUT on non-Linux systems and warn (#3628)
Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2025-02-21 18:40:14 +00:00
Zahari Dichev fc4efc90e5
chore(app): make spire compilation possible for non-linux targets (#3627)
Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2025-02-21 08:56:01 -08:00
dependabot[bot] 2656df4be8
build(deps): bump unicode-ident from 1.0.16 to 1.0.17 (#3635)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.16 to 1.0.17.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.16...1.0.17)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-21 10:16:55 -05:00
dependabot[bot] c08124d358
build(deps): bump serde from 1.0.217 to 1.0.218 (#3637)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.217 to 1.0.218.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.217...v1.0.218)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-21 10:16:45 -05:00
dependabot[bot] 6b76a8552a
build(deps): bump log from 0.4.25 to 0.4.26 (#3638)
Bumps [log](https://github.com/rust-lang/log) from 0.4.25 to 0.4.26.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.25...0.4.26)

---
updated-dependencies:
- dependency-name: log
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-21 10:16:24 -05:00
dependabot[bot] 09e7918133
build(deps): bump cc from 1.2.14 to 1.2.15 (#3639)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.14 to 1.2.15.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.14...cc-v1.2.15)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-21 10:16:11 -05:00
dependabot[bot] e3f6fb7eae
build(deps): bump anyhow from 1.0.95 to 1.0.96 (#3636)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.95 to 1.0.96.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.95...1.0.96)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-21 10:15:22 -05:00
dependabot[bot] 0ca220b37b
build(deps): bump tokio-boring from 4.13.0 to 4.14.0 (#3631)
Bumps [tokio-boring](https://github.com/cloudflare/boring) from 4.13.0 to 4.14.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.13.0...v4.14.0)

---
updated-dependencies:
- dependency-name: tokio-boring
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: katelyn martin <kate@buoyant.io>
2025-02-20 12:24:06 -05:00
dependabot[bot] 733885aed8
build(deps): bump EmbarkStudios/cargo-deny-action from 2.0.4 to 2.0.5 (#3629)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](e2f4ede4a4...13fd9ef18c)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-20 11:29:01 -05:00
dependabot[bot] bfa5d8bd8c
build(deps): bump serde_json from 1.0.138 to 1.0.139 (#3632)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.138 to 1.0.139.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.138...v1.0.139)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-20 11:28:45 -05:00
dependabot[bot] 4d5a9e45f3
build(deps): bump hickory-resolver from 0.24.3 to 0.24.4 (#3630)
Bumps [hickory-resolver](https://github.com/hickory-dns/hickory-dns) from 0.24.3 to 0.24.4.
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.3...v0.24.4)

---
updated-dependencies:
- dependency-name: hickory-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-20 11:28:25 -05:00
dependabot[bot] f619f0fc0a
build(deps): bump hickory-proto from 0.24.3 to 0.24.4 (#3634)
Bumps [hickory-proto](https://github.com/hickory-dns/hickory-dns) from 0.24.3 to 0.24.4.
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.3...v0.24.4)

---
updated-dependencies:
- dependency-name: hickory-proto
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-20 11:28:04 -05:00
dependabot[bot] 25324b6a15
build(deps): bump boring-sys from 4.13.0 to 4.14.0 (#3633)
Bumps [boring-sys](https://github.com/cloudflare/boring) from 4.13.0 to 4.14.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v4.13.0...v4.14.0)

---
updated-dependencies:
- dependency-name: boring-sys
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-20 11:27:33 -05:00
Zahari Dichev b8cc2d0878
chore(transport): User socket2 to obtain orig_dst (#3626)
Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2025-02-19 11:05:38 -08:00
dependabot[bot] 30a9f24a98
build(deps): bump typenum from 1.17.0 to 1.18.0 (#3624)
Bumps [typenum](https://github.com/paholg/typenum) from 1.17.0 to 1.18.0.
- [Release notes](https://github.com/paholg/typenum/releases)
- [Changelog](https://github.com/paholg/typenum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/paholg/typenum/compare/v1.17.0...v1.18.0)

---
updated-dependencies:
- dependency-name: typenum
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-18 11:16:46 -05:00
dependabot[bot] b255c8251c
build(deps): bump uuid from 1.13.1 to 1.13.2 (#3625)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.13.1 to 1.13.2.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.13.1...v1.13.2)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-18 11:16:40 -05:00
dependabot[bot] 04fd64e31c
build(deps): bump tempfile from 3.17.0 to 3.17.1 (#3623)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.17.0 to 3.17.1.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.17.0...v3.17.1)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-18 11:16:27 -05:00
katelyn martin 48748be0e8
refactor(app/core): prepare rescue body for http-body upgrade (#3616)
this commit makes some minor alterations to our error recovery body
middleware. see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

this commit removes an `assert!` statement from the implementation of
`<Response<R, B> as Body>::poll_data()`. see the documentation of
`Body::poll_frame()`:

> Once the end of the stream is reached, implementations should
> continue to return [`Poll::Ready(None)`].

1090bfff26 (diff-33aabe8c2aaa7614022addf244245e09bbff576a67a9ae3c6938c8a868201d36R60-R61)

to do this, this commit introduces a distinct terminal state
`Inner::Rescued` to represent when the underlying `B`-typed body has
yielded an error and been rescued. once in this state the body will
yield no more data frames, instead yielding a collection of trailers
describing the mid-stream error that was encountered by the underlying
body.

the call to `R::rescue` is also moved down into the helper function fka
`grpc_trailers()`. this helps the function follow the grain of our
"state machine" a little more directly.

see #3615, #3614, and #3611 for pretext to this change.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-17 11:53:25 -05:00
dependabot[bot] 65f9d28a11
build(deps): bump cc from 1.2.12 to 1.2.14 (#3617)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.12 to 1.2.14.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.12...cc-v1.2.14)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-17 08:39:11 -08:00
dependabot[bot] 76f4e19c44
build(deps): bump tempfile from 3.16.0 to 3.17.0 (#3621)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.16.0 to 3.17.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.16.0...v3.17.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-17 11:00:59 -05:00
dependabot[bot] 508791dce8
build(deps): bump equivalent from 1.0.1 to 1.0.2 (#3620)
Bumps [equivalent](https://github.com/indexmap-rs/equivalent) from 1.0.1 to 1.0.2.
- [Commits](https://github.com/indexmap-rs/equivalent/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: equivalent
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-17 11:00:45 -05:00
dependabot[bot] 2e3c6c3cfd
build(deps): bump smallvec from 1.13.2 to 1.14.0 (#3619)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.13.2 to 1.14.0.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.13.2...v1.14.0)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-17 11:00:32 -05:00
dependabot[bot] d2425c8c56
build(deps): bump ring from 0.17.8 to 0.17.9 (#3618)
Bumps [ring](https://github.com/briansmith/ring) from 0.17.8 to 0.17.9.
- [Commits](https://github.com/briansmith/ring/commits)

---
updated-dependencies:
- dependency-name: ring
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-14 07:20:13 -08:00
katelyn martin b883089ac9
refactor(app/core): a unit test suite for rescue body (#3615)
`linkerd-app-core` includes an error recovery body middleware. this middleware will gracefully catch and report errors encountered when polling an inner body, and via an `R`-typed recovery strategy provided by the caller, will attempt to map the error to a gRPC status code denoting an error.

before we upgrade to hyper 1.0 in service of https://github.com/linkerd/linkerd2/issues/8733, we add some test coverage to ensure that we preserve the behavior of this middleware.

see:
* linkerd/linkerd2#8733
* #3614.

for historical context on this tower layer, see:
* #222
* #1246
* #1282

---

* refactor(http/retry): outline `ForwardCompatibleBody<B>`

in #3559 (4b53081), we introduced a backported `Frame<T>` type, and a
`ForwardCompatibleBody<B>` type that allows us to interact with a
`http_body::Body` circa 0.4.6 in terms of frame-based interfaces that
match those of the 1.0 interface.

see linkerd/linkerd2#8733 for more information on upgrading hyper.

in #3559, we narrowly added this as an internal submodule of the
`linkerd-http-retry` library. these facilities however, would have
utility in other places such as `linkerd-app-core`.

this commit pulls these compatibility shims out into a
`linkerd-http-body-compat` library so that they can be imported and
reused elsewhere.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(http/body-compat): tidy `combinators` imports

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): hoist `errors::code_header` helper

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): `l5d-*` constants are headers

these are header values. `http::HeaderName` has a const fn constructor,
so let's use that.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): grpc constants are headers

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): hoist `l5d-` and `grpc-` constants

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): outline `ResponseBody` middleware

we'll add a few tests for this middleware shortly.

this commit moves this middleware out into its own submodule.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): encapsulate `ResponseBody` enum

for other body middleware, we hide inner enum variants and their
constituent members by using the "inner" pattern.

this commit tweaks `ResponseBody` to follow suit, such that it now holds
an `Inner`, but does not expose its passthrough and rescue variants to
callers.

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(app/core): document `ResponseBody<R, B>`

this adds a small documentation comment describing what this type does.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/core): a unit test suite for rescue body

this commit introduces a test suite for our error recovery middleware.

this body middleware provides a mechanism to "rescue" errors, gracefully
mapping an error encountered when polling a gRPC body into e.g. trailers
with a gRPC status code.

before we upgrade this middleware in service of linkerd/linkerd2#8733,
we add some test coverage to ensure that we preserve this middleware.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-13 10:41:23 -05:00
dependabot[bot] 2f848a0604
build(deps): bump the opentelemetry group with 2 updates (#3607)
* build(deps): bump the opentelemetry group with 2 updates

Bumps the opentelemetry group with 2 updates: [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust) and [opentelemetry_sdk](https://github.com/open-telemetry/opentelemetry-rust).


Updates `opentelemetry` from 0.27.1 to 0.28.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.27.1...opentelemetry-0.28.0)

Updates `opentelemetry_sdk` from 0.27.1 to 0.28.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry_sdk-0.27.1...opentelemetry_sdk-0.28.0)

---
updated-dependencies:
- dependency-name: opentelemetry
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
- dependency-name: opentelemetry_sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(deps): Fix build breakages from opentelemetry-sdk 0.28

The changes here are fairly small, with the main two being a change to an import path and replacing a privated `new` function with a builder.

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Scott Fleener <scott@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Scott Fleener <scott@buoyant.io>
2025-02-13 07:13:05 -08:00
katelyn martin faa42fddeb
refactor(http/retry): outline `ForwardCompatibleBody<B>` (#3614)
* refactor(http/retry): outline `ForwardCompatibleBody<B>`

in #3559 (4b53081), we introduced a backported `Frame<T>` type, and a
`ForwardCompatibleBody<B>` type that allows us to interact with a
`http_body::Body` circa 0.4.6 in terms of frame-based interfaces that
match those of the 1.0 interface.

see linkerd/linkerd2#8733 for more information on upgrading hyper.

in #3559, we narrowly added this as an internal submodule of the
`linkerd-http-retry` library. these facilities however, would have
utility in other places such as `linkerd-app-core`.

this commit pulls these compatibility shims out into a
`linkerd-http-body-compat` library so that they can be imported and
reused elsewhere.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(http/body-compat): tidy `combinators` imports

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-13 08:47:14 -05:00
dependabot[bot] e0a7121ad8
build(deps): bump rustls from 0.23.22 to 0.23.23 (#3612)
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.22 to 0.23.23.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.22...v/0.23.23)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-12 11:54:36 -05:00
katelyn martin b2e8623419
refactor(mock/http-body): outline `MockBody` test body (#3611)
`MockBody` is a type that we use to implement tests for our
`peek_trailers::PeekTrailersBody<B>` body middleware. this is a useful
tool for mocking the polling outcomes of the inner body we wrap, which
would be useful for testing other `http_body::Body` middleware.

this commit moves `MockBody` out of `linkerd-http-retry`, and into a new
`linkerd-mock-http-body` crate. this is added as a test dependency for
the retry crate, and can now be used (rather than vendored) by other
bodies.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-12 07:14:15 -08:00
Oliver Gould 40e0cf4760
feat(outbound)!: disable 'hostname' label (#3606)
The 'hostname' label value is derived from the request URI and can be influenced
by applications. If a client uses a high cardinality of hostname values, this
leads to the proxy exporting many metrics and ultimately exhausting resources.

This change disables the 'hostname' label by default. A new field is outed to
the HTTP and TLS route parameters, `export_hostname_labels`, which can be used
to enable the 'hostname' label; however, this type is not yet configurable.
Changes are required to the proxy API and, ultimately, the policy controller, to
make this field configurable.

When the hostname is not exported, an empty label value is used.

BREAKING: The 'hostname' label is now disabled by default.
2025-02-12 07:13:29 -08:00
katelyn martin 570fc11743
refactor(app/core): remove unused reëxport (#3610)
Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-11 14:59:41 -05:00
dependabot[bot] fa94c2adeb
build(deps): bump oid-registry from 0.8.0 to 0.8.1 (#3608)
Bumps [oid-registry](https://github.com/rusticata/oid-registry) from 0.8.0 to 0.8.1.
- [Commits](https://github.com/rusticata/oid-registry/compare/oid-registry-0.8.0...oid-registry-0.8.1)

---
updated-dependencies:
- dependency-name: oid-registry
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-11 12:47:59 -05:00
Scott Fleener 3229f4b1ed
fix(opentelemetry): preserve span labels in traces (#3609)
A previous change enabling OpenTelmetry forgot to include attributes from the span itself, in addition to the request level spans as we do in the old OpenCensus exporter. This adds those attributes back in.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-02-11 16:03:26 +00:00
Oliver Gould d3cf6f3637
refactor(outbound): simplify http route metric labeling (#3604)
The outbound HTTP route labels use multiple ExtractParam implementations to
convert a matched route target to set of labels (using an HTTP request).

This change removes the RouteLabelExtract type, in favor of implementing label
extraction on the route target type directly.
2025-02-10 14:22:50 -08:00
Oliver Gould 768f5a75b0
chore(outbound): avoid allocation in TLS route labels (#3605) 2025-02-10 21:26:41 +00:00
dependabot[bot] 18d8257c48
build(deps): bump cmake from 0.1.53 to 0.1.54 (#3603)
Bumps [cmake](https://github.com/rust-lang/cmake-rs) from 0.1.53 to 0.1.54.
- [Release notes](https://github.com/rust-lang/cmake-rs/releases)
- [Changelog](https://github.com/rust-lang/cmake-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cmake-rs/compare/v0.1.53...v0.1.54)

---
updated-dependencies:
- dependency-name: cmake
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-10 11:15:43 -05:00
dependabot[bot] 7c3ffa3a86
build(deps): bump hickory-proto from 0.24.2 to 0.24.3 (#3602)
Bumps [hickory-proto](https://github.com/hickory-dns/hickory-dns) from 0.24.2 to 0.24.3.
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/v0.24.3/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.2...v0.24.3)

---
updated-dependencies:
- dependency-name: hickory-proto
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-10 11:14:56 -05:00
dependabot[bot] 5880a9d49a
build(deps): bump data-encoding from 2.7.0 to 2.8.0 (#3601)
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.7.0 to 2.8.0.
- [Commits](https://github.com/ia0/data-encoding/compare/v2.7.0...v2.8.0)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-10 11:14:50 -05:00
dependabot[bot] b69b3442b2
build(deps): bump hickory-resolver from 0.24.2 to 0.24.3 (#3600)
Bumps [hickory-resolver](https://github.com/hickory-dns/hickory-dns) from 0.24.2 to 0.24.3.
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/v0.24.3/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.2...v0.24.3)

---
updated-dependencies:
- dependency-name: hickory-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-10 11:14:26 -05:00
dependabot[bot] c96efbe1cc
build(deps): bump once_cell from 1.20.2 to 1.20.3 (#3599)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.20.2 to 1.20.3.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.2...v1.20.3)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-07 11:51:04 -05:00
katelyn martin 4b53081a84
feat(http/retry): model `ReplayBody<B>` with `Frame<T>` (#3598)
pr #3559 (dd4fbcdb) refactored our trailer peeking body middleware to
model its buffering in terms of the `Frame<T>` type used in
`http-body`'s 1.0 release.

this branch performs a similar change for the other piece of body
middleware that super linkerd's retry facilities: `ReplayBody<B>`. the
inner body `B` is now wrapped in the `ForwardCompatibleBody<B>` adapter,
and we now poll it in terms of frames.

NB: polling the underlying in terms of frames has a subtle knock-on
effect regarding when we observe the trailers, in the liminal period
between this refactor and the subsequent upgrade to hyper 1.0, whilst we
must still implement the existing 0.4 interface for `Body` that includes
`poll_trailers()`.

see the comment above `replay_trailers` for more on this, describing why
we now initialize this to `true`. relatedly, this is why we no longer
delegate down to `B::poll_trailers` ourselves. it will have already been
called by our adapter.

`ReplayBody::is_end_stream()` now behaves identically when initially
polling a body compared to subsequent replays. this is fine, as
`is_end_stream()` is a hint that facilitates optimizations
(https://github.com/hyperium/http-body/pull/143). we do still report the end properly, we just
won't be quite as prescient on the initial playthrough.

in the same manner as the existing `frame()` method mimics
`http_body_util::BodyExt::frame()`, this branch introduces
a new `ForwardCompatibleBody::poll_frame()` method.

this allows us to poll the compatibility layer for a `Frame<T>`.

see:
- https://github.com/linkerd/linkerd2/issues/8733.
- https://github.com/linkerd/linkerd2-proxy/pull/3559

---

* nit(http/retry): install tracing subscriber in tests

some tests do not set up a tracing subscriber, because they do not use
the shared `Test::new()` helper function used elsewhere in this test
suite.

to provide a trace of the test's execution in the event of a failure,
initialize a tracing subscriber in some additional unit tests.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): `ForwardCompatibleBody<B>` exposes hints

this commit removes the `cfg(test)` gate on the method exposing
`B::is_end_stream()`, and introduces another method also exposing the
`size_hint()` method.

we will want these in order to implement these methods for
`ReplayBody<B>`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): `ForwardCompatibleBody::poll_frame()`

in the same manner as the existing `frame()` method mimics
`http_body_util::BodyExt::frame()`, this commit introduces
a new `ForwardCompatibleBody::poll_frame()` method.

this allows us to poll the compatibility layer for a `Frame<T>`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): `ReplayBody<B>` polls for frames

pr #3559 (dd4fbcd) refactored our trailer peeking body middleware to
model its buffering in terms of the `Frame<T>` type used in
`http-body`'s 1.0 release.

this commit performs a similar change for the other piece of body
middleware that super linkerd's retry facilities: `ReplayBody<B>`. the
inner body `B` is now wrapped in the `ForwardCompatibleBody<B>` adapter,
and we now poll it in terms of frames.

NB: polling the underlying in terms of frames has a subtle knock-on
effect regarding when we observe the trailers, in the liminal period
between this refactor and the subsequent upgrade to hyper 1.0, whilst we
must still implement the existing 0.4 interface for `Body` that includes
`poll_trailers()`.

see the comment above `replay_trailers` for more on this, describing why
we now initialize this to `true`. relatedly, this is why we now longer
delegate down to `B::poll_trailers` ourselves. it will have already been
called by our adapter.

`ReplayBody::is_end_stream()` now behaves identically when initially
polling a body compared to subsequent replays. this is fine, as
`is_end_stream()` is a hint that facilitates optimizations
(hyperium/http-body#143). we do still report the end properly, we just
won't be quite as prescient on the initial playthrough.

see:
- https://github.com/linkerd/linkerd2/issues/8733.
- https://github.com/linkerd/linkerd2-proxy/pull/3559

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): `is_end_stream()` traces

this commit introduces some trace-level diagnostics tracking how the
replay body has determined whether or not it has reached the end of the
stream.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(http/retry): capitalize trace event messages

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-06 16:00:38 +00:00
katelyn martin c4e0fd2bd4
refactor(http/retry): outline bounded replay buffer (#3597)
the `ReplayBody<B>` middleware makes use of a `BufList` type to hold a
reference to bytes yielded by the inner body `B`. a `Data` enum is
composed on top to this, to allow bodies to either return (a) a replay
of a previous body, or (b) the iniial bytes yielded by the original
body.

this branch also takes the step of moving some code out of the
`ReplayBody::poll_data(..)` trait method along with inlining
`BufList::push_chunk(..)` , a small helper function that is only used
once.

this is intended to consolidate code related to buffering data yielded
by the underlying `B`-typed body, and extricate logic concerning the
bounding of this buffer from the now defunct `Body::poll_data()` trait
method.

see https://github.com/linkerd/linkerd2/issues/8733 for more information
about upgrading the proxy to hyper 1.0.

this will help make subsequent changes to the model of `ReplayBody<B>`
its corresponding `Body` implementation more reviewable, by proactively
reorganizing things in advance.

---

* refactor(http/retry): outline replay buffer

the replay body uses this `BufList` type to hold a reference to bytes
yielded by the inner body `B`.

the `Data` enum is composed on top to this, to allow bodies to either
return a replay of a previous body, or the iniial bytes yielded by the
original body.

this is all relatively self-contained, so we can move this into a small
submodule.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): outline replay body buffering

this commit moves some code out of the `ReplayBody::poll_data(..)` trait
method.

this bit of code is where we take a chunk of a data yielded by the inner
body, and push it into our replay buffer. if the capacity is exceeded,
we flush the buffer. in either case, the code copies the chunk into a
cheaply cloneable, contiguous `Bytes`.

this is all related to the buffer, so we move it there.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): inline `BufList::push_chunk`

`push_chunk` is a small helper function that is only used once. now that
we have moved our buffering code alongside this type, it's more
straightforward to inline this function.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): rename `BufList` to `Replay`

this structure is responsible for acting as the `bytes::Buf` buffer for
the replay of the initial body.

this commit renames this to articulate that relationship more directly.

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(http/retry): polish `Replay` documentation

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-06 10:50:27 -05:00
dependabot[bot] 4f7f7156e9
build(deps): bump cc from 1.2.11 to 1.2.12 (#3592)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.11 to 1.2.12.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.11...cc-v1.2.12)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 12:36:02 -05:00
dependabot[bot] d3f2c120fa
build(deps): bump symbolic-common from 12.13.3 to 12.13.4 (#3593)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.13.3 to 12.13.4.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.13.3...12.13.4)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 11:59:55 -05:00
dependabot[bot] 733ee21abf
build(deps): bump tj-actions/changed-files from 45.0.6 to 45.0.7 (#3594)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.6 to 45.0.7.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](d6e91a2266...dcc7a0cba8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 11:59:31 -05:00
dependabot[bot] 5b2a4b5f42
build(deps): bump symbolic-demangle from 12.13.3 to 12.13.4 (#3595)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.13.3 to 12.13.4.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.13.3...12.13.4)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 11:59:21 -05:00
dependabot[bot] 6633a3f1db
build(deps): bump uuid from 1.12.1 to 1.13.1 (#3596)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.12.1 to 1.13.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.12.1...1.13.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 11:59:11 -05:00
katelyn martin 7eecfb425b
refactor(http/retry): use `Poll<T>` mapping methods (#3586)
this commit makes some small, admittedly subjective tweaks to
`ReplayBody::poll_trailers(..)`.

we can make use of the `map_ok` and `map_err` methods that exist to map
`Poll::Ready<Result<T, E>>`'s inner `T` to some `U` (in our case, to
record the trailers for later replay), and to map the error type into a
boxed `Error`.

this is a minor tweak, front-running other work to port the
`ReplayBody<B>` to http-body 1.0. see
https://github.com/linkerd/linkerd2/issues/8733.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-04 16:55:55 +00:00
katelyn martin dc53def982
refactor(http/retry): replayed body is not optional (#3585)
`ReplayBody<B>` is slightly inconsistent about how it represents the
exhaustion of the inner `B`-typed body.

first, in `poll_data()` we poll the inner body, and note that we
consider a `None` value for `BodyState::rest` to mean that there is no
more work to do.

```rust
// Poll the inner body for more data. If the body has ended, remember
// that so that future clones will not try polling it again (as
// described above).
let mut data = {
    // Get access to the initial body. If we don't have access to the
    // inner body, there's no more work to do.
    let rest = match state.rest.as_mut() {
	Some(rest) => rest,
	None => return Poll::Ready(None),
    };
    // ...
};
```

then, in `Body::is_end_stream()`, we write the following to check that
the stream is done:

```rust
let is_inner_eos = self
    .state
    .as_ref()
    .and_then(|state| state.rest.as_ref().map(Body::is_end_stream))
    .unwrap_or(false);
```

note in particular the call to `Option::and_then(..)`.

this means that, should the inner body be `None`, we will begin
reporting the stream as **not** finished. this is backwards!

this commit makes a change to the definition of `BodyState<B>`. it no
longer treats its inner body as optional. we never drop the inner body
`B`, to facilitate gracefully replaying bodies that were interrupted
when initially being polled.

a bare `B` means that various bits of control are now simpler, without
having to account for the `Option<T>` state.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-02-04 11:39:16 -05:00
dependabot[bot] e18d0d4acc
build(deps): bump bytes from 1.9.0 to 1.10.0 (#3591)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-04 09:11:25 -05:00
dependabot[bot] 0df44c9a70
build(deps): bump syn from 2.0.96 to 2.0.98 (#3589)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.96 to 2.0.98.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.96...2.0.98)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-03 09:24:59 -05:00
dependabot[bot] dc4c5a4e49
build(deps): bump async-trait from 0.1.85 to 0.1.86 (#3587)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.85 to 0.1.86.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.85...0.1.86)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-03 09:24:44 -05:00
dependabot[bot] 9f7a3d95a8
build(deps): bump pin-project from 1.1.8 to 1.1.9 (#3588)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.8 to 1.1.9.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.8...v1.1.9)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-03 09:24:30 -05:00
dependabot[bot] d95d0c81f7
build(deps): bump cc from 1.2.10 to 1.2.11 (#3590)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.10 to 1.2.11.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.10...cc-v1.2.11)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-03 09:24:13 -05:00
Scott Fleener 4e791fe5b8
Support OTEL_RESOURCE_ATTRIBUTES in the proxy (#3580)
This environment variable is definted by the OpenTelemetry conventions as a way of specifying additional resource attributes to be included in traces: https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#general-sdk-configuration

Note that this is parallel to LINKERD2_PROXY_TRACE_EXTRA_ATTRIBUTES, which is meant for common attributes that should always be provided by the proxy (pod UID, contianer name, etc.). We do not expect users to override that one, as OTEL_RESOURCE_ATTRIBUTES is the conventional way of specifying custom attributes.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-01-31 14:47:14 +00:00
dependabot[bot] 63dce670a0
build(deps): bump rustls from 0.23.21 to 0.23.22 (#3584)
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.21 to 0.23.22.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.21...v/0.23.22)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-31 09:23:29 -05:00
katelyn martin afda8a7b30
feat(http/retry): add more replay body test coverage (#3583)
see https://github.com/linkerd/linkerd2/issues/8733.

we are currently in the process of upgrading our hyper, http, and http-body dependencies to their 1.0 major releases.

this branch introduces additional test coverage, and further refines existing test coverage, concerning how a `ReplayBody<B>` behaves when it reaches the "end of stream" of its internal `B`-typed body.

additional assertions are added to show that bodies with trailers may be replayed an arbitrary number of times, and that capacity errors occur precisely at their expected boundary. additional assertions are added to confirm that `ReplayBody::is_capped()` reports these conditions properly.

this branch also notably outlines the unit test suite into a separate file, due to its size. as a result, reviewers are encouraged to walk through this branch on a commit-by-commit basis when reading these changes.

i noticed some relatively minor issues with `is_end_stream()` and `size_hint()` while i was reviewing this middleware, in preparation to port it to http-body 1.0. i have left `TODO` comments noting where today's behavior is slightly askew, but _intentionally avoided_ fixing them here. my goal on that front is to highlight those wrinkles so that later fixes to these edges are more easily reviewable.

---

* refactor(http/retry): outline `ReplayBody<B>` unit tests

there are more than 500 lines of unit tests. let's move them into a
submodule, for convenience.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(http/retry): reorganize replay tests

this is a small cosmetic change reording some test helpers.

there is a common convention of affixing a banner comment above groups
of `impl T {}` blocks, which is useful when top-level blocks are folded
in an editor.

similarly, there is a convention of defining structures at the top of a
file.

this commit reorganizes the replay body tests to follow each of these
conventions.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(http/retry): test replays trailers twice

just to be extra sure!

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(http/retry): rename `trailers_only()` test

this is part of a family of other tests called `replays_one_chunk()`,
`replays_several_chunks()`, and `replays_trailers()`. let's name this
something that lines up with this convention.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): add a `TestBody` type

we have a unit test, called `eos_only_when_fully_replayed` that confirms
`Body::end_of_stream()` reports the stream ending properly.

soon, we aim to introduce additional test coverage that exercises this
when a body has trailers, as well. this will be useful for assurance
related to upgrading to http-body v1.x. see linkerd/linkerd2#8733 for
more information.

unfortunately, hyper 0.14's channel-backed body does not report itself
as having reached the end of the stream. this is an unfortunate quality
that prevents us from using `Test::new()`.

this commit adds a `TestBody` type that we can use in place of
`BoxBody::from_static(..)`, which boxes a static string, but does not
send trailers.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): add `is_end_stream()` coverage for trailers

this commit introduces additional test coverage that exercises
`is_end_stream()` when a replay body is wrapping a body with trailers.
this will be useful for assurance related to upgrading to http-body
v1.x. see linkerd/linkerd2#8733 for more information.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): add `is_capped()` test coverage

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): further refine capacity test coverage

we want to show that exceeding the capacity is the point at which
replays will fail.

this commit defines some constants to further communicate and encode
this relationship between the bytes sent, and the capacity of the replay
body.

further, it shortens the second frame sent so that we ensure precisely
when a body becomes capped.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): add `size_hint()` test coverage

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/retry): add todo comments concerning eos

for now, a replaying body that will not yield trailers must be polled to
the `None` before reporting itself as reaching the end of the stream.

this isn't hugely important, but does affect some test control flow.

leave two todo comments so that if/when upgrading to hyper 1.0, it is
clear that these are not load-bearing or otherwise expected behavior,
should this behavior be rectified.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-30 16:00:57 -05:00
katelyn martin 8d3762065c
docs(http/retry): document `ReplayBody::poll_*()` panics (#3582)
a `ReplayBody<B>` demands a particular contract of its users: one must not poll two bodies in parallel. this is currently mentioned as an implicit assumption on an internal helper function, `acquire_state<'a>`, here:

https://github.com/linkerd/linkerd2-proxy/blob/main/linkerd/http/retry/src/replay.rs#L127-L131

```rust
    /// # Panics
    ///
    /// This panics if another clone has currently acquired the state, based on
    /// the assumption that a retry body will not be polled until the previous
    /// request has been dropped.
    fn acquire_state<'a>(
        state: &'a mut Option<BodyState<B>>,
        shared: &Mutex<Option<BodyState<B>>>,
    ) -> &'a mut BodyState<B> {
        state.get_or_insert_with(|| shared.lock().take().expect("missing body state"))
    }
```

this commit echoes this sentiment on the relevant public-facing parts of this middleware: its `Body` trait methods.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-30 15:58:16 -05:00
Scott Fleener 00cba97276
Include extra trace attributes from env (#3483)
This allows us to include arbitrary values from the k8s downward API beyond just the pod labels that are included in the trace attributes file.

See https://github.com/linkerd/linkerd2/pull/13544 for the corresponding control plane change.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-01-30 15:37:15 -05:00
dependabot[bot] 2471aadd4b
build(deps): bump tempfile from 3.15.0 to 3.16.0 (#3581)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.15.0 to 3.16.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.15.0...v3.16.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-30 10:20:56 -05:00
katelyn martin f1817f8423
refactor(http/retry): update more `Body::data()` calls (#3573)
pr's #3564 and #3567, 1eb822f2 and 32042783 respectively, replaced uses
of defunct `http_body::Body` trait methods — namely, `data()` and
`trailers()`.

this commit updates two remaining uses of `data()` that were missed
in this initial pass.

see linkerd/linkerd2#8733 for more information.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-29 18:26:55 -08:00
dependabot[bot] 3ffda3f5af
build(deps): bump bumpalo from 3.16.0 to 3.17.0 (#3575)
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.16.0 to 3.17.0.
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.16.0...3.17.0)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 09:53:39 -05:00
dependabot[bot] e48fe47ad2
build(deps): bump httparse from 1.9.5 to 1.10.0 (#3577)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.9.5 to 1.10.0.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.9.5...v1.10.0)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 09:53:26 -05:00
dependabot[bot] 9ce0578aca
build(deps): bump serde_json from 1.0.137 to 1.0.138 (#3576)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.137 to 1.0.138.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.137...v1.0.138)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 09:53:13 -05:00
dependabot[bot] ce6568d617
build(deps): bump libfuzzer-sys from 0.4.8 to 0.4.9 (#3578)
Bumps [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer) from 0.4.8 to 0.4.9.
- [Changelog](https://github.com/rust-fuzz/libfuzzer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/libfuzzer/compare/0.4.8...0.4.9)

---
updated-dependencies:
- dependency-name: libfuzzer-sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 09:52:55 -05:00
dependabot[bot] 58eade9810
build(deps): bump x509-parser from 0.16.0 to 0.17.0 (#3579)
Bumps [x509-parser](https://github.com/rusticata/x509-parser) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/rusticata/x509-parser/releases)
- [Changelog](https://github.com/rusticata/x509-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rusticata/x509-parser/compare/x509-parser-0.16.0...x509-parser-0.17.0)

---
updated-dependencies:
- dependency-name: x509-parser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 09:52:30 -05:00
katelyn martin 31d9e8f816
chore(deps/rand): update to `rand` v0.9.0 (#3574)
supersedes #3569.

this branch updates [`rand`](https://github.com/rust-random/rand) from 0.8.5 to 0.9.0.

- [release notes](https://github.com/rust-random/rand/releases)
- [changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [commits](https://github.com/rust-random/rand/compare/0.8.5...0.9.0)

note the changes to `rand::distr::weighted::Error`'s variants. see
https://github.com/rust-random/rand/pull/1382, and
https://github.com/rust-random/rand/pull/1470. in particular, this change:

https://github.com/rust-random/rand/pull/1382/files#diff-b0eb1b0ef894742b65e07f23af6cbeffae64ec8311adb6ea606603e978023e0cL116-R113

most other changes in this branch relate to the renaming of `thread_rng()` to `rng()`,
and `gen()` to `random()`.

---

* build(deps): bump rand from 0.8.5 to 0.9.0

Bumps [rand](https://github.com/rust-random/rand) from 0.8.5 to 0.9.0.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.9.0)

---
updated-dependencies:
- dependency-name: rand
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(exp-backoff): address `rand` breaking changes

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(pool/p2c): address `rand` breaking changes

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(distribute): address `rand` breaking changes

see https://github.com/rust-random/rand/pull/1382.

in particular, this part of the change:

https://github.com/rust-random/rand/pull/1382/files#diff-b0eb1b0ef894742b65e07f23af6cbeffae64ec8311adb6ea606603e978023e0cL116-R113

see also https://github.com/rust-random/rand/pull/1470.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/route): address `rand` breaking changes

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(exp-backoff): address `rand` breaking changes

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(deny.toml): skip previous `rand` dependencies

this addresses some ci errors related to duplicate dependencies:

```
error[duplicate]: found 2 duplicate entries for crate 'getrandom'
   ┌─ /github/workspace/Cargo.lock:75:1
   │
75 │ ╭ getrandom 0.2.15 registry+https://github.com/rust-lang/crates.io-index
76 │ │ getrandom 0.3.1 registry+https://github.com/rust-lang/crates.io-index
   │ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
   │
```

Signed-off-by: katelyn martin <kate@buoyant.io>

* review(distribute): add `use` statement

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-28 16:31:25 -05:00
dependabot[bot] 2062f0c982
build(deps): bump unicode-ident from 1.0.15 to 1.0.16 (#3568)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.15 to 1.0.16.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.15...1.0.16)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-28 12:01:54 -05:00
dependabot[bot] 271df709f0
build(deps): bump rustls-pki-types from 1.10.1 to 1.11.0 (#3572)
Bumps [rustls-pki-types](https://github.com/rustls/pki-types) from 1.10.1 to 1.11.0.
- [Release notes](https://github.com/rustls/pki-types/releases)
- [Commits](https://github.com/rustls/pki-types/compare/v/1.10.1...v/1.11.0)

---
updated-dependencies:
- dependency-name: rustls-pki-types
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-28 10:55:05 -05:00
dependabot[bot] 7477844520
build(deps): bump ryu from 1.0.18 to 1.0.19 (#3571)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.18 to 1.0.19.
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.18...1.0.19)

---
updated-dependencies:
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-28 10:54:54 -05:00
dependabot[bot] 6184a1a994
build(deps): bump cmake from 0.1.52 to 0.1.53 (#3570)
Bumps [cmake](https://github.com/rust-lang/cmake-rs) from 0.1.52 to 0.1.53.
- [Release notes](https://github.com/rust-lang/cmake-rs/releases)
- [Changelog](https://github.com/rust-lang/cmake-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cmake-rs/compare/v0.1.52...v0.1.53)

---
updated-dependencies:
- dependency-name: cmake
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-28 10:54:42 -05:00
katelyn martin 32042783d9
refactor(http/retry): port remaining `ReplayBody` tests to `Frame<T>` (#3567)
based on #3564. see linkerd/linkerd2#8733.

this branch upgrades the remaining parts of the `ReplayBody<B>` test
suite to poll bodies in terms of `Frame<T>`s. 

1eb822f2e6

---

* refactor(http/retry): `replays_trailers()` uses `Frame<T>`

see https://github.com/linkerd/linkerd2/issues/8733.

this commit upgrades a test that uses defunct `data()` and `trailers()`
futures.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): `trailers_only()` uses `Frame<T>`

see https://github.com/linkerd/linkerd2/issues/8733.

this commit upgrades a test that uses defunct `data()` and `trailers()`
futures.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/retry): `ForwardCompatibleBody::is_end_stream()`

this commit adds a method that exposes the inner `B`-typed body's
`is_end_stream()` trait method, gated for use in tests.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): `body_to_string()` helper uses `Frame<T>`

this is a refactoring commit, upgrading more of the replay body test to
work in terms of `Frame<T>`. this updates the `body_to_string()` helper
in particular.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): `chunk()` helper uses `Frame<T>`

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-27 15:45:31 -05:00
katelyn martin 1eb822f2e6
refactor(http/retry): port some `ReplayBody` tests to `Frame<T>` (#3564)
see linkerd/linkerd2#8733.

pr #3559 introduced some compatibility facilities to allow us to write
code in terms of `http_body_util::BodyExt::frame()`, front-running the
upgrade to be performed in #3504.

some `ReplayBody` tests use the defunct `data()` and `trailers()`
interfaces. this branch ports _two_ such unit tests. other tests are
saved for a fast follow-on, as the `chunk(..)` and `read_to_string(..)`
helpers will need some slightly more involved tweaks.

dd4fbcdb6e

---

* refactor(http/retry): `replays_trailers()` uses `Frame<T>`

see https://github.com/linkerd/linkerd2/issues/8733.

this commit upgrades a test that uses defunct `data()` and `trailers()`
futures.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): `trailers_only()` uses `Frame<T>`

see https://github.com/linkerd/linkerd2/issues/8733.

this commit upgrades a test that uses defunct `data()` and `trailers()`
futures.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-27 15:43:58 -05:00
dependabot[bot] 0484917159
build(deps): bump codecov/codecov-action from 5.3.0 to 5.3.1 (#3566)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.3.0 to 5.3.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](0da7aa657d...13ce06bfc6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 11:19:46 -08:00
dependabot[bot] 398348ec4d
build(deps): bump cpufeatures from 0.2.16 to 0.2.17 (#3565)
Bumps [cpufeatures](https://github.com/RustCrypto/utils) from 0.2.16 to 0.2.17.
- [Commits](https://github.com/RustCrypto/utils/compare/cpufeatures-v0.2.16...cpufeatures-v0.2.17)

---
updated-dependencies:
- dependency-name: cpufeatures
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 11:19:28 -08:00
katelyn martin dd4fbcdb6e
feat(http/retry): model `PeekTrailersBody<B>` with `Frame<T>` (#3559)
this branch contains a sequence of commits that refactor `PeekTrailersBody<B>`.

this branch is specifically focused on making this body middleware
forward-compatible with the 1.0 interface(s) of `http_body::Body` and
`http_body_util::BodyExt`.

it does this in two main steps: (1) temporarily vendoring `http_body::Frame<T>`
and providing a compatibility shim that provides a `frame()` method for a body,
and (2) modeling `PeekTrailersBody<B>` and its peeking logic in terms of this
`Frame<'a, T>` future.

---

* feat(http/retry): add `Frame<T>` compatibility facilities

this commit introduces a `compat` submodule to `linkerd-http-retry`.

this helps us frontrun the task of replacing all of the finicky control
flow in `PeekTrailersBody<B>` using the antiquated `data()` and
`trailers()` future combinators. instead, we can perform our peeking
in terms of an approximation of `http_body_util::BodyExt::frame()`.

to accomplish this, this commit vendors a copy of the `Frame<T>` type.
we can use this to preemptively model our peek body in terms of this
type, and move to the "real" version of it when we're upgrading in
pr #3504.

additionally, this commit includes a type called
`ForwardCompatibleBody<B>`, and a variant of the `Frame<'a, T>`
combinator. these are a bit boilerplate-y, admittedly, but the pleasant
part of this is that we have, in effect, migrated the trickiest body
middleware in advance of #3504. once we upgrade to http-body 1.0, all of
these types can be removed.

https://docs.rs/http-body-util/latest/http_body_util/trait.BodyExt.html#method.frame
https://docs.rs/http-body-util/0.1.2/src/http_body_util/combinators/frame.rs.html#10

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): `PeekTrailersBody<B>` uses `BodyExt::frame()`

this commit reworks `PeekTrailersBody<B>`.

the most important goal here is replacing the control flow of
`read_body()`, which polls a body using `BodyExt` future combinators
`data()` and `frame()` for up to two frames, with varying levels of
persistence depending on outcomes.

to quote #3556:

> the intent of this type is to only yield the asynchronous task
> responsible for reading the body once. depending on what the inner
> body yields, and when, this can result in combinations of: no data
> frames and no trailers, no data frames with trailers, one data frame
> and no trailers, one data frame with trailers, or two data frames.
> moreover, depending on which of these are yielded, the body will call
> .await some scenarios, and only poll functions once in others.
>
> migrating this to the Frame<T> and poll_frame() style of the 1.0 Body
> interface, away from the 0.4 interface that provides distinct
> poll_data() and poll_trailers() methods, is fundamentally tricky.

this means that `PeekTrailersBody<B>` is notably difficult to port
across the http-body 0.4/1.0 upgrade boundary.

this body middleware must navigate a number of edge conditions, and once
it _has_ obtained a `Frame<T>`, make use of conversion methods to
ascertain whether it is a data or trailers frame, due to the fact that
its internal enum representation is not exposed publicly. one it has
done all of that, it must do the same thing once more to examine the
second frame.

this commit uses the compatibility facilities and backported `Frame<T>`
introduced in the previous commit, and rewrites this control flow using
a form of the `BodyExt::frame()` combinator.

this means that this middleware is forward-compatible with http-body
1.0, which will dramatically simplify the remaining migration work to be
done in #3504.

see https://github.com/linkerd/linkerd2/issues/8733 for more information
and other links related to this ongoing migration work.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): mock body enforces `poll_trailers()` contract

this commit addresses a `TODO` note, and tightens the enforcement of a
rule defined by the v0.4 signature of the `Body` trait.

this commit changes the mock body type, used in tests, so that it will
panic if the caller improperly polls for a trailers frame before the
final data frame has been yielded.

previously, a comment indicated that we were "fairly sure" this was
okay. while that may have been acceptable in practice, the changes in
the previous commit mean that we now properly respect these rules.

thus, a panic can be placed here, to enforce that "[is] only be called
once `poll_data()` returns `None`", per the documentation.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): rename `PeekTrailersBody::Buffered`

<https://github.com/linkerd/linkerd2-proxy/pull/3559#discussion_r1928953710>

this is a nicer name than `Unknown` for this case. not to mention, we'll
want that name shortly to address the possibility of unknown frame
variants.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): encapsulate `Inner<B>` enum variants

this commit makes the inner enum variants private.

https://github.com/linkerd/linkerd2-proxy/pull/3559#discussion_r1928946521

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/retry): gracefully ignore unknown frames

https://github.com/linkerd/linkerd2-proxy/pull/3559#discussion_r1928963019

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-24 15:40:00 -05:00
dependabot[bot] 5d4314c8f6
build(deps): bump codecov/codecov-action from 5.2.0 to 5.3.0 (#3563)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](5a605bd927...0da7aa657d)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-24 12:08:59 -05:00
Zahari Dichev 3ab83ed3ff
feat(metrics)!: remove authority label on inbound metrics (#3547)
The `authority` label is influenced by `:authority` headers and can therefore
can substantially grow in cardinality, depending on traffic patterns.

This change completely removes the authority label from inbound metrics.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2025-01-24 08:50:55 -08:00
dependabot[bot] 1b5f7faac4
build(deps): bump unicode-ident from 1.0.14 to 1.0.15 (#3562)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.14 to 1.0.15.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.14...1.0.15)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-24 11:38:46 -05:00
dependabot[bot] e0f9d4519e
build(deps): bump codecov/codecov-action from 5.1.2 to 5.2.0 (#3560)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.1.2 to 5.2.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](1e68e06f1d...5a605bd927)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-23 12:54:52 -05:00
katelyn martin 907f895a8e
fix(http/retry): `is_end_stream()` is true for empty bodies (#3558)
this commit fixes a small, subtle bug in `PeekTrailersBody<B>`.

if wrapping an empty body, the peek body will inspect the wrong
`Option<T>` in the trailers field with the following type:

```rust
    /// The inner body's trailers, if it was terminated by a `TRAILERS` frame
    /// after 0-1 DATA frames, or an error if polling for trailers failed.
    ///
    /// Yes, this is a bit of a complex type, so let's break it down:
    /// - the outer `Option` indicates whether any trailers were received by
    ///   `WithTrailers`; if it's `None`, then we don't *know* if the response
    ///   had trailers, as it is not yet complete.
    /// - the inner `Result` and `Option` are the `Result` and `Option` returned
    ///   by `HttpBody::trailers` on the inner body. If this is `Ok(None)`, then
    ///   the body has terminated without trailers --- it is *known* to not have
    ///   trailers.
    trailers: Option<Result<Option<http::HeaderMap>, B::Error>>,
```

for an empty body, we *know* that there are no trailers, which means
that we have `Some(Ok(None))`.

consider also, the documentation of `is_end_stream()`:

> An end of stream means that both poll_data and poll_trailers will
> return None.
>
> A return value of false does not guarantee that a value will be
> returned from poll_stream or poll_trailers.

we can guarantee in this case that `poll_trailers()` will return
`Ok(None)` since we've already called it and proven that to be the case.
we *are* holding that value, after all.

this change will not affect any behavior w.r.t. what the peek body
yields, but it will mean that it reports `is_end_stream()` correctly
when it wraps an empty body.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-22 15:24:42 -05:00
Scott Fleener 4f0775d539
build(rustls): Upgrade tokio-rustls to 0.26 (#3557)
* Revert "Revert "chore(deps): Upgrade tokio-rustls to 0.26 (#3419)""

This reverts commit de25333e23.

* Expand the set of supported signature algorithms

During the rustls upgrade, it accidentally limited the set of supported signature algorithms to ECDSA256 signatures. This would cause the identity control plane proxy to reject all certify requests with BadSignature if an RSA certificate was used instead of ECDSA.

This updates the set of supported algorithms to most of the full set of what rustls+ring supports, minus a few legacy algorithms.

Tested by deploying to a local cluster and verifying the control plane comes up correctly and app-level networking works as expected.

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-01-22 14:07:18 -05:00
katelyn martin 399ab1dca4 feat(http/retry): unit test suite for `PeekTrailersBody<B>`
`PeekTrailersBody<B>` contains some subtle edge cases related to the
number of DATA frames yielded by the inner body, and how persistent it
will be about polling for TRAILERS frames.

for example, if it yields a DATA frame, it will not await trailers being
available, but it *will* do so if the inner body does not yield a DATA
frame. if a DATA frame is yielded, it will check for a TRAILERS frame,
but it must be immmediately available.

this is all subtle, and particularly subject to change with the upgrade
to http-body 1.0's frame-oriented `Body` interface.

so, this commit introduces a test suite for `PeekTrailersBody<B>`. it
includes assertions to confirm when the peek middleware can and cannot
observe the trailers.

some `TODO(kate)` comments are left where issues exist.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-22 12:56:32 -05:00
katelyn martin 05e71c9215 refactor(http/retry): refactor `PeekTrailersBody<B>` logic
this is a squashed commit containing the following:

---

refactor(http/retry): decompose `WithPeekTrailersBody<B>` type alias

this commit breaks this large type out into two halves.

this is a purely cosmetic change.

Signed-off-by: katelyn martin <kate@buoyant.io>

refactor(http/retry): `PeekTrailersBody` is pin projected

we must pass our `Pin<T>`'edness down to the inner `B`-typed body for
`PeekTrailersBody` to itself implement `http_body::Body`.

this commit tweaks the existing code to rely on the `pin-project`
library. this generates a `project()` method to pin inner fields whose
`poll_data()` and `poll_trailers()` functions we delegate to.

this is a noöp change.

Signed-off-by: katelyn martin <kate@buoyant.io>

refactor(http/retry): defer construction of `PeekTrailersBody<B>`

this commit refactors the polling logic in
`PeekTrailersBody<B>::read_response`.

this commit makes some subtle changes with the migration to hyper 1.0 in
mind, to make this function more easily portable to the new signature of
`http_body::Body`.

see https://github.com/linkerd/linkerd2/issues/8733 for more
information.

this commit defers the `Self` construction of the `PeekTrailersBody`
body. this means that the control flow does not need to reach through to
e.g. `body.inner` to poll the inner body being peeked. additionally, it
provides us with `let` bindings for the first data frame yielded, and
the trailers frame yielded thereafter.

this is largely cosmetic, but will make it easier to deal with the
additional matching we'll need to do when there is a single polling
function that yields us `Frame<D>` objects.

Signed-off-by: katelyn martin <kate@buoyant.io>

refactor(http/retry): `PeekTrailersBody` transforms `B`

this is a small structural change to the
`PeekTrailersBody::read_response()` function to facilitate writing some
unit tests.

rather than transforming a `Response<B>` into a
`Response<PeekTrailersBody<B>>`, we hoist the `Response::into_parts()`
and `Response::from_parts()` calls up. `read_response()` is renamed to
`read_body()`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-22 12:56:32 -05:00
katelyn martin de0317c79c docs(http/retry): document `PeekTrailersBody<B>` interfaces
this is a squashed commit containing the following:

---

docs(http/retry): document `PeekTrailersBody::inner`

Signed-off-by: katelyn martin <kate@buoyant.io>

docs(http/retry): document `PeekTrailersBody::peek_trailers()`

Signed-off-by: katelyn martin <kate@buoyant.io>

docs(http/retry): document `PeekTrailersBody::no_trailers()`

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-22 12:56:32 -05:00
katelyn martin 76b5f10a9e
refactor(http/upgrade): `Http11Upgrade` is `Clone` (#3540)
* refactor(http/upgrade): `Http11Upgrade::insert_half` matches on `self`

this is a noöp change, to set the stage for subsequent changes to the
internal model of `Http11Upgrade`.

this `inner` field will shortly be an option, and this will make it
easier to only follow these panicking branches when the inner lock is
`Some(_)`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/upgrade): `Http11Upgade` stores an `Option<T>`

this commit hinges on this change to the upgrade middleware's `inner`
field.

we still retain a reference-counted copy of the `Inner` state, but now
we may store `None` here.

```
 pub struct Http11Upgrade {
     half: Half,
-    inner: Arc<Inner>,
+    inner: Option<Arc<Inner>>,
 }
```

a new branch is added to the `insert_half` method that consumes the
"sender" and inserts an upgrade future; when this is `None` it will do
nothing, rather than panicking.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/upgrade): `Half` marker is `Copy`

this type is an empty flag to indicate whether an `Http11Upgrade`
extension corresponds to the server or client half of the upgrade
future channel.

this type is made copy, to facilitate making the `Http11Upgrade`
extension safely cloneable.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/upgrade): `Http11Upgrade` is `Clone`

this commit makes `Http11Upgrade` a cloneable type.

see <https://github.com/linkerd/linkerd2/issues/8733>.

in the 1.0 interface of the `http` crate, request and response
extensions must now satisfy a `Clone` bound.

`Http11Upgrade` was written before this was the case, and is very
intentionally designed around the idea that it *not* be cloneable.

`insert_half()` in particular could cause the proxy to panic if it were
to clone a request or response's extensions. it might call
`insert_half()` a second time, and discover that the `TryLock<T>` had
already been set.

moreover, holding on to a copy of the extensions would prevent the
`Drop` method for `Inner` from being called. This would cause
connections that negotiate an HTTP/1.1 upgrade to deadlock due to the
`OnUpgrade` futures never being polled, and failing to create a `Duplex`
that acts as the connection's I/O transport.

this commit makes use of the alterations to `Http11Upgrade` made in
previous commits, and adds a *safe* implementation of `Clone`. by
only shallowly copying the extension, we tie the upgrade glue to a
*specific* request/response.

the extension can be cloned, but any generated copies will be inert.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/upgrade): fix broken intradoc links

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(http/upgrade): add `thiserror` dependency

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): use `.await` syntax

`FutureExt::map_ok()` won't work if we try to return an error from this
block. the `and_then()` adaptor is used to chain futures, and also won't
work given a synchronous closure.

this can be done with the equivalent `.await` syntax, and leaves a nicer
hole for us to propagate other errors here, shortly.

Signed-off-by: katelyn martin <kate@buoyant.io>

* review(http/upgrade): propagate `insert_half()` failures

https://github.com/linkerd/linkerd2-proxy/pull/3540#discussion_r1924496977

Signed-off-by: katelyn martin <kate@buoyant.io>
Co-Authored-By: Oliver Gould <ver@buoyant.io>

* docs(http/upgrade): tweak comment

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2025-01-22 12:24:30 -05:00
dependabot[bot] b8d29a2fc6
build(deps): bump rustix from 0.38.42 to 0.38.44 (#3554)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.42 to 0.38.44.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.42...v0.38.44)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-22 11:04:03 -05:00
Oliver Gould d436b93d23
chore(http): rename http/version to http/variant (#3555)
The proxy::http::Version type is very similar to the HTTP crate's Version type,
though it is more constrained so that the proxy may exhaustively match on it.
This change renames the module to http::variant to avoid confusion with the HTTP
crate's Version type.

To disambiguate the HTTP version type, the proxy::http::Version type is renamed
to proxy::http::Variant.
2025-01-22 07:55:48 -08:00
Scott Fleener de25333e23 Revert "chore(deps): Upgrade tokio-rustls to 0.26 (#3419)"
This reverts commit bb6e9b7f94.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-01-21 16:27:37 -05:00
dependabot[bot] cfc0de7ab6
build(deps): bump symbolic-common from 12.13.2 to 12.13.3 (#3552)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.13.2 to 12.13.3.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.13.2...12.13.3)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 11:08:22 -05:00
dependabot[bot] af7cdf024f
build(deps): bump semver from 1.0.24 to 1.0.25 (#3551)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.24 to 1.0.25.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.24...1.0.25)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 11:08:11 -05:00
dependabot[bot] d5a78f7dbb
build(deps): bump serde_json from 1.0.135 to 1.0.137 (#3550)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.135 to 1.0.137.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.135...v1.0.137)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 11:08:01 -05:00
dependabot[bot] 965aacbbae
build(deps): bump symbolic-demangle from 12.13.1 to 12.13.3 (#3549)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.13.1 to 12.13.3.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.13.1...12.13.3)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 11:07:47 -05:00
dependabot[bot] 0dddce63b9
build(deps): bump uuid from 1.12.0 to 1.12.1 (#3548)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.12.0 to 1.12.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.12.0...1.12.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 11:07:37 -05:00
dependabot[bot] 52cc6cca7a
build(deps): bump valuable from 0.1.0 to 0.1.1 (#3545)
Bumps [valuable](https://github.com/tokio-rs/valuable) from 0.1.0 to 0.1.1.
- [Release notes](https://github.com/tokio-rs/valuable/releases)
- [Changelog](https://github.com/tokio-rs/valuable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/valuable/compare/v0.1.0...v0.1.1)

---
updated-dependencies:
- dependency-name: valuable
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 07:06:36 -08:00
dependabot[bot] ecb9ae9cb5
build(deps): bump DavidAnson/markdownlint-cli2-action (#3542)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 19.0.0 to 19.1.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](a23dae216c...05f32210e8)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 07:06:23 -08:00
dependabot[bot] b9247687c1
build(deps): bump prettyplease from 0.2.25 to 0.2.29 (#3544)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.25 to 0.2.29.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.25...0.2.29)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 07:05:04 -08:00
dependabot[bot] 4d6077c097
build(deps): bump indexmap from 2.7.0 to 2.7.1 (#3543)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.7.0 to 2.7.1.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.7.0...2.7.1)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 07:04:45 -08:00
dependabot[bot] 57b25b5f60
build(deps): bump ipnet from 2.10.1 to 2.11.0 (#3546)
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.10.1 to 2.11.0.
- [Release notes](https://github.com/krisprice/ipnet/releases)
- [Changelog](https://github.com/krisprice/ipnet/blob/master/RELEASES.md)
- [Commits](https://github.com/krisprice/ipnet/commits/2.11.0)

---
updated-dependencies:
- dependency-name: ipnet
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 07:04:31 -08:00
dependabot[bot] 46d39ffec3
build(deps): bump data-encoding from 2.6.0 to 2.7.0 (#3533)
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.6.0 to 2.7.0.
- [Commits](https://github.com/ia0/data-encoding/commits)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-17 15:56:28 -05:00
dependabot[bot] 07ae3a07b8
build(deps): bump log from 0.4.22 to 0.4.25 (#3536)
Bumps [log](https://github.com/rust-lang/log) from 0.4.22 to 0.4.25.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.22...0.4.25)

---
updated-dependencies:
- dependency-name: log
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-17 15:56:02 -05:00
dependabot[bot] 16ea024c55
build(deps): bump uuid from 1.11.0 to 1.12.0 (#3534)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.11.0...1.12.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-17 15:55:47 -05:00
dependabot[bot] 435cce6f97
build(deps): bump cc from 1.2.7 to 1.2.10 (#3539)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.7 to 1.2.10.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.7...cc-v1.2.10)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-17 15:17:21 -05:00
katelyn martin 10bb2852fc
refactor(http/retry): remove unused `ResponseWithPeekTrailers<S>` (#3541)
`ResponseWithPeekTrailers` wraps an inner service `S`.

upon inspection, it turns out that this structure is no longer used by
any code elsewhere in the project.

this commit removes `ResponseWithPeekTrailers`, its associated type
aliases, and its `tower::Service<T>` implementation.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-17 15:12:01 -05:00
Zahari Dichev 329bee2b3b
transport: fix wrong type in non-linux orig_dst_* method (#3538)
Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2025-01-16 19:15:18 +02:00
katelyn martin a4a55fa5fb
docs(http/upgrade): document `linkerd-http-upgrade` (#3531)
some aspects of `linkerd-http-upgrade` are incompatible with the 1.0
interface of the `http` crate (_see: hyperium/http#395,
linkerd/linkerd2#8733_).

this new bound requiring that extensions must now be cloneable motivated
me to read through this library's internals to gain a lucid
understanding of how it works, in order to understand how to gracefully
address
[this](https://github.com/linkerd/linkerd2-proxy/blob/main/linkerd/http/upgrade/src/upgrade.rs#L25-L26)
comment affixed to the `linkerd_http_upgrade::upgrade::Http11Upgrade`
request/response extension:

```rust
// Note: this relies on their only having been 2 Inner clones, so don't
// implement `Clone` for this type. [sic]
pub struct Http11Upgrade {
    half: Half,
    inner: Arc<Inner>,
}
```

broadly, this library deals with some moderately arcane corners of the
HTTP protocol family. the `Upgrade` header is not supported in HTTP/2,
and was not yet introduced in HTTP/1.0, so it is a feature specific to
HTTP/1.1. moreover, some behavior provided by this library falls into
parts of the spec(s) that we `MUST` uphold, and isn't currently well
documented.

this branch includes a sequence of commits adding documentation and
additional comments linking to, and quoting, the relevant parts of [RFC
9110](https://www.rfc-editor.org/rfc/rfc9110). some links to RFC 7231,
which was obsoleted by RFC 9110 since the original time of writing, are
additionally updated.

some comments also did not accurately describe internal logic, or
included typos, and are also updated.

---

* docs(http/upgrade): add crate-level docs, rfc link

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(http/upgrade): update link to obsolete rfc

rfc 9110 obsoletes the following rfc's: 2818, 7230, 7231, 7232, 7233,
7235, 7538, 7615, and 7694.

this updates a comment related to connection upgrade logic, linking to
the current rfc, 9110. this information now lives in section 9.3.6,
paragraph 12.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(http/upgrade): update incorrect comment

this function has since been renamed `halves()`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(http/upgrade): add comments to `wants_upgrade`

this adds a comment additionally clarifying that HTTP/2 does not support
upgrades.

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(http/upgrade): document `strip_connection_headers()`

this function performs some important behavior that we MUST implement,
as a proxy/intermediary.

to help elucidate the mandated behavior expected of us by the HTTP/1
specification, add documentation comments noting the related passages
from rfc 9110 § 7.6.1.

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(http/upgrade): fix typo in `Http11Upgrade` comment

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(http/upgrade): update incorrect comment

this comment is not true.

this commit updates it, reflecting the current state of the upgrade
body's `Drop` logic.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-16 10:36:13 -05:00
katelyn martin fed1e89a01
refactor(http/upgrade): internal interfaces are private (#3530)
the `linkerd-http-upgrade` crate supports HTTP/1.1 upgrades. currently, it
exposes a number of functions and types in its public interface that are
strictly internal helpers. this branch redefines various interfaces and fields
as private, to clarify the public interface of the crate.

---

* refactor(proxy/http): `h1::is_upgrade()` is private

this function is not used elsewhere, so it does not have to be
`pub(crate)`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/upgrade): `halves()` is private

this commit restricts `Http11Upgrade::halves` so that it is now a
private interface.

this is an internal interface that is not used elsewhere.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/upgrade): `Http11UpgradeHalves` is private

with `halves()` having been made private, this type is also not used by
other external code. we can make it, and its constituent fields,
private.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/upgrade): `UpgradeBody::upgrade` is private

this commit makes the `upgrade` field of the `UpgradeBody` type private.
it contains two pieces of state that are used in the `Drop`
implementation of an upgrade body.

because these are not accessed or modified elsewhere, this field can be
made private.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(http/upgrade): `UpgradeBody::new` is `pub(crate)`

this function is not, and *should* not, be used by external callers. we
install the `UpgradeBody` in `Service`.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-15 12:53:08 -05:00
dependabot[bot] 7b2fd18c51
build(deps): bump symbolic-common from 12.13.1 to 12.13.2 (#3529)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.13.1 to 12.13.2.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.13.1...12.13.2)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-15 06:00:48 -08:00
dependabot[bot] a0a3c40e98
build(deps): bump proc-macro2 from 1.0.92 to 1.0.93 (#3525)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.92 to 1.0.93.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.92...1.0.93)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-15 06:00:30 -08:00
dependabot[bot] 9608e2c516
build(deps): bump simple_asn1 from 0.6.2 to 0.6.3 (#3527)
Bumps [simple_asn1](https://github.com/acw/simple_asn1) from 0.6.2 to 0.6.3.
- [Commits](https://github.com/acw/simple_asn1/commits)

---
updated-dependencies:
- dependency-name: simple_asn1
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-15 06:00:11 -08:00
dependabot[bot] dc0ca33cbe
build(deps): bump tokio from 1.42.0 to 1.43.0 (#3526)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.42.0 to 1.43.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.42.0...tokio-1.43.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-15 05:59:52 -08:00
dependabot[bot] d7c7913b40
build(deps): bump syn from 2.0.95 to 2.0.96 (#3524)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.95 to 2.0.96.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.95...2.0.96)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 10:29:02 -05:00
dependabot[bot] 5af46e82ea
build(deps): bump linux-raw-sys from 0.4.14 to 0.4.15 (#3521)
Bumps [linux-raw-sys](https://github.com/sunfishcode/linux-raw-sys) from 0.4.14 to 0.4.15.
- [Commits](https://github.com/sunfishcode/linux-raw-sys/compare/v0.4.14...v0.4.15)

---
updated-dependencies:
- dependency-name: linux-raw-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 05:27:51 -08:00
dependabot[bot] bd4b0698bf
build(deps): bump thiserror from 2.0.10 to 2.0.11 (#3523)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.10 to 2.0.11.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.10...2.0.11)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 05:27:13 -08:00
dependabot[bot] 6a95fb6add
build(deps): bump rustls from 0.23.20 to 0.23.21 (#3522)
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.20 to 0.23.21.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.20...v/0.23.21)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 05:26:58 -08:00
katelyn martin e133da1813
chore(http/retry): use boxed bodies instead of `hyper::Body` (#3515)
see #8733.

the tests for the replay body use the `hyper::Body` type removed in the
1.0 release.

this commit replaces this with `BoxBody` where possible, and adds
comments with context about how to update code once upgrading to hyper
1.0.

see #3467 and #3468 which added `from_static()` and `empty()`,
respectively.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-10 11:19:57 -05:00
dependabot[bot] ef4bc91597
build(deps): bump serde_json from 1.0.133 to 1.0.135 (#3520)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.133 to 1.0.135.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.133...v1.0.135)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 09:58:09 -05:00
dependabot[bot] 7d077304c5
build(deps): bump symbolic-demangle from 12.12.4 to 12.13.1 (#3519)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.12.4 to 12.13.1.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.12.4...12.13.1)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 09:57:59 -05:00
dependabot[bot] e58fc17f24
build(deps): bump thiserror from 2.0.9 to 2.0.10 (#3518)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.9 to 2.0.10.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.9...2.0.10)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 09:57:50 -05:00
dependabot[bot] 07229ba1ee
build(deps): bump quote from 1.0.37 to 1.0.38 (#3517)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.37 to 1.0.38.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.37...1.0.38)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 09:57:43 -05:00
dependabot[bot] 406784f23f
build(deps): bump actions/upload-artifact from 4.5.0 to 4.6.0 (#3516)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](6f51ac03b9...65c4c4a1dd)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 09:57:33 -05:00
dependabot[bot] 8b64841fc1
build(deps): bump pin-project-lite from 0.2.15 to 0.2.16 (#3514)
Bumps [pin-project-lite](https://github.com/taiki-e/pin-project-lite) from 0.2.15 to 0.2.16.
- [Release notes](https://github.com/taiki-e/pin-project-lite/releases)
- [Changelog](https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project-lite/compare/v0.2.15...v0.2.16)

---
updated-dependencies:
- dependency-name: pin-project-lite
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 14:43:36 -05:00
dependabot[bot] c8ba4f7dd1
build(deps): bump thiserror from 2.0.8 to 2.0.9 (#3513)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.8...2.0.9)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 14:43:21 -05:00
dependabot[bot] 9f57bfe161
build(deps): bump serde from 1.0.216 to 1.0.217 (#3512)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.216 to 1.0.217.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.216...v1.0.217)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 14:43:07 -05:00
dependabot[bot] 5be73b04a7
build(deps): bump async-trait from 0.1.84 to 0.1.85 (#3511)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.84 to 0.1.85.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.84...0.1.85)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 14:42:58 -05:00
dependabot[bot] 4a5cf9c8cc
build(deps): bump softprops/action-gh-release from 2.2.0 to 2.2.1 (#3510)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](7b4da11513...c95fe14893)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-08 14:42:50 -05:00
dependabot[bot] aeea13307b
build(deps): bump tempfile from 3.14.0 to 3.15.0 (#3505)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.14.0 to 3.15.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.14.0...v3.15.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-07 10:37:02 -05:00
dependabot[bot] 4c3c46e142
build(deps): bump rustversion from 1.0.18 to 1.0.19 (#3507)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.18 to 1.0.19.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.18...1.0.19)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-07 10:36:49 -05:00
dependabot[bot] 0b7de7d0de
build(deps): bump pin-project from 1.1.7 to 1.1.8 (#3508)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.7 to 1.1.8.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.7...v1.1.8)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-07 10:36:21 -05:00
dependabot[bot] c869d2c16a
build(deps): bump rcgen from 0.12.1 to 0.13.2 (#3485)
* build(deps): bump rcgen from 0.12.1 to 0.13.2

Bumps [rcgen](https://github.com/rustls/rcgen) from 0.12.1 to 0.13.2.
- [Release notes](https://github.com/rustls/rcgen/releases)
- [Commits](https://github.com/rustls/rcgen/compare/v0.12.1...v0.13.2)

---
updated-dependencies:
- dependency-name: rcgen
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* use new api

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zahari Dichev <zaharidichev@gmail.com>
2025-01-07 14:54:47 +02:00
katelyn martin b07b0d88e3
chore(proxy/http): replace `hyper::Body` with `BoxBody` (#3480)
`UpgradeResponseBody` currently wraps a `hyper::Body`. this type is
removed in hyper 1.0.

this commit replaces this with a generic `B`-typed body.

see https://github.com/linkerd/linkerd2-proxy/pull/3479, which performs
the same change in `linkerd-http-upgrade`.

see https://github.com/linkerd/linkerd2/issues/8733 for more information
on upgrading to hyper 1.0.

Signed-off-by: katelyn martin <kate@buoyant.io>
2025-01-06 13:47:18 -05:00
Oliver Gould 612bf6779d
chore: bump dev from v44 to v45 (#3496)
Updates LLVM from 14 to 19.

We pin ubuntu to 24.04 to ensure compatibility.
2025-01-06 13:27:49 -05:00
Oliver Gould a4f0ab80b3
build(deps): update boring from 3.1.0 to 4.13.0 (#3495) 2025-01-06 12:37:39 -05:00
dependabot[bot] 63937f61f6
build(deps): bump glob from 0.3.1 to 0.3.2 (#3500)
Bumps [glob](https://github.com/rust-lang/glob) from 0.3.1 to 0.3.2.
- [Release notes](https://github.com/rust-lang/glob/releases)
- [Changelog](https://github.com/rust-lang/glob/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/glob/compare/0.3.1...v0.3.2)

---
updated-dependencies:
- dependency-name: glob
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-06 14:40:43 +00:00
dependabot[bot] c0c16cc3b2
build(deps): bump tj-actions/changed-files from 45.0.5 to 45.0.6 (#3501)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.5 to 45.0.6.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](bab30c2299...d6e91a2266)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-06 09:34:38 -05:00
dependabot[bot] 57eb4e3105
build(deps): bump syn from 2.0.94 to 2.0.95 (#3499)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.94 to 2.0.95.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.94...2.0.95)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-06 09:34:21 -05:00
dependabot[bot] 1554e9e35a
build(deps): bump cc from 1.2.5 to 1.2.7 (#3498)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.5 to 1.2.7.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.5...cc-v1.2.7)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-06 09:34:11 -05:00
dependabot[bot] c5e3ed04e5
build(deps): bump async-trait from 0.1.83 to 0.1.84 (#3497)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.83 to 0.1.84.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.83...0.1.84)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-06 09:34:01 -05:00
Scott Fleener 563dd3fd83 Use correct semantic conventions for trace labels
The OpenTelemetry spec defines the semantic conventions that HTTP services should use for the labels included in traces: https://opentelemetry.io/docs/specs/semconv/http/http-spans/

Previously, we were using an outdated version of this spec for the OpenCensus traces. This updates the labels to match the current spec.

The notable changes updates to the path for HTTP method and status code, the fields that include the URL parts, and more rigorously following the standard for propagating the Host header.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2025-01-06 08:45:50 -05:00
katelyn martin 387197e388
chore(hyper): upgrade to hyper 0.14.32 (#3472)
this commit upgrades to hyper 0.14.32, removing the manifest's `[patch]`
section.

hyperium/hyper#3796 backported a method we use when building http/2
connections. #3457 patched the workspace to rely on a git dependency
of hyper at commit `a24f0c0a`.

this work has been released in version 0.14.32.

this commit also changes `deny.toml`, removing the exception we carved
out for hyper in #3457.

for more information, see:

* hyperium/hyper#3796
* linkerd/linkerd2#8733
* https://github.com/hyperium/hyper/commits/0.14.x
* #3457
* 03f55779

Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2025-01-05 19:51:02 +00:00
dependabot[bot] af52f36a63
build(deps): bump anyhow from 1.0.94 to 1.0.95 (#3488)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.94 to 1.0.95.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.94...1.0.95)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-05 17:40:16 +00:00
dependabot[bot] b6dbe72465
build(deps): bump DavidAnson/markdownlint-cli2-action (#3492)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 18.0.0 to 19.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](eb5ca3ab41...a23dae216c)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-05 09:36:21 -08:00
dependabot[bot] 3b89e60ab3
build(deps): bump syn from 2.0.90 to 2.0.94 (#3494)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.90 to 2.0.94.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.90...2.0.94)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-05 09:36:10 -08:00
dependabot[bot] dbf072e839
build(deps): bump Swatinem/rust-cache from 2.7.5 to 2.7.7 (#3491)
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.5 to 2.7.7.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](82a92a6e8f...f0deed1e0e)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-05 09:35:52 -08:00
dependabot[bot] b59014be7e
build(deps): bump tinyvec from 1.8.0 to 1.8.1 (#3489)
Bumps [tinyvec](https://github.com/Lokathor/tinyvec) from 1.8.0 to 1.8.1.
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: tinyvec
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-05 09:35:37 -08:00
dependabot[bot] 53b279c29d
build(deps): bump object from 0.36.5 to 0.36.7 (#3486)
Bumps [object](https://github.com/gimli-rs/object) from 0.36.5 to 0.36.7.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.5...0.36.7)

---
updated-dependencies:
- dependency-name: object
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-05 09:34:29 -08:00
katelyn martin fcfde84a39
chore(http/upgrade): replace `hyper::Body` with `BoxBody` (#3479)
* chore(http/upgrade): replace `hyper::Body` with `BoxBody`

`hyper::Body` is removed in the 1.0 version.

this commit removes it from our upgrade facilities, using a generic body
parameter that defaults to BoxBody.

see <https://github.com/linkerd/linkerd2/issues/8733>.

Signed-off-by: katelyn martin <kate@buoyant.io>

* review(http/upgrade): remove frivolous `Unpin` bound

https://github.com/linkerd/linkerd2-proxy/pull/3479/files#r1894068885

in `main` this isn't currently pinned, so this was needed to add the `B`
parameter originally in development, but tweaking how we poll the body
(_see lines 70-80, below_) means this bound is indeed frivolous now.

this commit removes an extraneous `Unpin` bound.

Co-authored-by: Scott Fleener <scott@buoyant.io>
Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: Scott Fleener <scott@buoyant.io>
2024-12-20 11:53:07 -05:00
katelyn martin 81b43e5633
refactor(app/core): build.rs prints invalid proxy version (#3482)
if this build script panics due to an invalid proxy version environment
variable, the panic can be somewhat cryptic. a message saying
`LINKERD2_PROXY_VERSION must be semver` is printed, but the proxy
version that caused this is not shown.

this commit adds the version and the error to this panic message.

now, building with an invalid proxy version provides us with the
following:

```
; LINKERD2_PROXY_VERSION='invalid' cargo build -p linkerd-app-core
   Compiling linkerd-app-core v0.1.0 (/linkerd2-proxy/linkerd/app/core)
error: failed to run custom build command for `linkerd-app-core v0.1.0 (/linkerd2-proxy/linkerd/app/core)`
note: To improve backtraces for build dependencies, set the CARGO_PROFILE_DEV_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation.

Caused by:
  process didn't exit successfully: `/linkerd2-proxy/target/debug/build/linkerd-app-core-756fc82028bfbcc0/build-script-build` (exit status: 101)
  --- stdout
  cargo:rustc-env=GIT_SHA=e53b6b9d

  cargo:rustc-env=LINKERD2_PROXY_BUILD_DATE=2024-12-20T01:18:08Z

  --- stderr
  thread 'main' panicked at linkerd/app/core/build.rs:18:17:
  LINKERD2_PROXY_VERSION must be semver: version='invalid' error='unexpected character 'i' while parsing major version number'
```

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-20 11:18:39 -05:00
katelyn martin a1a57139b1 refactor(deps): define `linkerd2-proxy-api` using table (#3473)
this is a small cosmetic tweak to the cargo workspace manifest.

this defines the proxy api as a toml table, to help give us a more
natural place to hang the (inert) example of a git dependency used in
development.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-19 14:20:52 -05:00
katelyn martin 2fe2321743 chore(deps): define h2 as a workspace dependency (#3473)
this commit modifies the workspace manifest, defining h2 as a
workspace dependency.

no changes to the lockfile are made because this commit does not affect
the dependency graph of the project.

* linkerd/linkerd2#8733

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-19 14:20:52 -05:00
katelyn martin 0ff60aa1cb chore(deps): define bytes as a workspace dependency (#3473)
this commit modifies the workspace manifest, defining bytes as a
workspace dependency.

no changes to the lockfile are made because this commit does not affect
the dependency graph of the project.

* linkerd/linkerd2#8733

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-19 14:20:52 -05:00
katelyn martin 5687faa6cf chore(deps): define tonic, tonic-build as workspace dependencies (#3473)
this commit modifies the workspace manifest, defining tonic and
tonic-build as common workspace dependencies.

no changes to the lockfile are made because this commit does not affect
the dependency graph of the project.

* linkerd/linkerd2#8733

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-19 14:20:52 -05:00
katelyn martin b87455a9f7 chore(deps): define prost, prost-types as workspace dependencies (#3473)
this commit modifies the workspace manifest, defining prost and
prost-types as common workspace dependencies.

no changes to the lockfile are made because this commit does not affect
the dependency graph of the project.

* linkerd/linkerd2#8733

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-19 14:20:52 -05:00
dependabot[bot] 8fd2e7261c
build(deps): bump codecov/codecov-action from 5.1.1 to 5.1.2 (#3474)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](7f8b4b4bde...1e68e06f1d)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-19 12:52:09 -05:00
dependabot[bot] dad2aa98b2
build(deps): bump cc from 1.2.4 to 1.2.5 (#3475)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.4 to 1.2.5.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.4...cc-v1.2.5)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-19 12:51:58 -05:00
dependabot[bot] 9b6c1b962d
build(deps): bump symbolic-demangle from 12.12.3 to 12.12.4 (#3476)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.12.3 to 12.12.4.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.12.3...12.12.4)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-19 12:51:47 -05:00
dependabot[bot] 3390e1f628
build(deps): bump libc from 0.2.168 to 0.2.169 (#3477)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.168 to 0.2.169.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.169/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.168...0.2.169)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-19 12:51:33 -05:00
dependabot[bot] 9d0124be32
build(deps): bump symbolic-common from 12.12.3 to 12.12.4 (#3478)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.12.3 to 12.12.4.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.12.3...12.12.4)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-19 12:51:24 -05:00
dependabot[bot] 17e52f9645
build(deps): bump actions/upload-artifact from 4.4.3 to 4.5.0 (#3471)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.3 to 4.5.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](b4b15b8c7c...6f51ac03b9)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-18 15:09:13 -05:00
dependabot[bot] 20d5dd9f03
build(deps): bump thiserror from 2.0.7 to 2.0.8 (#3470)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.7...2.0.8)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-18 14:26:45 -05:00
katelyn martin deb92db9e3
refactor: move away from legacy `hyper::body::HttpBody` (#3467)
* refactor: move away from legacy `hyper::body::HttpBody`

this is an incremental step away from hyper 0.14's request and response
body interfaces, and towards the 1.0 body types. see
<https://github.com/linkerd/linkerd2/issues/8733> for more information
about upgrading to hyper 1.0.

hyper 0.14 provides a `hyper::body::Body` that is removed in the 1.0
interface. `hyper-util` now provides a workable default body type. hyper
0.14 reëxports `http_body::Body` as `HttpBody`. hyper 1.0 reëxports this
trait as `hyper::body::Body` without any renaming.

this commit moves application code away from hyper's legacy `Body` type
and the `HttpBody` trait alias. this commit moves assorted interfaces
towards the boxed `BoxBody` type instead. when possible, code is tweaked
such that it refers to the reëxport in `linkerd-proxy-http`, rather than
directly through `hyper`.

NB: this commit is based upon #3466.

Signed-off-by: katelyn martin <kate@buoyant.io>

* feat(http/box): `BoxBody::from_static` constructor

this commit relates to review feedback offered here:
https://github.com/linkerd/linkerd2-proxy/pull/3467#discussion_r1888979001

it is slightly ungainly to place a static string into a BoxBody,
something that is a fairly common pattern throughout e.g. our admin
server.

to help nudge the compiler to infer a `B: Body` of `String`, various
code follows a common convention of calling e.g.
`BoxBody:🆕:<String>("ready\n".into())` or,
`BoxBody::new("ready\n".to_string())`.

this commit helps reduce that boilerplate by adding a `from_static(..)`
constructor that accepts a static string.

```rust
    /// Returns a [`BoxBody`] with the contents of a static string.
    pub fn from_static(body: &'static str) -> Self {
        Self::new(body.to_string())
    }
```

Co-authored-by: Scott Fleener <scott@buoyant.io>
Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/admin): outline json bytes body construction

see <https://github.com/linkerd/linkerd2-proxy/pull/3467#discussion_r1888980453>.

@sfleen points out this unfortunate part of our diff:

```diff
-           .body(json.into())
+           .body(BoxBody::new(http_body::Full::new(bytes::Bytes::from(json))))
```

this *is* a bit of an unfortunate edge, where boxing up a body feels
especially cumbersome.

this commit takes an attempt at tweaking the function in question so
that this large nested expression reads a bit nicer.

first, to justify why this gets a little more involved: hyper will no
longer provide the `Body` type after 1.0, so we are tasked with
providing our own body. for our purposes, `Full` works because we have a
single chunk of bytes in hand.

in order to create a `Full`, we must provide a `D: Buf`, which can be
satisfied by the following types:
<https://docs.rs/bytes/1.6.0/bytes/buf/trait.Buf.html#foreign-impls>

most simply, we can cast our vector of bytes into a `Bytes`.

with all of this in hand, we can hoist this creation of the body up out
of the `match` arm, and use `Result::map` to apply these constructors in
sequential order:

```rust
    // Serialize the value into JSON, and then place the bytes in a boxed response body.
    let json = serde_json::to_vec(val)
        .map(Bytes::from)
        .map(http_body::Full::new)
        .map(BoxBody::new);
```

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
Co-authored-by: Scott Fleener <scott@buoyant.io>
2024-12-17 14:53:17 -05:00
katelyn martin 35e7316f10
feat(http/box): `BoxBody::empty()` creates an empty body (#3468)
hyper 0.14's body type provides an `empty()` method that can be used to
construct an empty request or response body.

this commit proposes an equivalent method for `BoxBody`. while it is
semantically equivalent to `BoxBody::default()`, it can be helpful to
clarify that this constructs an empty body.

<https://docs.rs/hyper/0.14.31/hyper/body/struct.Body.html#method.empty>

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-17 13:27:30 -05:00
katelyn martin ca50d6bb75
chore(cargo.toml): define http, http-body as a workspace dependencies (#3466)
this is a follow-up to #3456, addressing a suggestion that was made
during review:

- <https://github.com/linkerd/linkerd2-proxy/pull/3456#pullrequestreview-2502446232>
- <https://github.com/linkerd/linkerd2/issues/8733>

this commit modifies the workspace manifest, defining http and http-body
as common workspace dependencies.

no changes to the lockfile are made because this commit does not affect
the dependency graph of the project.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-17 07:46:01 -05:00
katelyn martin 7bbfc8ec46
docs(app/test): fix unresolved `SendRequest` links (#3465)
this commit fixes some warnings that are currently present in `main`
when building the project's docs, by mending two broken doc links.

see:
- 42fe4cf66
- <https://github.com/linkerd/linkerd2/issues/8733>

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-16 10:10:20 -05:00
dependabot[bot] 489e1e4faa
build(deps): bump rustls-pki-types from 1.10.0 to 1.10.1 (#3464)
Bumps [rustls-pki-types](https://github.com/rustls/pki-types) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/rustls/pki-types/releases)
- [Commits](https://github.com/rustls/pki-types/compare/v/1.10.0...v/1.10.1)

---
updated-dependencies:
- dependency-name: rustls-pki-types
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-16 07:01:11 -08:00
dependabot[bot] 9a143c0ce7
build(deps): bump cc from 1.2.3 to 1.2.4 (#3462)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.3...cc-v1.2.4)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-16 09:32:22 -05:00
dependabot[bot] 752d14319e
build(deps): bump thiserror from 2.0.6 to 2.0.7 (#3463)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.6...2.0.7)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-16 09:32:03 -05:00
katelyn martin ea5136268d
chore(proxy/http): address hyper deprecations in `ServeHttp<N>` (#3459)
see linkerd/linkerd2#8733 for more information on upgrading to hyper 1.0.

this commit is based upon #3456, and #3457.

this commit is also contingent upon hyperium/hyper#3796, which backports
the server connection builder's `max_pending_accept_reset_streams()`
method.

this commit addresses hyper deprecations in `ServeHttp<N>`, which
defines a reusable HTTP/1 and HTTP/2 server for the linkerd proxy.

essentially, this commit replaces the singular `Http<E>` with a pair of
http/1 and http/2 specific connection `Builder`s. method names no longer
have `http2_*` prefixes, otherwise nothing about the connection setup
has been changed. in the `Service` implementation, we delegate to the
appropriate builder based upon the protocol version.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-13 16:54:40 +00:00
katelyn martin f2ad745200
chore(ci): remove duplicate `connect_and_accept_http1(..)` function (#3461)
this commit removes a duplicate function that was errantly defined, due
to some issues when merging previous (interdependent) pr's.

see
- #3455
- #3454
- linkerd/linkerd2#8733

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-13 16:38:42 +00:00
katelyn martin 03f557791c
chore(hyper): upgrade hyper to include hyperium/hyper#3796 (#3457)
* chore(hyper): define hyper as a workspace dependency

this commit alters various crates' manifests, pointing to a common
workspace-level hyper dependency.

note that the lockfile is not altered, this commit does *not* affect the
version of hyper used, or have any other affect on the dependency graph.
this will make future maintenance, upgrading, and patching of our hyper
dependency marginally easier.

see linkerd/linkerd2#8733 for more information on upgrading to hyper
1.0.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(hyper): upgrade hyper to include hyperium/hyper#3796

this commit bumps the version of the workspace's hyper dependency to
include hyperium/hyper#3796, which backports the server connection
builder's `max_pending_accept_reset_streams()` method.

see linkerd/linkerd2#8733 for more information on upgrading to hyper 1.0.

this commit is based upon #3456.

to show the hyper commit in the context of the git log:

```sh
; basename $(pwd)
hyper

; git remote get-url upstream
git@github.com:hyperium/hyper.git

; git log --oneline --decorate 0.14.x -5
a24f0c0a (HEAD -> 0.14.x, upstream/0.14.x) feat(server): backport `max_pending_accept_reset_streams()` to builder (#3796)
96550840 chore(ci): pin hashbrown for MSRV job (#3797)
7829148b (tag: v0.14.31) v0.14.31
97b595e5 perf(http1): improve parsing of sequentially partial messages
739d5e63 chore(ci): pin some deps for MSRV job
```

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(deny.toml): add `hyperium/hyper` to git allowlist

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-13 11:16:15 -05:00
katelyn martin c740b6d872
chore(hyper): define hyper as a workspace dependency (#3456)
this commit alters various crates' manifests, pointing to a common
workspace-level hyper dependency.

note that the lockfile is not altered, this commit does *not* affect the
version of hyper used, or have any other affect on the dependency graph.
this will make future maintenance, upgrading, and patching of our hyper
dependency marginally easier.

see linkerd/linkerd2#8733 for more information on upgrading to hyper
1.0.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-13 11:15:33 -05:00
katelyn martin f9e65f835d
chore(fuzz): address hyper deprecations in fuzz tests (#3455)
* chore(app/inbound): address hyper deprecations in http/1 tests

this is a follow-up commit related to 24dc5d8a (#3445).

see <https://github.com/linkerd/linkerd2/issues/8733> for more
information on upgrading to hyper 1.0.

---

this addresses hyper deprecations in the http/1 tests for the inbound
proxy.

prior, we made use of `tower::ServiceExt::oneshot`, which consumes a
service and drops it after sending a request and polling the response
future to completion.

<https://docs.rs/tower/0.5.2/src/tower/util/oneshot.rs.html#96-100>

tower is not a 1.0 library yet, so `SendRequest` does not provide an
implementation of `tower::Service` in hyper's 1.0 interface:

- <https://docs.rs/hyper/0.14.31/hyper/client/conn/struct.SendRequest.html#impl-Service%3CRequest%3CB%3E%3E-for-SendRequest%3CB%3E>
- <https://docs.rs/hyper/1.5.1/hyper/client/conn/http1/struct.SendRequest.html#trait-implementations>

consequentially, we must drop the sender ourselves after receiving a
response now.

---

this commit *also* addresses hyper deprecations in the http/1 downgrade
tests for the inbound proxy.

because these tests involve a http/2 client and an http/1 server, we
take the choice of inlining the body of
`http_util::connect_and_accept()` rather than introducing a new, third
`http_util::connect_and_accept_http_downgrade()` function.

we will refactor these helper functions in follow-on commits.

NB: because `ContextError` is internal to the `linkerd-app-test` crate,
we do not wrap the errors. these are allegedly used by the fuzzing tests
(_see f.ex #986 and #989_), but for our purposes with respect to the
inbound proxy we can elide them rather than making `ctx()` a public
method.

---

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): remove unused `http_util::connect_and_accept(..)`

this removes `connect_and_accept(..)`. this will break fuzzing builds,
but it is not used elsewhere.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(fuzz): address hyper deprecation in inbound fuzz tests

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(fuzz): address preëxisting fuzz breakage

this commit addresses other breakage found in the fuzz tests, tied to
other previous work.

after these changes, one can observe that the fuzz tests build and run
once more by running the following:

```sh
cargo +nightly fuzz run --fuzz-dir=linkerd/app/inbound/fuzz/ fuzz_target_1
```

Signed-off-by: katelyn martin <kate@buoyant.io>

* nit(fuzz): remove stray newline from manifest

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-13 11:14:10 -05:00
katelyn martin 42fe4cf666
chore(app/inbound): address hyper deprecations in http/1 tests (#3454)
this is a follow-up commit related to 24dc5d8a (#3445).

see <https://github.com/linkerd/linkerd2/issues/8733> for more
information on upgrading to hyper 1.0.

---

this addresses hyper deprecations in the http/1 tests for the inbound
proxy.

prior, we made use of `tower::ServiceExt::oneshot`, which consumes a
service and drops it after sending a request and polling the response
future to completion.

<https://docs.rs/tower/0.5.2/src/tower/util/oneshot.rs.html#96-100>

tower is not a 1.0 library yet, so `SendRequest` does not provide an
implementation of `tower::Service` in hyper's 1.0 interface:

- <https://docs.rs/hyper/0.14.31/hyper/client/conn/struct.SendRequest.html#impl-Service%3CRequest%3CB%3E%3E-for-SendRequest%3CB%3E>
- <https://docs.rs/hyper/1.5.1/hyper/client/conn/http1/struct.SendRequest.html#trait-implementations>

consequentially, we must drop the sender ourselves after receiving a
response now.

---

this commit *also* addresses hyper deprecations in the http/1 downgrade
tests for the inbound proxy.

because these tests involve a http/2 client and an http/1 server, we
take the choice of inlining the body of
`http_util::connect_and_accept()` rather than introducing a new, third
`http_util::connect_and_accept_http_downgrade()` function.

we will refactor these helper functions in follow-on commits.

NB: because `ContextError` is internal to the `linkerd-app-test` crate,
we do not wrap the errors. these are allegedly used by the fuzzing tests
(_see f.ex #986 and #989_), but for our purposes with respect to the
inbound proxy we can elide them rather than making `ctx()` a public
method.

---

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-13 11:13:48 -05:00
katelyn martin e9e2a31afd
chore(deny.toml): remove stale `idna` directive (#3458)
if one runs `cargo deny check` on the current state of main, or checks
deny logs in ci, one observes this waning:

```sh
$ cargo deny check
warning[unnecessary-skip]: skip 'idna' applied to a crate with only one version
   ┌─ /path/to/linkerd/linkerd2-proxy/deny.toml:63:15
   │
63 │     { name = "idna" },
   │               ━━━━ unnecessary skip configuration

advisories ok, bans ok, licenses ok, sources ok
```

today, our dependency graph only contains one version of `idna`, which
has since release a 1.0 version:

```sh
$ cargo tree -i -p idna
idna v1.0.3
├── hickory-proto v0.24.2
└── url v2.5.4
```

this commit updates the `deny.toml` file, removing this directive to
permit duplicate versions, now that this is no longer the case.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-13 06:19:21 -08:00
dependabot[bot] 48ce9a9817
build(deps): bump semver from 1.0.23 to 1.0.24 (#3460)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.23 to 1.0.24.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.23...1.0.24)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 06:18:52 -08:00
dependabot[bot] 0cfbda69b8
build(deps): bump rustls from 0.23.19 to 0.23.20 (#3453)
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.19 to 0.23.20.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.23.19...v/0.23.20)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-12 10:48:38 -08:00
Scott Fleener bb6e9b7f94
chore(deps): Upgrade tokio-rustls to 0.26 (#3419)
chore(deps): Upgrade tokio-rustls to 0.26

This bumps rustls itself from 0.21 to 0.23, which comes with a few breaking API changes. Most of these are limited to types being moved or renamed, or how the certificate verifiers are constructed.

Signed-off-by: Scott Fleener <scott@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-12-11 17:37:03 +00:00
katelyn martin 24dc5d8a1b
chore(app/inbound): address hyper deprecations in http/2 tests (#3445)
this addresses deprecations in inbound proxy tests that should migrate
to hyper's new http/2 client connection builder.

http/1 tests will be upgraded in a follow-on commit.

the `connect_and_accept(..)` helper function is copied, and duplicated
into an http/2 version.

see <https://github.com/linkerd/linkerd2/issues/8733> for more
information on upgrading to hyper 1.0.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-11 11:37:25 -05:00
katelyn martin 307dbc447a
chore(hyper): address miscellaneous deprecations (#3444)
* chore(proxy/tap): address `Http` deprecation

this is a trivial deprecation fix, for
<https://github.com/linkerd/linkerd2/issues/8733>.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/outbound): address `Http` deprecation

see <https://github.com/linkerd/linkerd2/issues/8733>.

this updates some test code to use the backported server connection
interfaces.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/integration): address `conn::Builder` deprecation

this commit addresses uses of deprecated hyper interfaces in the
`linkerd-app-integration` crate.

see <https://github.com/linkerd/linkerd2/issues/8733>.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/inbound): remove stale `deprecated` allowance

this was fixed in a previous commit.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-11 11:37:02 -05:00
katelyn martin f31cf1f4f7
chore(gitignore): ignore `.cargo` directory (#3451)
this commit supercedes #3443.

we use the kubert crate to export a collection of metrics measuring the
behavior of our asynchronous tokio runtime.

in order for this crate to compile, one must set a compile-time flag.
this can be done either by setting the RUSTFLAGS environment variable,
or via a toml file in .cargo/config.toml.

helpful links:

- <https://github.com/olix0r/kubert?tab=readme-ov-file#kubert-prometheus-tokio>
- <https://docs.rs/tokio-metrics/latest/tokio_metrics/>
- <https://doc.rust-lang.org/cargo/reference/config.html#buildrustflags>

this commit adds `.cargo` to the repository's gitignore, so that people
may freely modify cargo configuration as needed when building the
project from source.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-11 11:35:07 -05:00
dependabot[bot] d2cc5c975d
build(deps): bump EmbarkStudios/cargo-deny-action from 1.6.3 to 2.0.4 (#3412)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.6.3 to 2.0.4.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](3f4a782664...e2f4ede4a4)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-11 15:37:08 +00:00
dependabot[bot] b1a43854d8
build(deps): bump hickory-proto from 0.24.1 to 0.24.2 (#3447)
Bumps [hickory-proto](https://github.com/hickory-dns/hickory-dns) from 0.24.1 to 0.24.2.
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/v0.24.2/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.1...v0.24.2)

---
updated-dependencies:
- dependency-name: hickory-proto
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-11 07:07:15 -08:00
dependabot[bot] 37ddadafb5
build(deps): bump hickory-resolver from 0.24.1 to 0.24.2 (#3448)
Bumps [hickory-resolver](https://github.com/hickory-dns/hickory-dns) from 0.24.1 to 0.24.2.
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/v0.24.2/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.1...v0.24.2)

---
updated-dependencies:
- dependency-name: hickory-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-11 07:06:43 -08:00
dependabot[bot] 8cdbe70491
build(deps): bump softprops/action-gh-release from 2.1.0 to 2.2.0 (#3450)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](01570a1f39...7b4da11513)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-11 07:06:20 -08:00
dependabot[bot] 356eb4b669
build(deps): bump serde from 1.0.215 to 1.0.216 (#3449)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.215 to 1.0.216.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.215...v1.0.216)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-11 07:05:59 -08:00
dependabot[bot] e0e1daddb0
build(deps): bump governor from 0.7.0 to 0.8.0 (#3446)
Bumps [governor](https://github.com/boinkor-net/governor) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/boinkor-net/governor/releases)
- [Changelog](https://github.com/boinkor-net/governor/blob/master/release.toml)
- [Commits](https://github.com/boinkor-net/governor/compare/v0.7.0...v0.8.0)

---
updated-dependencies:
- dependency-name: governor
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-11 07:05:36 -08:00
dependabot[bot] 9c60588128
build(deps): bump rustix from 0.38.40 to 0.38.42 (#3441)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.40 to 0.38.42.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.40...v0.38.42)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-10 10:42:11 -05:00
dependabot[bot] e0ad7dc4e9
build(deps): bump thiserror from 2.0.4 to 2.0.6 (#3442)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.4 to 2.0.6.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.4...2.0.6)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-10 10:41:54 -05:00
katelyn martin d65fe07d31
refactor(app/test): address hyper deprecations in test helpers (#3433)
this commit changes the `connect_and_accept(..)` helper function used in
the proxy's unit tests, altering its logic such that it now runs
background tasks inside of a `JoinSet`.

then, subsequent commits hoist code out of `run_proxy()` and `connect_client()`, and consolidate our `async move {}` blocks. this both simplifies the control flow of this test infrastructure, but also addresses some more hyper deprecations.

for more information about our progressing upgrade to hyper 1.0, see https://github.com/linkerd/linkerd2/issues/8733.

NB: this branch is based upon #3432.

---

* refactor(app/inbound): remove unused `Http` parameter

this was not being flagged as an unused variable, due to the
`#[instrument]` attribute. (😉 _it's used as a field in the generated
span!_)

`connect_timeout(..)` doesn't use its parameter.

to address some deprecations, and avoid the need for polymorphism /
refactoring related to http/1 and http/2 connections being represented
as distinct types in the hyper 1.0 api, we remove it.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/inbound): address `server::conn::Http` deprecations

this addresses hyper 1.0 deprecations in the server side of the inbound
proxy's http unit test suite logic.

see <https://github.com/linkerd/linkerd2/issues/8733> for more
information.

the client end of this change ends up being slightly involved, due to
changes that will need to be made in `linkerd_app_test::http_util`.
accordingly, those deprecations will be addressed in a subsequent
commit.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): reorder and document test helpers

this moves the public `connect_client(..)` function up to the top of the
group of functions, and adds a documentation comment explaining its
purpose.

a todo comment is left noting that this can be refactored to use tokio's
new `JoinSet` type.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): briefly defer `spawn()`ing tasks

this is a small tweak, defering the call to `tokio::spawn(..)` to make
using `JoinSet` easier.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): use `JoinSet` for background tasks

this commit changes the `connect_and_accept(..)` helper function used in
the proxy's unit tests, altering its logic such that it now runs
background tasks inside of a `JoinSet`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): tweak proxy process

this commit makes two minor changes to the `run_proxy()` helper
function:

* remove a frivolous `.map(|_| ())` on a result that already had a tuple
  `Ok` type.

* use `ServiceExt::oneshot` for brevity.

this should have no effect on the tests, we're just golfing things down
a bit.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): hoist `instrument(..)` calls

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): remove `run_proxy(..)`

we've nudged this along well enough that this function can now
reasonably be removed.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): remove `connect_client(..)`

and once more, we remove a helper function that isn't doing quite so
much work, and whose signature contains deprecated hyper 1.0 types.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): consolidate anonymous futures

we create `async move {}` blocks in multiple places, without any clear
benefit.

this commit consolidates them into one place: when we spawn a task onto
the `JoinSet`.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-09 14:44:01 -05:00
dependabot[bot] 0ccfd756a5
build(deps): bump tj-actions/changed-files from 45.0.4 to 45.0.5 (#3434)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.4 to 45.0.5.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](4edd678ac3...bab30c2299)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 08:56:16 -08:00
katelyn martin 54407b94a9
chore(app/inbound): address `server::conn::Http` deprecations (#3432)
this addresses hyper 1.0 deprecations in the server side of the inbound
proxy's http unit test suite logic.

see linkerd/linkerd2#8733 for more
information.

the client end of this change ends up being slightly involved, due to
changes that will need to be made in linkerd_app_test::http_util.
accordingly, those deprecations will be addressed in a subsequent
commit.

---

* refactor(app/inbound): remove unused `Http` parameter

this was not being flagged as an unused variable, due to the
`#[instrument]` attribute. (😉 _it's used as a field in the generated
span!_)

`connect_timeout(..)` doesn't use its parameter.

to address some deprecations, and avoid the need for polymorphism /
refactoring related to http/1 and http/2 connections being represented
as distinct types in the hyper 1.0 api, we remove it.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(app/inbound): address `server::conn::Http` deprecations

this addresses hyper 1.0 deprecations in the server side of the inbound
proxy's http unit test suite logic.

see <https://github.com/linkerd/linkerd2/issues/8733> for more
information.

the client end of this change ends up being slightly involved, due to
changes that will need to be made in `linkerd_app_test::http_util`.
accordingly, those deprecations will be addressed in a subsequent
commit.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-09 08:55:29 -08:00
dependabot[bot] b1d7ded451
build(deps): bump fastrand from 2.2.0 to 2.3.0 (#3439)
Bumps [fastrand](https://github.com/smol-rs/fastrand) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/smol-rs/fastrand/releases)
- [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/fastrand/compare/v2.2.0...v2.3.0)

---
updated-dependencies:
- dependency-name: fastrand
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 08:03:26 -08:00
dependabot[bot] 5de51f2def
build(deps): bump cc from 1.2.2 to 1.2.3 (#3438)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.2...cc-v1.2.3)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 10:00:24 -05:00
dependabot[bot] 604cbcd942
build(deps): bump libc from 0.2.167 to 0.2.168 (#3437)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.167 to 0.2.168.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.168/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.167...0.2.168)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 10:00:15 -05:00
dependabot[bot] 1653b08068
build(deps): bump thiserror from 1.0.68 to 2.0.4 (#3417)
* build(deps): bump thiserror from 1.0.68 to 2.0.4

Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.68 to 2.0.4.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.68...2.0.4)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deny): allow duplicate versions of thiserror

* chore(detect): fix thiserror usage

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-12-06 19:53:44 +00:00
katelyn martin a39eb30614
refactor(app/test): minor tweaks to `linkerd-app-test` (#3428)
while handling the upgrade to hyper 1.0, i noticed some small changes
that'd be nice to make.

most importantly, with respect to
https://github.com/linkerd/linkerd2/issues/8733, this commit outlines
`http_util::http_request()`. hyper 1.0 provides version specific
`SendRequest` types for HTTP/1 and HTTP/2, so rather than try to be
polymorphic across both senders, we send the request at the call site.

two other commits remove `pub` attributes for functions that aren't
called externally. we'll address `run_proxy()` and `connect_client()` in
a subsequent PR, because the dependent tests use both HTTP/1 and HTTP/2. 

---

* refactor(app/test): remove `pub` from `http_util::connect_client()`

this is not used elsewhere. it can be private.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): remove `pub` from `http_util::run_proxy()`

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): remove `http_util::http_request()`

this function abstracts over one statement, at the cost of needing to
name the `SendRequest` type.

because hyper's 1.0 interface provides multiple `SendRequest` types
based on the HTTP version being used. to avoid needing to deal with
polymorphism, and to implicitly address a function-level allowance of
deprecated types, we remove this function and move this statement to the
function's call sites.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): collect bodies with `String::from_utf8`

this function previously called `std::str::from_utf8`, before calling
`str::to_owned` on the result. because of this, there is a bit of extra
gymnastics, passing a `&body[..]` slice along after collecting the body
bytes.

this is both more baroque and less performant. this commit updates the
call, using `String::from_utf8` to collect the body, sparing a needless
`to_owned()`/`clone()` call.

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(app/test): document `io` submodule

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app/test): remove duplicate `io` reëxport

the same `pub use` bundle is found in the parent `lib.rs`.

this removes it, and refers to the same `mod io {}` defined above.

Signed-off-by: katelyn martin <kate@buoyant.io>

* review(app/inbound): use `ServiceExt::oneshot(..)`

https://github.com/linkerd/linkerd2-proxy/pull/3428#discussion_r1873653091

we can simplify these statements sending requests, by using
`ServiceExt::oneshot(..)`.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-06 12:14:37 -05:00
katelyn martin 2989101b6d
chore(proxy/http): address `hyper::client::conn::Builder` deprecations (#3427)
this branch contains a sequence of commits that focus on addressing
deprecation warnings related to hyper::client::conn::Builder. this
branch enables the backports feature, and then replaces some of these
builders with the backported, http/2 specific,
hyper::client::conn::http2::Builder type.

relates to linkerd/linkerd2#8733.

---

* chore(proxy/http): address `h2::Connection` deprecation

this commit updates `Connection<B>` to use the backported, http/2
specific `SendRequest` type.

this commit enables the `backports` feature flag in the `hyper`
dependency.

Signed-off-by: katelyn martin <kate@buoyant.io>

* chore(proxy/http): address `server::tests` deprecations

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): consolidate connect functions

`connect()` is never called elsewhere. let's avoid the misdirection and
move it into the body of `connect_h2()`.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-06 11:31:17 -05:00
dependabot[bot] c8f7ca143f
build(deps): bump codecov/codecov-action from 5.0.4 to 5.1.1 (#3429)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.0.4 to 5.1.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](985343d705...7f8b4b4bde)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-06 08:18:24 -08:00
dependabot[bot] 821813c7ed
build(deps): bump tokio-stream from 0.1.16 to 0.1.17 (#3431)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.16 to 0.1.17.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.16...tokio-stream-0.1.17)

---
updated-dependencies:
- dependency-name: tokio-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-06 08:17:52 -08:00
Oliver Gould 81044772dc
build(deps): bump linkerd/dev from v43 to v44 (#3420)
* docker.io/library/golang from 1.22 to 1.23
* gotestsum from 0.4.2 to 1.12.0
* protoc-gen-go from 1.28.1 to 1.35.2
* protoc-gen-go-grpc from 1.2 to 1.5.1
* docker.io/library/rust from 1.76.0 to 1.83.0
* cargo-deny from 0.14.11 to 0.16.3
* cargo-nextest from 0.9.67 to 0.9.85
* cargo-tarpaulin from 0.27.3 to 0.31.3
* just from 1.24.0 to 1.37.0
* yq from 4.33.3 to 4.44.5
* markdownlint-cli2 from 0.10.0 to 0.15.0
* shellcheck from 0.9.0 to 0.10.0
* actionlint from 1.6.26 to 1.7.4
* protoc from 3.20.3 to 29.0
* step from 0.25.2 to 0.28.2
* kubectl from 1.29.2 to 1.31.3
* k3d from 5.6.0 to 5.7.5
* k3s image shas
* helm from 3.14.1 to 3.16.3
* helm-docs from 1.12.0 to 1.14.2
2024-12-06 10:50:41 -05:00
dependabot[bot] 6d60af2aeb
build(deps): bump bytes from 1.8.0 to 1.9.0 (#3424)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.8.0...v1.9.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 07:42:57 -08:00
dependabot[bot] 6572e892c2
build(deps): bump time from 0.3.36 to 0.3.37 (#3423)
Bumps [time](https://github.com/time-rs/time) from 0.3.36 to 0.3.37.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.36...v0.3.37)

---
updated-dependencies:
- dependency-name: time
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 07:42:42 -08:00
dependabot[bot] e6f6ae4fa6
build(deps): bump tokio-util from 0.7.12 to 0.7.13 (#3426)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.12 to 0.7.13.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.12...tokio-util-0.7.13)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 07:42:27 -08:00
Oliver Gould a7226fbf96
build(deps): update hashbrown from 0.15.0 to 0.15.2 (#3422) 2024-12-04 21:26:26 -05:00
katelyn martin 7e9cbf69e8
refactor(app/test): remove unused test `Server` interfaces (#3421)
this `Server` type is not used by any tests.

this commit removes it, to help facilitate the upgrade to the hyper 1.0
major release. see <https://github.com/linkerd/linkerd2/issues/8733>.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-04 18:27:23 -05:00
Oliver Gould 4d9df4c3d0
ci: increase linkerd-install readiness timeout (#3418)
CI runs frequently timeout waiting for pod readiness. There is a hardcoded 1m
timeout.

This change makes this timeout configurable, specifying a 2m timeout in the CI
configuration.
2024-12-04 11:09:32 -05:00
katelyn martin 36474b3e20
refactor(app): update deprecated hyper body calls (#3411)
* chore(app/admin): add `http-body` dependency

before we address deprecated hyper interfaces related to `http_bodies`,
we'll want to add this dependency so that we can call `Body::collect()`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app): update deprecated hyper body calls

hyper 0.14.x provided a collection of interfaces related to collecting
and aggregating request and response bodies, which were deprecated and
removed in the 1.x major release.

this commit updates calls to `hyper::body::to_bytes(..)` and
`hyper::body::aggregate(..)`. for now, `http_body::Body` is used, but we
can use `http_body_util::BodyExt` once we've bumped our hyper dependency
to the 1.x major release.

for more information, see:

* https://github.com/linkerd/linkerd2/issues/8733
* https://github.com/hyperium/hyper/issues/2840
* https://github.com/hyperium/hyper/pull/3020

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-04 10:56:10 -05:00
dependabot[bot] a4113a0d01
build(deps): bump anyhow from 1.0.93 to 1.0.94 (#3415)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.93 to 1.0.94.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.93...1.0.94)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-04 07:40:52 -08:00
dependabot[bot] 7743a7cfa4
build(deps): bump libloading from 0.8.5 to 0.8.6 (#3413)
Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.8.5 to 0.8.6.
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.8.5...0.8.6)

---
updated-dependencies:
- dependency-name: libloading
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-04 07:40:40 -08:00
dependabot[bot] 52a0684aac
build(deps): bump tokio from 1.41.1 to 1.42.0 (#3414)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.41.1 to 1.42.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.41.1...tokio-1.42.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-04 15:39:31 +00:00
dependabot[bot] a2628c7180
build(deps): bump cc from 1.2.1 to 1.2.2 (#3416)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.1...cc-v1.2.2)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-04 07:33:26 -08:00
dependabot[bot] f82895c327
build(deps): bump indexmap from 2.6.0 to 2.7.0 (#3407)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.6.0 to 2.7.0.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.6.0...2.7.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 17:59:31 +00:00
katelyn martin 7ccbfa6392 chore(hyper): enable `deprecated` feature flag
this is a prepatory chore, laying more ground to facilitate upgrading
our hyper dependency to the 1.0 major release. this commit adds the
`deprecated` cargo feature to each of the hyper dependencies in the
cargo workspace.

to prevent this from introducing a large number of compiler warnings to
the build, the `#[allow(deprecated)]` attribute is added to relevant
expressions.

these uses of deprecated interfaces will be updated in subsequent
commits. broadly, these fall into a few common cases:

* `hyper::client::conn::SendRequest` now has protocol specific `h1` and
  `h2` variants.

* `hyper::server::conn::Builder` now has protocol specific `h1` and
  `h2` variants.

* `hyper::server::conn::Http` is deprecated.

* functions like `hyper::body::aggregate(..)` and
  `hyper::body::to_bytes(..)` are deprecated.

see https://github.com/linkerd/linkerd2/issues/8733 for more information
on the hyper 1.0 upgrade process.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-03 12:50:11 -05:00
katelyn martin b2f1a4830d chore(hyper): update to hyper `0.14.31`
Signed-off-by: katelyn martin <kate@buoyant.io>
2024-12-03 12:50:11 -05:00
dependabot[bot] 8635a15795
build(deps): bump mio from 1.0.2 to 1.0.3 (#3408)
Bumps [mio](https://github.com/tokio-rs/mio) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v1.0.2...v1.0.3)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 17:49:14 +00:00
dependabot[bot] 318cfa4373
build(deps): bump syn from 2.0.89 to 2.0.90 (#3409)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.89 to 2.0.90.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.89...2.0.90)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 09:44:50 -08:00
dependabot[bot] 9627540709
build(deps): bump errno from 0.3.9 to 0.3.10 (#3406)
Bumps [errno](https://github.com/lambda-fairy/rust-errno) from 0.3.9 to 0.3.10.
- [Release notes](https://github.com/lambda-fairy/rust-errno/releases)
- [Changelog](https://github.com/lambda-fairy/rust-errno/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lambda-fairy/rust-errno/compare/v0.3.9...v0.3.10)

---
updated-dependencies:
- dependency-name: errno
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-03 09:43:09 -08:00
dependabot[bot] 995a5b4529
build(deps): bump the opentelemetry group with 2 updates (#3399)
Bumps the opentelemetry group with 2 updates: [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust) and [opentelemetry_sdk](https://github.com/open-telemetry/opentelemetry-rust).


Updates `opentelemetry` from 0.27.0 to 0.27.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.27.0...opentelemetry-0.27.1)

Updates `opentelemetry_sdk` from 0.27.0 to 0.27.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry_sdk-0.27.0...opentelemetry_sdk-0.27.1)

---
updated-dependencies:
- dependency-name: opentelemetry
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: opentelemetry
- dependency-name: opentelemetry_sdk
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: opentelemetry
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 17:27:42 -08:00
dependabot[bot] 606416ca6d
build(deps): bump libc from 0.2.165 to 0.2.167 (#3403)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.165 to 0.2.167.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.167/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.165...0.2.167)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 17:27:24 -08:00
dependabot[bot] 98d3d25de8
build(deps): bump socket2 from 0.5.7 to 0.5.8 (#3401)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.5.7 to 0.5.8.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/commits)

---
updated-dependencies:
- dependency-name: socket2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 17:27:10 -08:00
Oliver Gould b2ef7b48d1
v2.270.0 2024-12-03 01:08:14 +00:00
dependabot[bot] 1482691284
build(deps): bump tracing from 0.1.40 to 0.1.41 (#3400)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.40 to 0.1.41.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.40...tracing-0.1.41)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 08:37:19 -08:00
dependabot[bot] d95e5abaec
build(deps): bump symbolic-demangle from 12.12.1 to 12.12.3 (#3395)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.12.1 to 12.12.3.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.12.1...12.12.3)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-27 12:06:24 -05:00
dependabot[bot] 053b080074
build(deps): bump yoke from 0.7.4 to 0.7.5 (#3396)
Bumps [yoke](https://github.com/unicode-org/icu4x) from 0.7.4 to 0.7.5.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: yoke
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-27 12:06:10 -05:00
dependabot[bot] 23e3dbfbc6
build(deps): bump yoke-derive from 0.7.4 to 0.7.5 (#3397)
Bumps [yoke-derive](https://github.com/unicode-org/icu4x) from 0.7.4 to 0.7.5.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: yoke-derive
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-27 12:06:01 -05:00
dependabot[bot] 97247b1ba9
build(deps): bump symbolic-common from 12.12.1 to 12.12.3 (#3398)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.12.1 to 12.12.3.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.12.1...12.12.3)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-27 12:05:45 -05:00
katelyn martin aa1dbd7b2f
refactor(proxy/http): extricate `Body` middleware types (#3382)
* refactor(proxy/http): move types to `linkerd-http-classify` (#3382)

in this case we already had a crate defining the classify traits, but
the http body and other assorted middleware were defined in
`linkerd-proxy-http`.

this commit moves those types to the `linkerd-http-classify` crate,
which astute readers may notice, is a concrete step towards simplifying
the `linkerd-proxy-http` crate's upgrade process.

one small detail worth calling out: we implement `http_body::Body`
directly, to avoid taking on a `hyper` dependency. otherwise, nothing
has changed in the `channel`, `gate`, and `insert` middleware.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): create `linkerd-http-retain` crate (#3382)

this moves the `Retain` middleware from `linkerd-proxy-http` into a new
`linkerd-http-retain` crate.

as previously, reëxports are added to make this a backwards compatible
change.

this moves another http body middleware out of the proxy's core http
crate. great news.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): create `linkerd-http-stream-timeouts` crate (#3382)

this commit outlines the stream timeout middleware, pulling it out of
`linkerd-proxy-http` and into a standalone crate.

again, reëxports are added to make this a backwards compatible change.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): create  `linkerd-http-override-authority` crate (#3382)

NB: based on #3379 and #3380.

this pull the `override_authority` submodule out of
`linkerd-http-proxy` and into a standalone crate.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): move `is_bad_request()` into `upgrade` (#3382)

this is only used in once place, so as a brief chore before we move the
upgrade submodule out into its own crate, we pull `is_bad_request()`
next to its call site.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(proxy/http): create `linkerd-http-upgrade` crate (#3382)

this moves the inter-related `upgrade` and `glue` submodules out of the
`linkerd-proxy-http` library and into a new standalone crate.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-11-26 15:01:54 -05:00
dependabot[bot] 0ff6f48bf6
build(deps): bump libc from 0.2.164 to 0.2.165 (#3394)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.164 to 0.2.165.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.165/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.164...0.2.165)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 19:07:21 +00:00
dependabot[bot] 25b0f81857
build(deps): bump zerofrom-derive from 0.1.4 to 0.1.5 (#3391)
Bumps [zerofrom-derive](https://github.com/unicode-org/icu4x) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits/ind/databake@0.1.5)

---
updated-dependencies:
- dependency-name: zerofrom-derive
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 14:03:16 -05:00
dependabot[bot] 1b45076d2f
build(deps): bump cmake from 0.1.51 to 0.1.52 (#3392)
Bumps [cmake](https://github.com/rust-lang/cmake-rs) from 0.1.51 to 0.1.52.
- [Release notes](https://github.com/rust-lang/cmake-rs/releases)
- [Changelog](https://github.com/rust-lang/cmake-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cmake-rs/compare/v0.1.51...v0.1.52)

---
updated-dependencies:
- dependency-name: cmake
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 14:03:05 -05:00
dependabot[bot] 3098f47678
build(deps): bump itoa from 1.0.13 to 1.0.14 (#3393)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.13 to 1.0.14.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.13...1.0.14)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 14:02:52 -05:00
dependabot[bot] 775a5b26ed
build(deps): bump url from 2.5.3 to 2.5.4 (#3388)
Bumps [url](https://github.com/servo/rust-url) from 2.5.3 to 2.5.4.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.5.3...v2.5.4)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 11:01:03 -05:00
dependabot[bot] 32814635fd
build(deps): bump litemap from 0.7.3 to 0.7.4 (#3390)
Bumps [litemap](https://github.com/unicode-org/icu4x) from 0.7.3 to 0.7.4.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: litemap
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 10:08:28 -05:00
dependabot[bot] ba57ee2355
build(deps): bump zerofrom from 0.1.4 to 0.1.5 (#3389)
Bumps [zerofrom](https://github.com/unicode-org/icu4x) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits/ind/databake@0.1.5)

---
updated-dependencies:
- dependency-name: zerofrom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 10:08:08 -05:00
dependabot[bot] f14b6fae97
build(deps): bump portable-atomic from 1.9.0 to 1.10.0 (#3387)
Bumps [portable-atomic](https://github.com/taiki-e/portable-atomic) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/taiki-e/portable-atomic/releases)
- [Changelog](https://github.com/taiki-e/portable-atomic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/portable-atomic/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: portable-atomic
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 10:07:49 -05:00
dependabot[bot] d76dda33d6
build(deps): bump the opentelemetry group with 2 updates (#3356)
Bumps the opentelemetry group with 2 updates: [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust) and [opentelemetry_sdk](https://github.com/open-telemetry/opentelemetry-rust).


Updates `opentelemetry` from 0.26.0 to 0.27.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.26.0...opentelemetry-0.27.0)

Updates `opentelemetry_sdk` from 0.26.0 to 0.27.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry_sdk-0.26.0...opentelemetry_sdk-0.27.0)

---
updated-dependencies:
- dependency-name: opentelemetry
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
- dependency-name: opentelemetry_sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-11-22 18:53:27 +00:00
Zahari Dichev 7b782128a9
fix(outbound): apply opaq filters in connection handler (#3378)
The initial implementation of opaq filters uses `push_filter` so that
errors originate from `Service::poll_ready` rather than `Service::call`.
This causes the transport metrics middleware to not count failed
connections.

By changing the filter contract so that filters are applied in `Service::call`,
we ensure that middlewares see response failures rather than readiness
failures.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-11-22 09:48:35 -08:00
dependabot[bot] 0a4ccac835
build(deps): bump proc-macro2 from 1.0.91 to 1.0.92 (#3384)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.91 to 1.0.92.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.91...1.0.92)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 08:23:51 -08:00
dependabot[bot] d0396cdf40
build(deps): bump cpufeatures from 0.2.15 to 0.2.16 (#3383)
Bumps [cpufeatures](https://github.com/RustCrypto/utils) from 0.2.15 to 0.2.16.
- [Commits](https://github.com/RustCrypto/utils/compare/cpufeatures-v0.2.15...cpufeatures-v0.2.16)

---
updated-dependencies:
- dependency-name: cpufeatures
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 08:23:37 -08:00
dependabot[bot] 6a8168a1da
build(deps): bump syn from 2.0.87 to 2.0.89 (#3385)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.87 to 2.0.89.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.87...2.0.89)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 08:23:19 -08:00
katelyn martin edef79ccd1
refactor(proxy/http): create `linkerd-http-insert` crate (#3380)
* refactor(proxy/http): create `linkerd-http-insert` crate

this pulls out the `insert` module from `linkerd-proxy-http`.

a reëxport is added so that this does not affect the public api of the
http crate.

NB: based on #3379.

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(http/insert): doc comments

this commit adds documentation to `linkerd-http-insert`.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-11-21 21:47:26 +00:00
katelyn martin efba099ac5
refactor(proxy/http): create `linkerd-http-version` crate (#3379)
* feat(proxy/http): create `linkerd-http-version` crate

this outlines the http version type into its own crate.

reëxports are added to make this a backwards compatible change, i.e. no
changes to the public api of `linkerd-proxy-http` are performed here.

Signed-off-by: katelyn martin <kate@buoyant.io>

* docs(http/version): doc comments

this adds some brief documentation comments to the crate.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-11-21 12:55:39 -08:00
katelyn martin e4d7d5782d
feat(app): Route frame count metrics (#3334)
###  overview

this introduces a new tower middleware for Prometheus metrics, used for
instrumenting HTTP and gRPC request bodies, and observing (a) the
number of frames yielded by a body, (b) the number of bytes included
in body frames, and (c) a distribution of the size of frames yielded.

this builds upon the backend-level metrics added in #3308. this
additionally uses the route label extractor, hoisted out of the retry
middleware's Prometheus telemetry in #3337.

 ### 📝 changes

* a `linkerd_http_prom::body_data::request::NewRecordBodyData::NewRecordBodyData`
  middleware is added, which complements the equivalent
  `linkerd_http_prom::body_data::response` middleware.

* this is added to policy routes' metrics layer.

see prometheus/client_rust#241 and prometheus/client_rust#242, which
track upstream proposals to add accessors to `Histogram` that will allow
us to make test assertions that metrics are working properly. for now,
these are feature gated as also done in #3308.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-11-21 14:43:33 -05:00
Zahari Dichev 621ea1991a
build(deps): update linkerd2-proxy-api to v0.15.0 (#3377)
To update to the latest proxy API release, we also update the opaque stack filter types.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-11-21 19:30:36 +00:00
dependabot[bot] ca4612d039
build(deps): bump proc-macro2 from 1.0.89 to 1.0.91 (#3373)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.89 to 1.0.91.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.89...1.0.91)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 11:14:05 -08:00
dependabot[bot] 9bb3393447
build(deps): bump unicode-ident from 1.0.13 to 1.0.14 (#3370)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.13 to 1.0.14.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.13...1.0.14)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 11:13:35 -08:00
dependabot[bot] 7f2d932d38
build(deps): bump itoa from 1.0.11 to 1.0.13 (#3374)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.11 to 1.0.13.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.11...1.0.13)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 11:13:18 -08:00
katelyn martin e190dae900
refactor(app): Outline route label extractor (#3337)
* refactor(app): Hoist label extractor out of retry middleware

this commit promotes the `RetryLabelExtract` type out of the route retry
middleware, and into the metrics submodule.

in preparation for generalizing this component, we rename it to
`RouteLabelExtract`.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app): Outline route label extraction

this addresses the `TODO` comment, moving the `RouteLabelExtract` type
out of the policy route layer function.

this defines a method on `MatchedRoute` which may be called to retrieve
a `RouteLabelExtract`. that type holds references to the
contruction-time information about the route, and can be used to later
inspect an outbound request at call-time, returning a `labels::Route`
set of labels.

this is a helpful piece of reusable glue that is broadly useful in
instrumenting our route-level middleware.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-11-21 14:56:49 +00:00
katelyn martin 049e01bfdb
feat(app): Backend frame count metrics (#3308)
* feat(app): Backend response frame count metrics

this introduces a new tower middleware for Prometheus metrics, used for
instrumenting HTTP and gRPC response bodies, and observing (a) the
number of frames yielded by a body, and (b) the number of bytes included
in body frames, and (c) the distribution of frame sizes.

this middleware allows operators to reason about how large or small the
packets being served in a backend's response bodies are.

a route-level middleware that instruments request bodies will be added
in a follow-on PR.

 ### 📝 changes

an overview of changes made here:

* the `linkerd-http-prom` has a new `body_data` submodule. it exposes
  `request` and `response` halves, to be explicit about which body is
  being instrumented on a `tower::Service`.

* the `linkerd-http-prom` crate now has a collection of new
  dependencies: `bytes` is added as a dependency in order to inspect the
  data chunk when the inner body yields a new frame. `futures-util` and
  `http-body` are added as dev-dependencies for the accompanying test
  coverage.

* body metrics are affixed to the `RouteBackendMetrics<L>` structure,
  and registered at startup.

Signed-off-by: katelyn martin <kate@buoyant.io>

* review: Inline attribute to service passthrough

Signed-off-by: katelyn martin <kate@buoyant.io>

* review: Inline attribute to body passthrough

continuing this theme of inlining, we inline the passthrough methods on
`Body` as well.

Signed-off-by: katelyn martin <kate@buoyant.io>

* review: Box `<RecordBodyData as Service>::Future` values

Signed-off-by: katelyn martin <kate@buoyant.io>

* review: rename `get()` to `metrics()`

Signed-off-by: katelyn martin <kate@buoyant.io>

* review: simplify `RecordBodyData<S>` response

Signed-off-by: katelyn martin <kate@buoyant.io>

* Update ResponseBody metrics to use a histogram

Signed-off-by: Oliver Gould <ver@buoyant.io>

* refactor(tests): feature gate frame size histogram assertions

see:

* https://github.com/prometheus/client_rust/pull/242
* https://github.com/prometheus/client_rust/pull/241

for now, refactor this test so that it gates all use of the (proposed)
`sum()` and `count()` accessors behind a temporary feature gate.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
Signed-off-by: Oliver Gould <ver@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-11-20 15:45:27 -05:00
dependabot[bot] 5df46ac601
build(deps): bump codecov/codecov-action from 5.0.2 to 5.0.4 (#3372)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.0.2 to 5.0.4.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](5c47607acb...985343d705)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-20 11:53:59 -08:00
katelyn martin 12905c5edf
refactor(app): `MockBody` convenience functions for test code (#3349)
* refactor(app): add `pending()` helper for mock body

in timeout tests, we construct mock bodies that are backed by a
`Pending<T>` future that will never yield any data.

this introduces a small `pending()` helper to the `MockBody` type used
in test code in the outbound proxy.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app): add `error()` helper for mock body

in metrics tests, we construct mock bodies that will yield an error
when polled, to examine how telemetry measures certain edge cases.

this introduces a small `error()` helper to the `MockBody` type used
in test code in the outbound proxy.

Signed-off-by: katelyn martin <kate@buoyant.io>

* refactor(app): add `grpc_status()` helper for mock body

in metrics tests, we construct mock bodies that will yield an gRPC
status code in its trailers section
when polled, to examine how telemetry measures gRPC responses.

this refactors the `trailers()` function to more narrowly focus on the
test coverage needed, to help reduce boilerplate in test code.

Signed-off-by: katelyn martin <kate@buoyant.io>

---------

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-11-20 13:54:01 -05:00
dependabot[bot] 4dc979fd31
build(deps): bump codecov/codecov-action from 5.0.0 to 5.0.2 (#3367)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.0.0 to 5.0.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](968872560f...5c47607acb)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-18 08:28:33 -08:00
dependabot[bot] ad0b831af2
build(deps): bump libc from 0.2.162 to 0.2.164 (#3368)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.162 to 0.2.164.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.162...0.2.164)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-18 08:28:20 -08:00
dependabot[bot] 5125448530
build(deps): bump serde_json from 1.0.132 to 1.0.133 (#3366)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.132 to 1.0.133.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.132...v1.0.133)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-18 08:28:05 -08:00
katelyn martin 5f74afbb0a
feat(http/executor): hoist TracingExecutor out of linkerd-proxy-http (#3365)
this commit moves `TracingExecutor` out of `linkerd-proxy-http`, and
into a new standalone `linkerd-http-executor` crate.

reëxports are added to `linkerd-proxy-http` to prevent this from being a
breaking change to dependents.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-11-15 11:46:53 -05:00
dependabot[bot] 36d5b0c99f
build(deps): bump codecov/codecov-action from 4.6.0 to 5.0.0 (#3363)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.6.0 to 5.0.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](b9fd7d16f6...968872560f)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-15 08:39:57 -08:00
dependabot[bot] 7eaa60dde3
build(deps): bump DavidAnson/markdownlint-cli2-action (#3362)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 17.0.0 to 18.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](db43aef879...eb5ca3ab41)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-15 08:39:37 -08:00
dependabot[bot] 9d22a5ca41
build(deps): bump flate2 from 1.0.34 to 1.0.35 (#3364)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.34 to 1.0.35.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Changelog](https://github.com/rust-lang/flate2-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.34...1.0.35)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-15 08:39:24 -08:00
dependabot[bot] 39bb871c70
build(deps): bump cc from 1.2.0 to 1.2.1 (#3361)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.0...cc-v1.2.1)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-14 10:02:24 -05:00
Oliver Gould aaf6db0d58
feat(outbound): TCP/TLS route metrics (#3355)
This PR adds transport level route metrics for TCP and TLS. The metrics added are: 

- outbound_(tcp/tls)_route_open_total - provides parent and route reference information.
- outbound_(tcp/tls)_route_close_total - provides parent and route information as well as an error label that is populated in case the connection has been closed due to an error.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-11-13 09:45:29 -08:00
Alejandro Pedraza 6fa8538fcd
feat(inbound): Add metrics for rate-limiting (#3335)
Added the counter `inbound_http_local_ratelimit_total`:

```
# HELP inbound_http_local_ratelimit_total The total number of inbound HTTP requests that were rate-limited
# TYPE inbound_http_local_ratelimit_total counter
inbound_http_local_ratelimit_total{target_addr="10.42.0.22:8080",target_ip="10.42.0.22",target_port="8080",srv_group="policy.linkerd.io",srv_kind="server",srv_name="web-http",ratelimit_group="policy.linkerd.io",ratelimit_kind="HTTPLocalRateLimitPolicy",ratelimit_name="web-http",ratelimit_error="per-identity(20)",tls="true",client_id="default.emojivoto.serviceaccount.identity.linkerd.cluster.local"} 19
```

This implied adding another field `local_rate_limit_meta` to ServerPolicy to track the metadata.
2024-11-13 09:44:50 -08:00
dependabot[bot] 3b63b12909
build(deps): bump cc from 1.1.37 to 1.2.0 (#3360)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.37 to 1.2.0.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.37...cc-v1.2.0)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-13 08:20:04 -08:00
dependabot[bot] 13303daf5d
build(deps): bump libfuzzer-sys from 0.4.7 to 0.4.8 (#3352)
Bumps [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer) from 0.4.7 to 0.4.8.
- [Changelog](https://github.com/rust-fuzz/libfuzzer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/libfuzzer/compare/0.4.7...0.4.8)

---
updated-dependencies:
- dependency-name: libfuzzer-sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-12 15:58:47 +00:00
dependabot[bot] 42b513a9f2
build(deps): bump serde from 1.0.214 to 1.0.215 (#3359)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.214 to 1.0.215.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.214...v1.0.215)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-12 07:14:08 -08:00
dependabot[bot] 77edbd6d5f
build(deps): bump softprops/action-gh-release from 2.0.9 to 2.1.0 (#3357)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.9 to 2.1.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](e7a8f85e1c...01570a1f39)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-12 07:13:51 -08:00
dependabot[bot] 5c4f0d4b9d
build(deps): bump cpufeatures from 0.2.14 to 0.2.15 (#3358)
Bumps [cpufeatures](https://github.com/RustCrypto/utils) from 0.2.14 to 0.2.15.
- [Commits](https://github.com/RustCrypto/utils/compare/cpufeatures-v0.2.14...cpufeatures-v0.2.15)

---
updated-dependencies:
- dependency-name: cpufeatures
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-12 07:13:11 -08:00
Zahari Dichev 37ae5d5269
feat(outbound): add filters for TCP and TLS policy (#3354)
The outbound opaq and tls routes did not include any filters. This change updates
both with error-propagating filters.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-11-11 16:07:06 -08:00
dependabot[bot] 93a9b947ef
build(deps): bump cc from 1.1.36 to 1.1.37 (#3353)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.36 to 1.1.37.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.36...cc-v1.1.37)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 10:25:01 -05:00
dependabot[bot] 3154b5be45
build(deps): bump rustix from 0.38.39 to 0.38.40 (#3350)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.39 to 0.38.40.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.39...v0.38.40)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 10:24:40 -05:00
dependabot[bot] 0d6957773b
build(deps): bump tokio from 1.41.0 to 1.41.1 (#3343)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.41.0 to 1.41.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.41.0...tokio-1.41.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 14:45:41 +00:00
dependabot[bot] 6204fae65a
build(deps): bump tj-actions/changed-files from 45.0.3 to 45.0.4 (#3345)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.3 to 45.0.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](c3a1bb2c99...4edd678ac3)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 06:42:11 -08:00
dependabot[bot] 0617dfe6db
build(deps): bump pprof from 0.13.0 to 0.14.0 (#3344)
Bumps [pprof](https://github.com/tikv/pprof-rs) from 0.13.0 to 0.14.0.
- [Changelog](https://github.com/tikv/pprof-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tikv/pprof-rs/commits)

---
updated-dependencies:
- dependency-name: pprof
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 06:41:49 -08:00
dependabot[bot] 757aa3b043
build(deps): bump tempfile from 3.11.0 to 3.14.0 (#3348)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.11.0 to 3.14.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.11.0...v3.14.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 06:41:35 -08:00
dependabot[bot] 572ddbe5e1
build(deps): bump libc from 0.2.161 to 0.2.162 (#3347)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.161 to 0.2.162.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.162/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.161...0.2.162)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 06:41:15 -08:00
dependabot[bot] 0dd1773853
build(deps): bump fastrand from 2.1.1 to 2.2.0 (#3346)
Bumps [fastrand](https://github.com/smol-rs/fastrand) from 2.1.1 to 2.2.0.
- [Release notes](https://github.com/smol-rs/fastrand/releases)
- [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/fastrand/compare/v2.1.1...v2.2.0)

---
updated-dependencies:
- dependency-name: fastrand
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 06:40:39 -08:00
Oliver Gould 5c635e6690
fix(outbound): fall back to profile-provided authority (#3342)
To fix a regression in 7eadac4d9, where authority labels are not properly
set on legacy TCP metrics, this commit uses the profile-provided authority
when it is set.
2024-11-07 17:44:37 -08:00
Zahari Dichev 7eadac4d9b
feat(outbound): Use the policy API for opaq routing (#3306)
The OutboundPolicy API is able to express configuration for opaq routing, but
the proxy only currently uses the ServiceProfile to configure routing. To
support configuring routing via the Gateway API's TCPRoute, we need to begin
using the OutboundPolicy API to configure opaq routing without breaking
existing configurations that use profiles.

With this change, the outbound proxy is updated so that route configurations are
required for the proxy to handle outbound opaq traffic. Route configurations may
be provided by:

* The Profile API, when it returns an Endpoint, so that the proxy synthesizes a
  route configuration that forwards traffic to the endpoint.
* The Profile API, when it returns a traffic split configuration, so that the
  proxy synthesizes a route configuration that forwards traffic over backend
  services.
* The OutboundPolicy API when it returns opaq routes.

When no routes are returned by the API, the proxy fails to route the
connections.

Follow up changes will enhance this functionality with metrics and improved
metadata.
2024-11-07 19:51:49 +00:00
Scott Fleener b34d32bc8a
Allow duplicate weighted backend keys (#3319)
Allow duplicate weighted backend keys

Currently, if the proxy receives two backends with the same metadata,
one of the backends will get dropped because the backend metadata is
used as the key in a hash map. Attempting to then randomly distribute
requests to the backends can panic when selecting the now non-existent
backend.

This is fixed by no longer using backend metadata as a hash map key,
instead generating separate IDs that are stored in a vec to retain the
declared order of backends while also being used to look up the backend
and associated weight independently.

Validated with new unit tests exercising duplicate backend keys, as well
as a few around the invariants use to store the backends.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-11-07 15:36:38 +00:00
dependabot[bot] db64c7a50d
build(deps): bump symbolic-demangle from 12.12.0 to 12.12.1 (#3339)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.12.0 to 12.12.1.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.12.0...12.12.1)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-07 07:21:58 -08:00
Zahari Dichev 4dcb4df10c
feat(outbound): Configure TLS routes from the policy API (#3341)
Until now, the TLS routing stack was not wire with the API responses. This PR adds mappings from the protobuf API representation to the correct internal types. This enables the proxy to build the correct sidecar type when it receives a TLS protocol response from the discovery.

In addition to that, in a separate commit the TLS rule matching logic has been simplified for our internal types. This can be done because for TLS routes we do not do any real route matching. Furthermore the validation logic in the controller ensures that a TLSRoute has exactly on rule.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-11-07 07:19:42 -08:00
Oliver Gould 16a3ec2372
build(deps): bump linkerd2-proxy-api (#3336)
This fixes a compilation error caused by a missing feature flag.
2024-11-06 13:12:01 -08:00
Alejandro Pedraza ac6f000694
feat(inbound): Add HTTP local rate limiting support (#3305)
Implemented inbound http local rate limiting, through the [governor crate](https://github.com/boinkor-net/governor), which uses the Generic Cell Rate algorithm.

Ref linkerd/linkerd2#13231 for the policy-controller support.
---------

Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-11-06 11:16:24 -05:00
dependabot[bot] 7be7972e94
build(deps): bump cc from 1.1.34 to 1.1.36 (#3333)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.34 to 1.1.36.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.34...cc-v1.1.36)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-06 10:32:56 -05:00
dependabot[bot] cdc16c9f3b
build(deps): bump derive_arbitrary from 1.4.0 to 1.4.1 (#3331)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.4.0 to 1.4.1.
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-06 10:08:52 -05:00
dependabot[bot] dd61d6e1a5
build(deps): bump arbitrary from 1.4.0 to 1.4.1 (#3330)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.4.0 to 1.4.1.
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-06 10:08:44 -05:00
dependabot[bot] 27824af187
build(deps): bump anyhow from 1.0.92 to 1.0.93 (#3329)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.92 to 1.0.93.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.92...1.0.93)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-06 10:08:36 -05:00
Oliver Gould 705e1588c6
build(deps): pin proxy-api to git (#3327)
While finalizing API changes for an upcoming release, we need to pin the
`linkerd2-proxy-api` dependency to a specific commit in the `main` branch. This
will allow us to completely validate end-to-end functionality before releasing
the new version of the API crate.
2024-11-05 17:33:13 -08:00
dependabot[bot] 5cfc228156
build(deps): bump derive_arbitrary from 1.3.2 to 1.4.0 (#3322)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.3.2 to 1.4.0.
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.3.2...v1.4.0)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-05 08:23:32 -05:00
dependabot[bot] 5be9b17c5c
build(deps): bump rustix from 0.38.38 to 0.38.39 (#3323)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.38 to 0.38.39.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.38...v0.38.39)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-05 08:23:24 -05:00
dependabot[bot] fe3632941b
build(deps): bump thiserror from 1.0.67 to 1.0.68 (#3324)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.67 to 1.0.68.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.67...1.0.68)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-05 08:23:14 -05:00
dependabot[bot] c750c35494
build(deps): bump arbitrary from 1.3.2 to 1.4.0 (#3325)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.3.2 to 1.4.0.
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.3.2...v1.4.0)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-05 08:23:06 -05:00
dependabot[bot] 24d0092793
build(deps): bump softprops/action-gh-release from 2.0.8 to 2.0.9 (#3311)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](c062e08bd5...e7a8f85e1c)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 07:22:55 -08:00
dependabot[bot] 9ecbd19db4
build(deps): bump url from 2.5.2 to 2.5.3 (#3317)
Bumps [url](https://github.com/servo/rust-url) from 2.5.2 to 2.5.3.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.5.2...v2.5.3)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 07:22:38 -08:00
dependabot[bot] 4684728284
build(deps): bump cc from 1.1.31 to 1.1.34 (#3316)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.31 to 1.1.34.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.31...cc-v1.1.34)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 10:11:40 -05:00
dependabot[bot] dcdaf1bf9e
build(deps): bump thiserror from 1.0.66 to 1.0.67 (#3315)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.66 to 1.0.67.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.66...1.0.67)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 10:11:32 -05:00
dependabot[bot] 5c0dd27422
build(deps): bump syn from 2.0.86 to 2.0.87 (#3314)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.86 to 2.0.87.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.86...2.0.87)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 10:11:22 -05:00
dependabot[bot] 03009a21d4
build(deps): bump anyhow from 1.0.91 to 1.0.92 (#3313)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.91 to 1.0.92.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.91...1.0.92)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 10:43:53 -04:00
dependabot[bot] 7b2c4281bd
build(deps): bump syn from 2.0.85 to 2.0.86 (#3312)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.85 to 2.0.86.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.85...2.0.86)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 10:43:42 -04:00
dependabot[bot] 62d8d92d84
build(deps): bump thiserror from 1.0.65 to 1.0.66 (#3310)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.65 to 1.0.66.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.65...1.0.66)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 10:43:23 -04:00
dependabot[bot] c2687744a0
build(deps): bump serde from 1.0.213 to 1.0.214 (#3303)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.213 to 1.0.214.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.213...v1.0.214)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 08:28:48 -07:00
Oliver Gould 578021b0e0
fix(grpc): Handle timeouts with a DeadlineExceeded error (#3302)
When the proxy encounters gateway timeouts, it reports a gRPC Unavailable status
code. This is at odds with the [grpc
docs](https://grpc.io/docs/guides/deadlines/) which suggest that
DeadlineExceeded should be used.

This change updates the proxy's error handler to return DeadlineExceeded when a
gRPC request encounters a timeout.
2024-10-29 08:28:25 -07:00
dependabot[bot] 684e8f4ad4
build(deps): bump rustix from 0.38.37 to 0.38.38 (#3301)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.37 to 0.38.38.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.37...v0.38.38)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-28 10:52:03 -04:00
dependabot[bot] a60e0db6f6
build(deps): bump regex from 1.11.0 to 1.11.1 (#3300)
Bumps [regex](https://github.com/rust-lang/regex) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.11.0...1.11.1)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 08:03:05 -07:00
dependabot[bot] 1bdd4b8d0a
build(deps): bump pin-project-lite from 0.2.14 to 0.2.15 (#3299)
Bumps [pin-project-lite](https://github.com/taiki-e/pin-project-lite) from 0.2.14 to 0.2.15.
- [Release notes](https://github.com/taiki-e/pin-project-lite/releases)
- [Changelog](https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project-lite/compare/v0.2.14...v0.2.15)

---
updated-dependencies:
- dependency-name: pin-project-lite
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 08:02:53 -07:00
dependabot[bot] 43d1704236
build(deps): bump pin-project from 1.1.6 to 1.1.7 (#3298)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.6 to 1.1.7.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.6...v1.1.7)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 08:02:41 -07:00
dependabot[bot] f184d33819
build(deps): bump actions/checkout from 4.2.1 to 4.2.2 (#3297)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](eef61447b9...11bd71901b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 08:02:27 -07:00
dependabot[bot] 0c4261d360
build(deps): bump prettyplease from 0.2.24 to 0.2.25 (#3295)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.24 to 0.2.25.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.24...0.2.25)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 16:44:24 -04:00
dependabot[bot] 5af8e1178a
build(deps): bump syn from 2.0.82 to 2.0.85 (#3296)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.82 to 2.0.85.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.82...2.0.85)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 16:44:05 -04:00
dependabot[bot] ef779d0919
build(deps): bump serde from 1.0.211 to 1.0.213 (#3293)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.211 to 1.0.213.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.211...v1.0.213)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 07:29:12 -07:00
dependabot[bot] 1377038e8f
build(deps): bump anyhow from 1.0.90 to 1.0.91 (#3292)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.90 to 1.0.91.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.90...1.0.91)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 07:28:59 -07:00
dependabot[bot] 451aa03e4a
build(deps): bump thiserror from 1.0.64 to 1.0.65 (#3291)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.64 to 1.0.65.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.64...1.0.65)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 07:28:46 -07:00
dependabot[bot] d43f3e093a
build(deps): bump proc-macro2 from 1.0.88 to 1.0.89 (#3290)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.88 to 1.0.89.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.88...1.0.89)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 07:28:34 -07:00
dependabot[bot] 9abbaeacd0
build(deps): bump bytes from 1.7.2 to 1.8.0 (#3288)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.7.2 to 1.8.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.7.2...v1.8.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-22 11:48:25 -04:00
dependabot[bot] fb35271a28
build(deps): bump serde from 1.0.210 to 1.0.211 (#3287)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.210 to 1.0.211.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.210...v1.0.211)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-22 07:33:05 -07:00
dependabot[bot] 7353479161
build(deps): bump tokio from 1.40.0 to 1.41.0 (#3289)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.40.0 to 1.41.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.40.0...tokio-1.41.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-22 07:32:42 -07:00
dependabot[bot] bf0f7cd6e8
build(deps): bump prettyplease from 0.2.22 to 0.2.24 (#3283)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.22 to 0.2.24.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.22...0.2.24)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-21 11:02:13 -04:00
dependabot[bot] 0fdaf29f45
build(deps): bump serde_json from 1.0.129 to 1.0.132 (#3285)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.129 to 1.0.132.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/1.0.129...1.0.132)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-21 11:01:51 -04:00
dependabot[bot] af2e1633d7
build(deps): bump syn from 2.0.79 to 2.0.82 (#3284)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.79 to 2.0.82.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.79...2.0.82)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-21 11:01:31 -04:00
dependabot[bot] 7c1b116c43
build(deps): bump anyhow from 1.0.89 to 1.0.90 (#3282)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.89 to 1.0.90.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.89...1.0.90)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-21 11:01:12 -04:00
dependabot[bot] 93905b826b
build(deps): bump cc from 1.1.30 to 1.1.31 (#3286)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.30 to 1.1.31.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.30...cc-v1.1.31)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-21 11:00:57 -04:00
dependabot[bot] 9d6c3b08c4
build(deps): bump tj-actions/changed-files from 45.0.2 to 45.0.3 (#3252)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.2 to 45.0.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](48d8f15b2a...c3a1bb2c99)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 10:39:25 -07:00
dependabot[bot] 843d024f33
build(deps): bump libc from 0.2.159 to 0.2.161 (#3280)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.159 to 0.2.161.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.161/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.159...0.2.161)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 10:34:39 -07:00
dependabot[bot] 057b2916f9
build(deps): bump serde_json from 1.0.128 to 1.0.129 (#3281)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.128 to 1.0.129.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/1.0.128...1.0.129)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 07:17:23 -07:00
dependabot[bot] d44d5a2239
build(deps): bump uuid from 1.10.0 to 1.11.0 (#3277)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.10.0...1.11.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 07:14:19 -07:00
dependabot[bot] 3773e5798f
build(deps): bump cc from 1.1.29 to 1.1.30 (#3275)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.29 to 1.1.30.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.29...cc-v1.1.30)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 07:14:05 -07:00
dependabot[bot] f9d9c0a2c5
build(deps): bump Swatinem/rust-cache from 2.7.3 to 2.7.5 (#3274)
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.3 to 2.7.5.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](23bce251a8...82a92a6e8f)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-18 07:13:49 -07:00
Zahari Dichev 73e96ddb12
feat(outbound): Route TLS connections by SNI (#3160)
This is a draft PR that wires together some of the recently introduced changes to the proxy in order to deliver TLS routing functionality. The changes are: 

This change adds a TLS routing stack that has the following properties: 
 - it always expects that `SNI` is present
 - uses tls routing information provided by the discovery API to perform routing based on SNI
 - does not concern itself with terminating TLS by simply proxies the encrypted stream

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-10-18 14:21:26 +03:00
dependabot[bot] b65c43aac5
build(deps): bump proc-macro2 from 1.0.87 to 1.0.88 (#3279)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.87 to 1.0.88.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.87...1.0.88)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-17 16:39:11 -04:00
dependabot[bot] d61c69fff7
build(deps): bump rustversion from 1.0.17 to 1.0.18 (#3276)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.17 to 1.0.18.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.17...1.0.18)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-15 10:01:12 -04:00
katelyn martin b728ffe6a6
feat(app): Add hostname label to route metrics (#3258)
this commit introduces an additional label to HTTP and gRPC route
metrics, containing the DNS host of requests. requests destined for an
ip address of some kind are not recorded with a hostname metric, as a
way to help minimize the impact of time series cardinality.

the core of this change is in this field addition:

```diff
// /linkerd/app/outbound/src/http/logical/policy/route/metrics/labels.rs
-pub struct Route(pub ParentRef, pub RouteRef);
+pub struct Route {
+    parent: ParentRef,
+    route: RouteRef,
+    hostname: Option<dns::Name>,
+}
```

see this part of the change to our `MkStreamLabel` implementation, used
in our metrics tracking request durtion, and counting response status
codes:

```diff
-    fn mk_stream_labeler<B>(&self, _: &::http::Request<B>) -> Option<Self::StreamLabel> {
+    fn mk_stream_labeler<B>(&self, req: &::http::Request<B>) -> Option<Self::StreamLabel> {
         let parent = self.params.parent_ref.clone();
         let route = self.params.route_ref.clone();
-        Some(metrics::LabelHttpRsp::from(metrics::labels::Route::from((
-            parent, route,
-        ))))
+        Some(metrics::LabelHttpRsp::from(metrics::labels::Route::new(
+            parent,
+            route,
+            req.uri(),
+        )))
     }
```

we now inspect the request, and use the URI to label metrics related to
this traffic by hostname.

a `http_request_hostnames()` test case is added to exercise this.

some todo comments are left, noting where we would ideally like to
simplify or generalize the machinery related to `RetryLabelExtract`, the
type that bridges the labels needed based on our `NewService<T>` target,
and the request type later accepted by the instantiated `Service<T>`.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-10-15 09:56:19 -04:00
Scott Fleener 618838ec71 Extract zone locality into separate TCP metric
Currently, the destination controller populates a zone locality field in the metric labels for an endpoint. This works fine, but can be expensive to query against in prometheus due to the high cardinality of the metrics it is attached to.

This introduces a separate `outbound_tcp_bytes_total` metric with only the zone locality as a label, which is the most common use of this label.

This includes some extra infrastructure to wire the new metric through as we currently don't use prometheus-client for transport metrics. Eventually, the existing metrics could and/or should be migrated, but that is saved for a future change.

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-10-14 11:58:26 -04:00
dependabot[bot] 824976c67d
build(deps): bump cc from 1.1.28 to 1.1.29 (#3273)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.28 to 1.1.29.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.28...cc-v1.1.29)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-11 10:46:29 -07:00
dependabot[bot] 44854bd4c3
build(deps): bump unicode-bidi from 0.3.15 to 0.3.17 (#3254)
Bumps [unicode-bidi](https://github.com/servo/unicode-bidi) from 0.3.15 to 0.3.17.
- [Release notes](https://github.com/servo/unicode-bidi/releases)
- [Commits](https://github.com/servo/unicode-bidi/compare/v0.3.15...v0.3.17)

---
updated-dependencies:
- dependency-name: unicode-bidi
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-10 14:28:43 +00:00
dependabot[bot] bbaaa4bc1a
build(deps): bump actions/upload-artifact from 4.4.0 to 4.4.3 (#3271)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.0 to 4.4.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](50769540e7...b4b15b8c7c)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-10 07:22:36 -07:00
dependabot[bot] 56c76ad9cd
build(deps): bump procfs from 0.16.0 to 0.17.0 (#3269)
Bumps [procfs](https://github.com/eminence/procfs) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/eminence/procfs/releases)
- [Commits](https://github.com/eminence/procfs/compare/v0.16.0...v0.17.0)

---
updated-dependencies:
- dependency-name: procfs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-10 07:21:30 -07:00
dependabot[bot] 7a37294b8a
build(deps): bump actions/checkout from 4.2.0 to 4.2.1 (#3264)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](d632683dd7...eef61447b9)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-10 07:21:13 -07:00
dependabot[bot] 89ba5b5d8b
build(deps): bump pin-project from 1.1.5 to 1.1.6 (#3270)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.5 to 1.1.6.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.5...v1.1.6)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 13:07:33 -04:00
dependabot[bot] b1e055f9ae
build(deps): bump once_cell from 1.20.1 to 1.20.2 (#3266)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.20.1 to 1.20.2.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.1...v1.20.2)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 01:04:38 -04:00
dependabot[bot] 79281f388d
build(deps): bump proc-macro2 from 1.0.86 to 1.0.87 (#3265)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.86 to 1.0.87.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.86...1.0.87)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 01:03:18 -04:00
dependabot[bot] 8a7d9956e5
build(deps): bump futures from 0.3.30 to 0.3.31 (#3267)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.30 to 0.3.31.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.30...0.3.31)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 11:39:48 -04:00
dependabot[bot] 53b528a38f
build(deps): bump cc from 1.1.24 to 1.1.28 (#3261)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.24 to 1.1.28.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.24...cc-v1.1.28)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-07 10:14:05 -04:00
dependabot[bot] 18b2892dda
build(deps): bump regex from 1.10.6 to 1.11.0 (#3260)
Bumps [regex](https://github.com/rust-lang/regex) from 1.10.6 to 1.11.0.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.10.6...1.11.0)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-07 10:13:06 -04:00
dependabot[bot] bd91d6a5d6
build(deps): bump object from 0.36.4 to 0.36.5 (#3259)
Bumps [object](https://github.com/gimli-rs/object) from 0.36.4 to 0.36.5.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.4...0.36.5)

---
updated-dependencies:
- dependency-name: object
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-07 10:11:33 -04:00
dependabot[bot] e0502b52f8
build(deps): bump once_cell from 1.20.0 to 1.20.1 (#3255)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.20.0 to 1.20.1.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.0...v1.20.1)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-04 10:48:29 -04:00
dependabot[bot] fd92be54cc
build(deps): bump syn from 2.0.77 to 2.0.79 (#3256)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.77 to 2.0.79.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.77...2.0.79)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-04 10:48:01 -04:00
dependabot[bot] 318cf75ed6
build(deps): bump ipnet from 2.10.0 to 2.10.1 (#3257)
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.10.0 to 2.10.1.
- [Release notes](https://github.com/krisprice/ipnet/releases)
- [Changelog](https://github.com/krisprice/ipnet/blob/master/RELEASES.md)
- [Commits](https://github.com/krisprice/ipnet/commits)

---
updated-dependencies:
- dependency-name: ipnet
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-04 10:45:46 -04:00
dependabot[bot] 269cbbc76b
build(deps): bump symbolic-demangle from 12.11.1 to 12.12.0 (#3247)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.11.1 to 12.12.0.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.11.1...12.12.0)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-03 12:13:37 -04:00
dependabot[bot] 0c9aef9268
build(deps): bump async-stream from 0.3.5 to 0.3.6 (#3248)
Bumps [async-stream](https://github.com/tokio-rs/async-stream) from 0.3.5 to 0.3.6.
- [Release notes](https://github.com/tokio-rs/async-stream/releases)
- [Commits](https://github.com/tokio-rs/async-stream/compare/v0.3.5...v0.3.6)

---
updated-dependencies:
- dependency-name: async-stream
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-03 12:13:18 -04:00
dependabot[bot] 33082d6af2
build(deps): bump codecov/codecov-action from 4.5.0 to 4.6.0 (#3249)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](e28ff129e5...b9fd7d16f6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-03 12:13:05 -04:00
dependabot[bot] 637efa6a57
build(deps): bump indexmap from 2.5.0 to 2.6.0 (#3250)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.5.0 to 2.6.0.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.5.0...2.6.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-03 12:12:37 -04:00
dependabot[bot] 3abb0ee2b7
build(deps): bump httparse from 1.9.4 to 1.9.5 (#3251)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.9.4 to 1.9.5.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.9.4...v1.9.5)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-03 10:39:28 -04:00
dependabot[bot] 7a4eb542d8
build(deps): bump the opentelemetry group with 2 updates (#3246)
Bumps the opentelemetry group with 2 updates: [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust) and [opentelemetry_sdk](https://github.com/open-telemetry/opentelemetry-rust).


Updates `opentelemetry` from 0.25.0 to 0.26.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.25.0...opentelemetry-0.26.0)

Updates `opentelemetry_sdk` from 0.25.0 to 0.26.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry_sdk-0.25.0...opentelemetry_sdk-0.26.0)

---
updated-dependencies:
- dependency-name: opentelemetry
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
- dependency-name: opentelemetry_sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-03 10:38:37 -04:00
katelyn martin 771dfd58da
justfile: Add devcontainer cli recipes (#3241)
this commit introduces two recipes to manage a dev container for this
repository using the [cli].

`just devcontainer-up` will create and run a devcontainer.

`just devcontainer-exec` will execute a command in the container.

[cli]: https://github.com/devcontainers/cli

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-10-02 17:46:15 -04:00
dependabot[bot] a41c37bbfa
build(deps): bump autocfg from 1.3.0 to 1.4.0 (#3237)
Bumps [autocfg](https://github.com/cuviper/autocfg) from 1.3.0 to 1.4.0.
- [Commits](https://github.com/cuviper/autocfg/compare/1.3.0...1.4.0)

---
updated-dependencies:
- dependency-name: autocfg
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-01 18:35:10 -07:00
dependabot[bot] c900ba5af8
build(deps): bump cc from 1.1.21 to 1.1.24 (#3244)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.21 to 1.1.24.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.21...cc-v1.1.24)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-01 18:34:31 -07:00
Scott Fleener 04b79f6801 Allow configuring proxy trace exporter service name
Currently, we hard-code the trace service name to "linkerd-proxy". This allows this name to be configured through an env that can be set by the injector, annotations, etc.

linkerd/linkerd2#11157

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-10-01 15:16:55 -04:00
dependabot[bot] e072e6315b
build(deps): bump flate2 from 1.0.33 to 1.0.34 (#3236)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.33 to 1.0.34.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Changelog](https://github.com/rust-lang/flate2-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.33...1.0.34)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-01 07:51:13 -07:00
Scott Fleener 3130e3c08a Integrate OpenTelemetry into the proxy
OpenCensus is a deprecated protocol and is slated to be removed from upstream collectors soon.

This wires up the proxy to optionally use OpenTelmetry as the format for exported traces. Currently, this defaults to the existing OpenCensus exporter, and we can switch the default later.

[#10111](linkerd/linkerd2#10111)

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-10-01 10:49:35 -04:00
dependabot[bot] 642c2af145
build(deps): bump async-trait from 0.1.82 to 0.1.83 (#3233)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.82 to 0.1.83.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.82...0.1.83)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-26 14:04:54 -07:00
dependabot[bot] 6e84339d7c
build(deps): bump actions/checkout from 4.1.7 to 4.2.0 (#3235)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](692973e3d9...d632683dd7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-26 14:04:41 -07:00
Zahari Dichev fa4c8dcbc1
tls: add `DetectSni` middleware (#3199)
This change adds a new `DetectSni` middleware to be used in the outbound stack
in order to extract the SNI extension from the `ClientHello` of a TLS session and apply
routing decisions based on it.

In contrast to `DetectTls` this new middleware is concerned with just extracting the SNI
as opposed to terminating the TLS session.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-09-25 18:36:56 +03:00
dependabot[bot] 25589d440e
build(deps): bump the opentelemetry group with 2 updates (#3225)
* build(deps): bump the opentelemetry group with 2 updates

Bumps the opentelemetry group with 2 updates: [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust) and [opentelemetry_sdk](https://github.com/open-telemetry/opentelemetry-rust).


Updates `opentelemetry` from 0.23.0 to 0.25.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.23.0...opentelemetry-0.25.0)

Updates `opentelemetry_sdk` from 0.23.0 to 0.25.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases)
- [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-0.23.0...opentelemetry_sdk-0.25.0)

---
updated-dependencies:
- dependency-name: opentelemetry
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
- dependency-name: opentelemetry_sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: opentelemetry
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix API breakage with OpenTelemetry SpanData

Signed-off-by: Scott Fleener <scott@buoyant.io>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Scott Fleener <scott@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Scott Fleener <scott@buoyant.io>
2024-09-25 08:08:52 -07:00
katelyn martin a5e43f4011
docs(http/prom): Fix broken doc links (#3232)
<https://github.com/linkerd/linkerd2-proxy/pull/3228/files>

this fixes some links, because i observed github actions warning about
these in a different pr. pardon me! 😅

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-09-25 08:39:12 -04:00
katelyn martin 911d4432f2
docs(integration): Document test environment interfaces (#3229)
this is a documentation pass, fleshing out information about how the
`TestEnv` interfaces work.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-09-25 08:38:28 -04:00
katelyn martin 4624122dd6
docs(http/prom): Add metadata to Cargo.toml manifest (#3230)
this commit introduces a description and adds the authors.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-09-25 08:37:32 -04:00
katelyn martin 65b7fec2f2
chore(app): Add `impl` banner comments (#3231)
the equivalent blocks in the parent `route.rs` file have the same
`// === impl T ===` blocks that are added here. these are introduced,
because they help visually group impl blocks when code in these files is
folded.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-09-25 08:33:35 -04:00
katelyn martin ca612202d5
chore(app): Disallow warnings in policy router's backend metrics (#3227)
a stray `#![allow(warnings)]` directive seems to have slipped in from
an initial prototyping phase.

this commit removes this directive from
`/linkerd/app/outbound/src/http/logical/policy/route/backend/metrics.rs`,
and addresses the newly unearthed warnings, related to unused imports.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-09-24 16:36:18 -04:00
katelyn martin d05b616949
docs(http/prom): Document request count middleware (#3228)
this is a light documentation pass outlining how the request counting
middleware fits together.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-09-24 16:35:56 -04:00
dependabot[bot] 44c610aae7
build(deps): bump libc from 0.2.158 to 0.2.159 (#3226)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.158 to 0.2.159.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.159/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.158...0.2.159)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-24 13:06:24 -07:00
Scott Fleener 87cb8fd02e Group opentelemetry dependency updates
OpenTelemetry packages should always be updated in lockstep with each other. This tells dependabot to group dependency updates into a single PR: https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#groups

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-09-24 12:52:41 -04:00
katelyn martin 67ed121209
fix(retry): Avoid panicking if responses come early (#3216)
`linkerd-http-retry` and `linkerd-retry` provide generic `tower`
middleware to allow services to retry requests that fail.

part of this middleware hinges on a `ReplayBody<B>` that will lazily
buffer request bodies' data for use in subsequent attempts. if a request
fails, the retry middleware will attempt to send another request,
assuming the original body was able to completely fit into this buffer.

`ReplayBody<B>` makes a subtle assummption, most succinctly stated in
this excerpt of an internal method's documentation:

```rust
// linkerd/http/retry/src/replay.rs
impl<B: Body> ReplayBody<B> {
    /// This panics if another clone has currently acquired the state, based on
    /// the assumption that a retry body will not be polled until the previous
    /// request has been dropped.
        fn acquire_state<'a>(
        state: &'a mut Option<BodyState<B>>,
        shared: &Mutex<Option<BodyState<B>>>,
    ) -> &'a mut BodyState<B> {
        // ...
    }
}
```

this assumption is slightly at odds with the request/response lifecycle
permitted within the HTTP/2 specification. see RFC 9113 § 8.1, "_HTTP
Message Framing_" (emphasis added):

> ..

> An HTTP request/response exchange fully consumes a single stream. A
> request starts with the HEADERS frame that puts the stream into the
> "open" state. **The request ends with a frame with the END_STREAM flag
> set**, which causes the stream to become "half-closed (local)" for the
> client and "half-closed (remote)" for the server. A response stream
> starts with zero or more interim responses in HEADERS frames, followed
> by a HEADERS frame containing a final status code.
>
> An HTTP response is complete after the server sends -- or the client
> receives -- a frame with the END_STREAM flag set (including any
> CONTINUATION frames needed to complete a field block). **A server can
> send a complete response prior to the client sending an entire request
> if the response does not depend on any portion of the request that has
> not been sent and received.**

<https://www.rfc-editor.org/rfc/rfc9113.html#section-8.1-11>

because of this, a retry may panic when checking if the previous request
body was capped, if a server delivers a response before the request is
complete. this has been observed when retrying
[wire-grpc](https://github.com/square/wire) requests, manifesting in a
panic with this message:

```text
thread 'main' panicked at 'if our `state` was `None`, the shared state must be `Some`', /__w/linkerd2-proxy/linkerd2-proxy/linkerd/http-retry/src/replay.rs:152:22
```

this commit refactors `ReplayBody::is_capped()` so that it will no
longer panic if there is an outstanding body still being polled.
rather, it will return `Some(true)` or `Some(false)` if the previous
body was capped, or `None` if it has not finished streaming.

the related logic in the `linkerd-http-retry` library is updated to
refrain from attempting a retry if a response is received before the
request stream was completed.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-09-23 17:51:13 -04:00
Scott Fleener a1d3c79af3 Add OpenTelemetry exporter implementation
This duplicates most of the logic from the existing OpenCensus exporter to keep the functionality as similar as possible.

[#10111](linkerd/linkerd2#10111)

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-09-23 16:13:21 -04:00
Scott Fleener 38ca37e60e Vendor OpenTelemetry protocol
In preparation for supporting the OpenTelemetry protocol for the proxy's traces, this vendors the relevant protobufs as well as some convenience helpers here.

This works around the fact that the existing `opentelemetry` crates do not support the version of tonic that we currently use (0.10), and this vendoring can be removed once we update.

[#10111](https://github.com/linkerd/linkerd2/issues/10111)

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-09-23 15:27:15 -04:00
dependabot[bot] cece9b65fc
build(deps): bump thiserror from 1.0.63 to 1.0.64 (#3219)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.63 to 1.0.64.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.63...1.0.64)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-23 10:50:41 +00:00
Zahari Dichev 09cb53ded8
policy: add TLS protocol type to client-policy crate (#3203)
In preparation for adding Tls routing, this change updates our `client-policy` crate with a `Protocol::Tls` variant.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-09-23 09:48:00 +03:00
Zahari Dichev 7cb7467231
feat(tls-route): add TLS route matching crate (#3192)
This commit includes a nonfunctional change that adds a TLS route-matching library.
The library works similarly to the `http-route` crate one but instead of relying on
HTTP concepts such as paths and headers is specific to TLS ones (e.g. SNI).

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-09-23 08:58:40 +03:00
dependabot[bot] d025cf9d32
build(deps): bump unicode-normalization from 0.1.23 to 0.1.24 (#3213)
Bumps [unicode-normalization](https://github.com/unicode-rs/unicode-normalization) from 0.1.23 to 0.1.24.
- [Commits](https://github.com/unicode-rs/unicode-normalization/compare/v0.1.23...v0.1.24)

---
updated-dependencies:
- dependency-name: unicode-normalization
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 11:13:57 +00:00
dependabot[bot] e898776a31
build(deps): bump cc from 1.1.19 to 1.1.21 (#3211)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.19 to 1.1.21.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.19...cc-v1.1.21)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 11:10:45 +00:00
dependabot[bot] 76efec6505
build(deps): bump bytes from 1.7.1 to 1.7.2 (#3210)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.7.1 to 1.7.2.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.7.1...v1.7.2)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 11:10:35 +00:00
dependabot[bot] 20c572bcd9
build(deps): bump symbolic-demangle from 12.11.0 to 12.11.1 (#3209)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.11.0 to 12.11.1.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.11.0...12.11.1)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 11:08:35 +00:00
dependabot[bot] 0449145c79
build(deps): bump tj-actions/changed-files from 45.0.1 to 45.0.2 (#3208)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.1 to 45.0.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](e9772d1404...48d8f15b2a)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-17 10:15:14 +00:00
dependabot[bot] 2b9896ff89
build(deps): bump once_cell from 1.19.0 to 1.20.0 (#3207)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.19.0 to 1.20.0.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.19.0...v1.20.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-16 10:34:53 +00:00
dependabot[bot] 5275e9b790
build(deps): bump cc from 1.1.18 to 1.1.19 (#3206)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.18 to 1.1.19.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.18...cc-v1.1.19)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-16 10:32:10 +00:00
dependabot[bot] 7352726203
build(deps): bump memmap2 from 0.9.4 to 0.9.5 (#3205)
Bumps [memmap2](https://github.com/RazrFalcon/memmap2-rs) from 0.9.4 to 0.9.5.
- [Changelog](https://github.com/RazrFalcon/memmap2-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/RazrFalcon/memmap2-rs/compare/v0.9.4...v0.9.5)

---
updated-dependencies:
- dependency-name: memmap2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-16 10:29:45 +00:00
dependabot[bot] 27365ca3d6
build(deps): bump anyhow from 1.0.88 to 1.0.89 (#3204)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.88 to 1.0.89.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.88...1.0.89)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-16 10:29:25 +00:00
dependabot[bot] 08b87a52e3
build(deps): bump rustix from 0.38.36 to 0.38.37 (#3202)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.36 to 0.38.37.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.36...v0.38.37)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-12 11:03:44 +00:00
dependabot[bot] 3dc624d584
build(deps): bump anyhow from 1.0.87 to 1.0.88 (#3201)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.87 to 1.0.88.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.87...1.0.88)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-12 11:03:08 +00:00
Vadim Makerov 14fde8f5e0
Implement setting TCP_USER_TIMEOUT option for TCP sockets (#3174)
To ensure stable connection and exclude dangling connections set TCP_USER_TIMEOUT for each TCP socket for inbound, outbound and to control-plane traffic.

UserTimeout configured in same way as Keepalive for ServerConfig and ConnectConfig.
if setting UserTimeout failed - there will be warning to console

Signed-off-by: UsingCoding <extendedmoment@outlook.com>
2024-09-11 12:12:13 -07:00
dependabot[bot] 7ef837e0a0
build(deps): bump unicode-ident from 1.0.12 to 1.0.13 (#3198)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.12 to 1.0.13.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.12...1.0.13)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-11 11:05:32 +00:00
dependabot[bot] c3eac07969
build(deps): bump anyhow from 1.0.86 to 1.0.87 (#3197)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.86 to 1.0.87.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.86...1.0.87)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-11 11:04:59 +00:00
dependabot[bot] 6d69581dca
build(deps): bump DavidAnson/markdownlint-cli2-action (#3196)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 16.0.0 to 17.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](b4c9feab76...db43aef879)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-11 10:47:46 +00:00
Scott Fleener 3fe498e532 Use absolute timestamp format in JSON logs.
The current log format for the proxy shows the number of seconds since process start. This is fine for most cases, but can make logs processing and aggregation tricky, especially when using the JSON format.

This changes the JSON format to always report the absolute timestamp instead of uptime. The existing format (using uptime in seconds) is preserved in the plain logs format, as it is still useful for debugging and the absolute timestamp can be retrieved using `kubectl logs --timestamp`.

Example output with the env var set:
```json
{"timestamp":"2024-09-09T13:38:56.913847Z","level":"DEBUG","fields":{"message":"Only allowing connections targeting `LINKERD2_PROXY_INBOUND_IPS`","allowed":"{10.42.0.48}"},"target":"linkerd_app::env","threadId":"ThreadId(1)"}
{"timestamp":"2024-09-09T13:38:56.919918Z","level":"INFO","fields":{"message":"Using single-threaded proxy runtime"},"target":"linkerd2_proxy::rt","threadId":"ThreadId(1)"}
```

Fixes [#12505](https://github.com/linkerd/linkerd2/issues/12505)

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-09-10 11:36:37 -04:00
dependabot[bot] f82de85820
build(deps): bump symbolic-demangle from 12.10.1 to 12.11.0 (#3194)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.10.1 to 12.11.0.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.10.1...12.11.0)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-10 10:34:13 +00:00
katelyn martin 193dcaf818
feat(rt): expose tokio runtime metrics (#3177)
Tokio has an unstable feature supporting runtime metrics.

This allows service operators to export metrics to systems like
Prometheus, so that they can observe how their workloads are performing
on the tokio runtime. This exposes information like the number of worker
threads, queue depth, the number of tasks polled, and so on.

`linkerd2-proxy` should expose these metrics.

This uses the `kubert-prometheus-tokio` crate to register a `Runtime`
metrics worker, and spawn a task to probe these metrics at a fixed,
regular interval.

see: <https://github.com/olix0r/kubert/tree/main/kubert-prometheus-tokio>

if the `tokio_unstable` feature is not enabled, this will emit a debug
event and do nothing.

Signed-off-by: katelyn martin <kate@buoyant.io>
2024-09-09 19:06:05 -07:00
dependabot[bot] 23e3c4e1c1
build(deps): bump cpufeatures from 0.2.13 to 0.2.14 (#3190)
Bumps [cpufeatures](https://github.com/RustCrypto/utils) from 0.2.13 to 0.2.14.
- [Commits](https://github.com/RustCrypto/utils/compare/cpufeatures-v0.2.13...cpufeatures-v0.2.14)

---
updated-dependencies:
- dependency-name: cpufeatures
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-09 10:54:37 +00:00
dependabot[bot] b937265fd1
build(deps): bump ipnet from 2.9.0 to 2.10.0 (#3189)
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.9.0 to 2.10.0.
- [Release notes](https://github.com/krisprice/ipnet/releases)
- [Changelog](https://github.com/krisprice/ipnet/blob/master/RELEASES.md)
- [Commits](https://github.com/krisprice/ipnet/compare/2.9.0...2.10.0)

---
updated-dependencies:
- dependency-name: ipnet
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-09 10:54:07 +00:00
dependabot[bot] c556750cab
build(deps): bump cc from 1.1.16 to 1.1.18 (#3188)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.16 to 1.1.18.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.16...cc-v1.1.18)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-09 10:53:08 +00:00
dependabot[bot] fdc9c2f298
build(deps): bump serde from 1.0.209 to 1.0.210 (#3187)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.209 to 1.0.210.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.209...v1.0.210)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-09 10:52:12 +00:00
Scott Fleener c0a0114a6d
Fix typo in justfile recipe (#3185)
Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-09-06 08:03:44 -07:00
dependabot[bot] 0b817714b0
build(deps): bump symbolic-common from 12.10.1 to 12.11.0 (#3184)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.10.1 to 12.11.0.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.10.1...12.11.0)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-06 11:27:53 +00:00
dependabot[bot] 7c4df69be5
build(deps): bump rustix from 0.38.35 to 0.38.36 (#3183)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.35 to 0.38.36.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.35...v0.38.36)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-06 11:26:07 +00:00
dependabot[bot] 64bc950a37
build(deps): bump serde_json from 1.0.127 to 1.0.128 (#3182)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.127 to 1.0.128.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/1.0.127...1.0.128)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-06 11:25:46 +00:00
dependabot[bot] 036bc6608d
build(deps): bump cc from 1.1.15 to 1.1.16 (#3181)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.15 to 1.1.16.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.15...cc-v1.1.16)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-06 11:00:13 +00:00
dependabot[bot] 65a9342524
build(deps): bump tokio-util from 0.7.11 to 0.7.12 (#3180)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.11 to 0.7.12.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.11...tokio-util-0.7.12)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-06 10:59:17 +00:00
dependabot[bot] f2deef3dc4
build(deps): bump tokio-stream from 0.1.15 to 0.1.16 (#3179)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.15 to 0.1.16.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.15...tokio-stream-0.1.16)

---
updated-dependencies:
- dependency-name: tokio-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-06 10:58:43 +00:00
Scott Fleener 8382b72115
Add wall clock gauge to proxy metrics (#3176)
Add wall clock gauge to process metrics

Signed-off-by: Scott Fleener <scott@buoyant.io>
2024-09-05 15:45:22 -04:00
dependabot[bot] 80f1c2f47f
build(deps): bump indexmap from 2.4.0 to 2.5.0 (#3171)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.4.0 to 2.5.0.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.4.0...2.5.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-05 13:48:08 +00:00
dependabot[bot] 337b00c18b
build(deps): bump actions/upload-artifact from 4.3.6 to 4.4.0 (#3163)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.6 to 4.4.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](834a144ee9...50769540e7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-05 06:36:55 -07:00
dependabot[bot] d8f96cf3eb
build(deps): bump rustix from 0.38.34 to 0.38.35 (#3175)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.34 to 0.38.35.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.34...v0.38.35)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-05 11:05:47 +00:00
dependabot[bot] 080366f4ab
build(deps): bump object from 0.36.3 to 0.36.4 (#3173)
Bumps [object](https://github.com/gimli-rs/object) from 0.36.3 to 0.36.4.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.3...0.36.4)

---
updated-dependencies:
- dependency-name: object
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-04 10:26:23 +00:00
dependabot[bot] 23dda3ca75
build(deps): bump cpp_demangle from 0.4.3 to 0.4.4 (#3170)
Bumps [cpp_demangle](https://github.com/gimli-rs/cpp_demangle) from 0.4.3 to 0.4.4.
- [Changelog](https://github.com/gimli-rs/cpp_demangle/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/cpp_demangle/compare/0.4.3...0.4.4)

---
updated-dependencies:
- dependency-name: cpp_demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-03 10:15:43 +00:00
dependabot[bot] bba6ce9fbb
build(deps): bump symbolic-demangle from 12.10.0 to 12.10.1 (#3167)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.10.0 to 12.10.1.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.10.0...12.10.1)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 10:50:27 +00:00
dependabot[bot] 96bdb72610
build(deps): bump async-trait from 0.1.81 to 0.1.82 (#3166)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.81 to 0.1.82.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.81...0.1.82)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 10:50:03 +00:00
dependabot[bot] 59124a1e67
build(deps): bump syn from 2.0.76 to 2.0.77 (#3165)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.76 to 2.0.77.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.76...2.0.77)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 10:45:40 +00:00
dependabot[bot] 67c0acf69c
build(deps): bump tj-actions/changed-files from 45.0.0 to 45.0.1 (#3162)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 45.0.0 to 45.0.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](40853de9f8...e9772d1404)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 10:35:02 +00:00
dependabot[bot] 7963e1605a
build(deps): bump tokio from 1.39.3 to 1.40.0 (#3161)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.39.3 to 1.40.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.39.3...tokio-1.40.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-30 10:22:50 +00:00
dependabot[bot] 5f6222e5dc
build(deps): bump oid-registry from 0.7.0 to 0.7.1 (#3159)
Bumps [oid-registry](https://github.com/rusticata/oid-registry) from 0.7.0 to 0.7.1.
- [Commits](https://github.com/rusticata/oid-registry/compare/oid-registry-0.7.0...oid-registry-0.7.1)

---
updated-dependencies:
- dependency-name: oid-registry
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-29 10:38:49 +00:00
dependabot[bot] b256f62a30
build(deps): bump cc from 1.1.14 to 1.1.15 (#3158)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.14 to 1.1.15.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.14...cc-v1.1.15)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-28 10:50:58 +00:00
dependabot[bot] 8cb36f20b2
build(deps): bump serde_json from 1.0.125 to 1.0.127 (#3156)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.125 to 1.0.127.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/1.0.125...1.0.127)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 10:34:01 +00:00
dependabot[bot] a353ff3ab4
build(deps): bump flate2 from 1.0.32 to 1.0.33 (#3154)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.32 to 1.0.33.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Changelog](https://github.com/rust-lang/flate2-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.32...1.0.33)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 10:31:04 +00:00
dependabot[bot] 2e95684840
build(deps): bump serde from 1.0.208 to 1.0.209 (#3153)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.208 to 1.0.209.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.208...v1.0.209)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-26 10:54:24 +00:00
dependabot[bot] 4d62f8d4c4
build(deps): bump prettyplease from 0.2.20 to 0.2.22 (#3152)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.20 to 0.2.22.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.20...0.2.22)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-26 10:53:36 +00:00
dependabot[bot] 5cf28f7868
build(deps): bump fastrand from 2.1.0 to 2.1.1 (#3151)
Bumps [fastrand](https://github.com/smol-rs/fastrand) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/smol-rs/fastrand/releases)
- [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/fastrand/compare/v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: fastrand
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-26 10:51:51 +00:00
dependabot[bot] 22a248bac1
build(deps): bump cc from 1.1.13 to 1.1.14 (#3150)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.13 to 1.1.14.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.13...cc-v1.1.14)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-23 11:14:09 +00:00
dependabot[bot] 6a02ee6bab
build(deps): bump quote from 1.0.36 to 1.0.37 (#3149)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.36 to 1.0.37.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.36...1.0.37)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-23 11:04:44 +00:00
dependabot[bot] 910506b288
build(deps): bump tj-actions/changed-files from 44.5.7 to 45.0.0 (#3148)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.5.7 to 45.0.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](c65cd88342...40853de9f8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-22 10:52:53 +00:00
dependabot[bot] 682b763f65
build(deps): bump flate2 from 1.0.31 to 1.0.32 (#3147)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.31 to 1.0.32.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Changelog](https://github.com/rust-lang/flate2-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.31...1.0.32)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-20 10:21:54 +00:00
dependabot[bot] c1e2a5af20
build(deps): bump tokio from 1.39.2 to 1.39.3 (#3146)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.39.2 to 1.39.3.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.39.2...tokio-1.39.3)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-19 10:56:12 +00:00
dependabot[bot] f6e0dc74d6
build(deps): bump libc from 0.2.156 to 0.2.158 (#3145)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.156 to 0.2.158.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.158/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.156...0.2.158)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-19 10:53:01 +00:00
dependabot[bot] eab4dd2224
build(deps): bump syn from 2.0.74 to 2.0.75 (#3144)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.74 to 2.0.75.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.74...2.0.75)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-19 10:47:53 +00:00
dependabot[bot] 74107e474a
build(deps): bump libc from 0.2.155 to 0.2.156 (#3143)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.155 to 0.2.156.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.156/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.155...0.2.156)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-16 11:05:29 +00:00
dependabot[bot] f42246db38
build(deps): bump serde from 1.0.207 to 1.0.208 (#3142)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.207 to 1.0.208.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.207...v1.0.208)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-16 11:04:55 +00:00
dependabot[bot] fe8e30d17e
build(deps): bump cc from 1.1.11 to 1.1.13 (#3141)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.11 to 1.1.13.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.11...cc-v1.1.13)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-16 11:04:39 +00:00
dependabot[bot] 10a7d95d07
build(deps): bump cmake from 0.1.50 to 0.1.51 (#3140)
Bumps [cmake](https://github.com/rust-lang/cmake-rs) from 0.1.50 to 0.1.51.
- [Release notes](https://github.com/rust-lang/cmake-rs/releases)
- [Changelog](https://github.com/rust-lang/cmake-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cmake-rs/compare/0.1.50...v0.1.51)

---
updated-dependencies:
- dependency-name: cmake
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-15 10:15:58 +00:00
dependabot[bot] 4558802d3a
build(deps): bump serde_json from 1.0.124 to 1.0.125 (#3139)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.124 to 1.0.125.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.124...1.0.125)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-15 10:15:01 +00:00
dependabot[bot] 240c5eb4cb
build(deps): bump tower-layer from 0.3.2 to 0.3.3 (#3138)
Bumps [tower-layer](https://github.com/tower-rs/tower) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-layer-0.3.2...tower-layer-0.3.3)

---
updated-dependencies:
- dependency-name: tower-layer
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-15 10:14:40 +00:00
dependabot[bot] 717c5d7ef2
build(deps): bump indexmap from 2.3.0 to 2.4.0 (#3137)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.3.0 to 2.4.0.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.3.0...2.4.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-14 11:14:18 +00:00
dependabot[bot] 35963b74df
build(deps): bump tower-service from 0.3.2 to 0.3.3 (#3136)
Bumps [tower-service](https://github.com/tower-rs/tower) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-service-0.3.2...tower-service-0.3.3)

---
updated-dependencies:
- dependency-name: tower-service
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-14 11:13:23 +00:00
dependabot[bot] 984e43bfd7
build(deps): bump cc from 1.1.10 to 1.1.11 (#3134)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.10 to 1.1.11.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.10...cc-v1.1.11)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-14 11:11:37 +00:00
dependabot[bot] 02ce037bd5
build(deps): bump cpufeatures from 0.2.12 to 0.2.13 (#3133)
Bumps [cpufeatures](https://github.com/RustCrypto/utils) from 0.2.12 to 0.2.13.
- [Commits](https://github.com/RustCrypto/utils/compare/cpufeatures-v0.2.12...cpufeatures-v0.2.13)

---
updated-dependencies:
- dependency-name: cpufeatures
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-13 10:14:37 +00:00
dependabot[bot] 6592e7b03b
build(deps): bump serde_json from 1.0.122 to 1.0.124 (#3132)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.122 to 1.0.124.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.122...v1.0.124)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-13 10:14:02 +00:00
dependabot[bot] 0ccf7e004c
build(deps): bump serde from 1.0.206 to 1.0.207 (#3131)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.206 to 1.0.207.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.206...v1.0.207)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-13 10:11:40 +00:00
dependabot[bot] 0f5a0d42c8
build(deps): bump cc from 1.1.8 to 1.1.10 (#3129)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.8 to 1.1.10.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.8...cc-v1.1.10)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 10:37:00 +00:00
dependabot[bot] 70778a43ba
build(deps): bump serde from 1.0.205 to 1.0.206 (#3128)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.205 to 1.0.206.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.205...v1.0.206)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 10:27:10 +00:00
dependabot[bot] 27e134416a
build(deps): bump syn from 2.0.72 to 2.0.74 (#3127)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.72 to 2.0.74.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.72...2.0.74)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 10:26:28 +00:00
dependabot[bot] fa8a9bc0df
build(deps): bump mio from 1.0.1 to 1.0.2 (#3126)
Bumps [mio](https://github.com/tokio-rs/mio) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 10:24:50 +00:00
dependabot[bot] 4420647216
build(deps): bump serde from 1.0.204 to 1.0.205 (#3125)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.204 to 1.0.205.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.204...v1.0.205)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 10:30:42 +00:00
dependabot[bot] 5746df2eed
build(deps): bump cc from 1.1.7 to 1.1.8 (#3124)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.7 to 1.1.8.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.7...cc-v1.1.8)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-08 10:27:50 +00:00
dependabot[bot] c3c3537a17
build(deps): bump object from 0.36.2 to 0.36.3 (#3123)
Bumps [object](https://github.com/gimli-rs/object) from 0.36.2 to 0.36.3.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.2...0.36.3)

---
updated-dependencies:
- dependency-name: object
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-07 10:48:55 +00:00
dependabot[bot] cb610dd5d3
build(deps): bump actions/upload-artifact from 4.3.5 to 4.3.6 (#3122)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.5 to 4.3.6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](89ef406dd8...834a144ee9)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-07 10:40:38 +00:00
dependabot[bot] 83f2c5f7ac
build(deps): bump ppv-lite86 from 0.2.19 to 0.2.20 (#3120)
Bumps [ppv-lite86](https://github.com/cryptocorrosion/cryptocorrosion) from 0.2.19 to 0.2.20.
- [Commits](https://github.com/cryptocorrosion/cryptocorrosion/commits)

---
updated-dependencies:
- dependency-name: ppv-lite86
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 11:04:12 +00:00
dependabot[bot] 5dc01f32a4
build(deps): bump flate2 from 1.0.30 to 1.0.31 (#3119)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.30 to 1.0.31.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/commits)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 11:02:32 +00:00
dependabot[bot] 173734936d
build(deps): bump tempfile from 3.10.1 to 3.11.0 (#3117)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.10.1 to 3.11.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.10.1...v3.11.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 10:59:43 +00:00
dependabot[bot] 09b773c285
build(deps): bump regex from 1.10.5 to 1.10.6 (#3116)
Bumps [regex](https://github.com/rust-lang/regex) from 1.10.5 to 1.10.6.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.10.5...1.10.6)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 10:58:16 +00:00
dependabot[bot] c1e57921e6
build(deps): bump actions/upload-artifact from 4.3.4 to 4.3.5 (#3115)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.4 to 4.3.5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](0b2256b8c0...89ef406dd8)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 10:23:15 +00:00
dependabot[bot] 60b50abb68
build(deps): bump serde_json from 1.0.121 to 1.0.122 (#3113)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.121 to 1.0.122.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.121...v1.0.122)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-02 10:25:47 +00:00
dependabot[bot] 2fbc350592
build(deps): bump bytes from 1.7.0 to 1.7.1 (#3112)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.7.0 to 1.7.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.7.0...v1.7.1)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-02 10:22:48 +00:00
dependabot[bot] bef3c32b4c
build(deps): bump tj-actions/changed-files from 44.5.6 to 44.5.7 (#3111)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.5.6 to 44.5.7.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](6b2903bdce...c65cd88342)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 10:39:19 +00:00
dependabot[bot] 4fced7ca98
build(deps): bump asn1-rs-derive from 0.5.0 to 0.5.1 (#3108)
Bumps [asn1-rs-derive](https://github.com/rusticata/asn1-rs) from 0.5.0 to 0.5.1.
- [Release notes](https://github.com/rusticata/asn1-rs/releases)
- [Changelog](https://github.com/rusticata/asn1-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rusticata/asn1-rs/compare/asn1-rs-0.5.0...asn1-rs-0.5.1)

---
updated-dependencies:
- dependency-name: asn1-rs-derive
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 10:26:55 +00:00
dependabot[bot] 0332ddf7e3
build(deps): bump bytes from 1.6.1 to 1.7.0 (#3110)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.6.1...v1.7.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 10:17:06 +00:00
dependabot[bot] 5544fe01e5
build(deps): bump asn1-rs from 0.6.1 to 0.6.2 (#3109)
Bumps [asn1-rs](https://github.com/rusticata/asn1-rs) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/rusticata/asn1-rs/releases)
- [Changelog](https://github.com/rusticata/asn1-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rusticata/asn1-rs/compare/asn1-rs-0.6.1...asn1-rs-0.6.2)

---
updated-dependencies:
- dependency-name: asn1-rs
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 10:16:11 +00:00
dependabot[bot] 1441c37fd6
build(deps): bump indexmap from 2.2.6 to 2.3.0 (#3107)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.2.6 to 2.3.0.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.2.6...2.3.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 10:13:42 +00:00
Oliver Gould 6b93498d48
fix(http): Set logging contexts on HTTP/1 clients (#3106)
HTTP/1 clients do not preserve the calling trace context, so Hyper client debug
logs are emitted without context metadata.

This change updates the HTTP/1 client to use an executor that preserves the
tracing context.
2024-07-31 11:49:24 -07:00
dependabot[bot] 13941bd813
build(deps): bump ppv-lite86 from 0.2.17 to 0.2.19 (#3105)
Bumps [ppv-lite86](https://github.com/cryptocorrosion/cryptocorrosion) from 0.2.17 to 0.2.19.
- [Commits](https://github.com/cryptocorrosion/cryptocorrosion/commits/ppv-lite86-0.2.19)

---
updated-dependencies:
- dependency-name: ppv-lite86
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-31 10:17:29 +00:00
dependabot[bot] c67d97e2bd
build(deps): bump cc from 1.1.6 to 1.1.7 (#3103)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.6 to 1.1.7.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.6...cc-v1.1.7)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-30 10:43:31 +00:00
dependabot[bot] 6f550c1bc4
build(deps): bump tokio from 1.39.1 to 1.39.2 (#3102)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.39.1 to 1.39.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.39.1...tokio-1.39.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-29 10:41:20 +00:00
dependabot[bot] 0dd2228a17
build(deps): bump serde_json from 1.0.120 to 1.0.121 (#3101)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.120 to 1.0.121.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.120...v1.0.121)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-29 10:41:13 +00:00
Alejandro Pedraza fd76e8156f
feat(inbound): Log traffic with the 'audit' policy (#3068)
Audit mode is triggered by the policy controller, which will create an
authorization named "audit" allowing traffic for the given target. When
the proxy processes an authorization with such name it will log it at
INFO.

Also, add "audit" to the possible values for
`LINKERD2_PROXY_INBOUND_DEFAULT_POLICY`, whose effect is the same as
"all-unauthenticated".
2024-07-26 15:43:53 +00:00
Oliver Gould f09685dd8e
feat(outbound): Control retry & timeout policies with headers (#3098)
Recent changes have introduced the ability to control retry and timeout via the
control plane. This PR extends this functionality with a set of headers that can
be used to augment/override these policies on a per-request basis.

This feature must be enabled by the control plane (via OutboundPolicy API
response). When enabled, the following headers can be used to control retry and
timeouts:

- `l5d-timeout` / `l5d-request-timeout`: Controls the overall request-response
  stream timeout.
- `l5d-response-timeout`: Controls the timeout for the response stream.
- `l5d-retry-timeout`: Controls the timeout for each retry attempt (triggering
  another retry if exceeded).
- `l5d-retry-limit`: Controls the maximum number of retries.
- `l5d-retry-http`: Controls the HTTP status codes that trigger a retry.
- `l5d-retry-grpc`: Controls the gRPC status codes that trigger a retry.
2024-07-26 15:36:02 +00:00
dependabot[bot] ab4a7025dd
build(deps): bump version_check from 0.9.4 to 0.9.5 (#3100)
Bumps [version_check](https://github.com/SergioBenitez/version_check) from 0.9.4 to 0.9.5.
- [Commits](https://github.com/SergioBenitez/version_check/compare/v0.9.4...v0.9.5)

---
updated-dependencies:
- dependency-name: version_check
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-26 11:02:00 +00:00
Oliver Gould c7b77d698b
chore(outbound): Simplify router test utilities (#3099)
In preparation for adding more tests, this commit simplifies the test setup
utilities so that they can be shared and reused across test modules.
2024-07-26 01:26:51 +00:00
dependabot[bot] efe62793fa
build(deps): bump symbolic-demangle from 12.9.2 to 12.10.0 (#3096)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.9.2 to 12.10.0.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.9.2...12.10.0)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-25 10:10:36 +00:00
Oliver Gould a3a0b9fbb3
feat(outbound): Discover timeouts and retries (#3095)
This change updates linkerd2-proxy-api to v0.14.0, which introduces per-route
timeout and retry policies. These API responses are bound to the recently
introduced outbound retry policies.

Support for the legacy request_timeout configuration (which in rare situations
may be set by older control planes) is maintained, but is now deprecated in
favor of the newer timeout policies.
2024-07-25 05:18:07 +00:00
Oliver Gould 2c03996fb0
feat(outbound): Add HTTP and gRPC route retries (#3093)
This change updates the HTTP router to support retry policies that interact with
the recently introduced timeout policies.

Retry policies can match responses by HTTP status code ranges or by individual
GRPC response codes. Retry policies also include a max-retries limit and an
optional retry timeout. When a retry timeout is configured, the router
configures the endpoint-level stream timeout with a response header timeout that
ensures initial response headers are received so that a retry decision may be
made before returning the response to the server.

Routes are updated to include several retry-related metrics:

    # HELP outbound_http_route_retry_limit_exceeded Retryable requests not sent due to retry limits.
    # TYPE outbound_http_route_retry_limit_exceeded counter
    outbound_http_route_retry_limit_exceeded_total{parent...,route...} 0
    # HELP outbound_http_route_retry_overflow Retryable requests not sent due to circuit breakers.
    # TYPE outbound_http_route_retry_overflow counter
    outbound_http_route_retry_overflow_total{parent...,route...} 0
    # HELP outbound_http_route_retry_requests Retry requests emitted.
    # TYPE outbound_http_route_retry_requests counter
    outbound_http_route_retry_requests_total{parent...,route...} 0
    # HELP outbound_http_route_retry_successes Successful responses to retry requests.
    # TYPE outbound_http_route_retry_successes counter
    outbound_http_route_retry_successes_total{parent...,route...} 0
2024-07-24 21:32:47 -07:00
Oliver Gould 64ec8fe1b1
chore(retry): Simplify retry types (#3094)
Before introducing a new retry middleware for policy-driven retries, this change
updates the existing linkerd-http-retry crate (1) to use boxed Error types and
(2) to default to use BoxBody types with ReplayBody and (the newly renamed)
PeekTrailersBody.

No functional changes.
2024-07-24 16:34:42 -07:00
Oliver Gould a7aea0b33f
fix(stream_timeouts): Fix Error type classification (#3092)
The previous implementation of the stream timeout errors did not properly wrap
error type so they could be discovered by the metrics middleware. This change
fixes the error wrapping so that the underlying error type is discoverable as a
source.

This change also fixes a request header timeout calculation. This feature is not
currently exposed to the router stack.
2024-07-24 12:12:41 -07:00
Oliver Gould 0071ce8879
feat(outbound): Add per-route stream timeout policies (#3088)
This change adds a new timeout configuration to the outbound HTTP and gRPC
policies that sets request extensions to configure timeout behavior in the
endpoint stack. This ensures that timeouts manifest as endpoint-level errors
(i.e. visible to endpoint-level circuit breakers) instead of as a route-level
cancellation.

Several timeouts are implemented:

1. A request timeout, which is the maximum time a full request-response stream
   can remain in the proxy.
2. A response headers timeout that limits the amount of time after the request
   has been fully sent in which response headers must be fully received. This
   will be used to implement retry timeouts.
3. A response timeout, which limits the amount of time after the request has
   been fully sent in which a response may be in flight.
4. An idle timeout that limits the time a request-response stream may be sit in
   the proxy without any DATA frame activity.

NOTE: As this timeout is enforced in the endpoint stack, it is currently
possible for requests to remain in the balancer queue until a failfast timeout
is tripped. The configured timeouts only apply to requests that have been
dequeued and dispatched to an endpoint.

NOTE: A followup API change is required to support configuring all timeouts via
the API.
2024-07-24 17:07:30 +00:00
Oliver Gould d591271eb7
feat(outbound)!: Remove HTTP route timeouts (#3087)
In prepration to instrument timeouts in the endpoint stack, this change removes
the existing timeout enforcement in the HTTP router. This parameter could only
be configured with the older policy.linkerd.io resources (and not the
gateway.networking.k8s.io resources).

This timeout that is removed has a few problems:

1. It does not implement the proper 'request timeout' semantics, as described by
   the Gateway API spec. Instead, it enforces a timeout on on the response
   headers. There is no bounds on the lifetime of a response stream, for
   instance.
2. These errors are difficult to observe because they manifest as cancelations.

A follow-up change will replacae this with route configuration that enables
endpoint-level HTTP errors.
2024-07-24 09:31:53 -07:00
dependabot[bot] 3343c08270
build(deps): bump tj-actions/changed-files from 44.5.5 to 44.5.6 (#3072)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.5.5 to 44.5.6.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](cc733854b1...6b2903bdce)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-24 09:31:17 -07:00
dependabot[bot] 5899e1b4fd
build(deps): bump jobserver from 0.1.31 to 0.1.32 (#3091)
Bumps [jobserver](https://github.com/rust-lang/jobserver-rs) from 0.1.31 to 0.1.32.
- [Commits](https://github.com/rust-lang/jobserver-rs/compare/0.1.31...0.1.32)

---
updated-dependencies:
- dependency-name: jobserver
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-24 10:31:59 +00:00
dependabot[bot] c6db9ad77e
build(deps): bump object from 0.36.1 to 0.36.2 (#3090)
Bumps [object](https://github.com/gimli-rs/object) from 0.36.1 to 0.36.2.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.1...0.36.2)

---
updated-dependencies:
- dependency-name: object
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-24 10:27:55 +00:00
dependabot[bot] 35890b6f04
build(deps): bump tokio from 1.38.1 to 1.39.1 (#3089)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.38.1 to 1.39.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.38.1...tokio-1.39.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-24 10:27:38 +00:00
Oliver Gould 7c99d1592c
feat(outbound): Add response metrics to policy router (#3086)
The outbound policy router includes a requests counter that measures the number
of requests dispatched to each route-backend; but this does not provide
visibility into success rate or response time. Before introducing timeouts and
retires on outbound routes, this change introduces visibility into per-route
response metrics.

The route_request_statuses counters measure responses from the application's
point of view. Once retries are introduced, this will provide visibility into
the _effective_ success rate of each route.

    outbound_http_route_request_statuses_total{parent...,route...,http_status="200",error="TIMEOUT"} 0
    outbound_grpc_route_request_statuses_total{parent...,route...,grpc_status="NOT_FOUND",error="TIMEOUT"} 0

A coarse histogram is introduced at this scope to track the total duration of
requests dispatched to each route, covering all retries and all response stream
processing:

    outbound_http_route_request_duration_seconds_sum{parent...,route...} 0
    outbound_http_route_request_duration_seconds_count{parent...,route...} 0
    outbound_http_route_request_duration_seconds_bucket{le="0.05",parent...,route...} 0
    outbound_http_route_request_duration_seconds_bucket{le="0.5",parent...,route...} 0
    outbound_http_route_request_duration_seconds_bucket{le="1.0",parent...,route...} 0
    outbound_http_route_request_duration_seconds_bucket{le="10.0",parent...,route...} 0
    outbound_http_route_request_duration_seconds_bucket{le="+Inf",parent...,route...} 0

The route_backend_response_statuses counters measure the responses from
individual backends. This reflects the _actual_ success rate of each route as
served by the backend services.

    outbound_http_route_backend_response_statuses_total{parent...,route...,backend...,http_status="...",error="..."} 0
    outbound_grpc_route_backend_response_statuses_total{parent...,route...,backend...,grpc_status="...",error="..."} 0

A slightly more detailed histogram is introduced at this scope to track the time
spend processing responses from each backend (i.e. after the request has been
fully dispatched):

    outbound_http_route_backend_response_duration_seconds_sum{parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_count{parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_bucket{le="0.025",parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_bucket{le="0.05",parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_bucket{le="0.1",parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_bucket{le="0.25",parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_bucket{le="0.5",parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_bucket{le="1.0",parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_bucket{le="10.0",parent...,route...,backend...} 0
    outbound_http_route_backend_response_duration_seconds_bucket{le="+Inf",parent...,route...,backend...} 0

Note that duration histograms omit status code labels, as they needlessly
inflate metrics cardinality. The histograms that we have introduced here are
generally much more constrained, as we much choose broadly applicable buckets
and want to avoid cardinality explosion when many routes are used.
2024-07-23 11:16:41 -07:00
dependabot[bot] b310d635d3
build(deps): bump bytes from 1.6.0 to 1.6.1 (#3084)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-23 10:20:44 +00:00
dependabot[bot] a58bfdc946
build(deps): bump syn from 2.0.71 to 2.0.72 (#3082)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.71 to 2.0.72.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.71...2.0.72)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 10:24:51 +00:00
dependabot[bot] 741aec7dec
build(deps): bump prometheus-client from 0.22.2 to 0.22.3 (#3081)
Bumps [prometheus-client](https://github.com/prometheus/client_rust) from 0.22.2 to 0.22.3.
- [Release notes](https://github.com/prometheus/client_rust/releases)
- [Changelog](https://github.com/prometheus/client_rust/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_rust/compare/v0.22.2...v0.22.3)

---
updated-dependencies:
- dependency-name: prometheus-client
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 10:18:42 +00:00
dependabot[bot] d9e58f77a1
build(deps): bump libloading from 0.8.4 to 0.8.5 (#3079)
Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.8.4 to 0.8.5.
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.8.4...0.8.5)

---
updated-dependencies:
- dependency-name: libloading
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 10:17:02 +00:00
dependabot[bot] 6a85c5a628
build(deps): bump tinyvec from 1.7.0 to 1.8.0 (#3078)
Bumps [tinyvec](https://github.com/Lokathor/tinyvec) from 1.7.0 to 1.8.0.
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.7.0...v1.8.0)

---
updated-dependencies:
- dependency-name: tinyvec
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 10:16:15 +00:00
dependabot[bot] e487fb0bda
build(deps): bump syn from 2.0.70 to 2.0.71 (#3077)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.70 to 2.0.71.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.70...2.0.71)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-19 11:09:48 +00:00
dependabot[bot] 7dd6281941
build(deps): bump thiserror from 1.0.62 to 1.0.63 (#3076)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.62 to 1.0.63.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.62...1.0.63)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-19 11:09:01 +00:00
dependabot[bot] ee0d848e36
build(deps): bump tokio from 1.38.0 to 1.38.1 (#3075)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.38.0 to 1.38.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.38.0...tokio-1.38.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-19 11:08:42 +00:00
dependabot[bot] efe384e7d8
build(deps): bump cc from 1.1.5 to 1.1.6 (#3074)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.5 to 1.1.6.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.5...cc-v1.1.6)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-19 11:08:01 +00:00
dependabot[bot] 9e1e8a4106
build(deps): bump softprops/action-gh-release from 2.0.7 to 2.0.8 (#3073)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](fb2d03176f...c062e08bd5)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-19 10:36:05 +00:00
dependabot[bot] 48b2fb1acc
build(deps): bump actions/download-artifact from 4.1.7 to 4.1.8 (#3052)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.7 to 4.1.8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](65a9edc588...fa0a91b85d)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-18 10:21:40 -07:00
dependabot[bot] c2633cc4af
build(deps): bump softprops/action-gh-release from 2.0.6 to 2.0.7 (#3071)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](a74c6b72af...fb2d03176f)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-18 10:14:26 +00:00
dependabot[bot] c55c053c00
build(deps): bump thiserror from 1.0.61 to 1.0.62 (#3067)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.61 to 1.0.62.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.61...1.0.62)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-15 10:38:54 +00:00
dependabot[bot] 3232b44175
build(deps): bump cc from 1.1.1 to 1.1.5 (#3066)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.1 to 1.1.5.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.1...cc-v1.1.5)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-15 10:31:02 +00:00
dependabot[bot] e56dee2661
build(deps): bump cc from 1.1.0 to 1.1.1 (#3065)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.0...cc-v1.1.1)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-12 10:28:36 +00:00
dependabot[bot] 2517a9d2a9
build(deps): bump cc from 1.0.105 to 1.1.0 (#3064)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.105 to 1.1.0.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.0.105...cc-v1.1.0)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-11 10:30:30 +00:00
dependabot[bot] 837fbc9531
build(deps): bump syn from 2.0.68 to 2.0.70 (#3061)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.68 to 2.0.70.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.68...2.0.70)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-10 10:54:53 +00:00
dependabot[bot] 566fa9bfa9
build(deps): bump uuid from 1.9.1 to 1.10.0 (#3059)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.9.1...1.10.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-09 10:48:55 +00:00
dependabot[bot] cdd969b027
build(deps): bump serde from 1.0.203 to 1.0.204 (#3056)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.203 to 1.0.204.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.203...v1.0.204)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 10:49:23 +00:00
dependabot[bot] 0343e42e2a
build(deps): bump async-trait from 0.1.80 to 0.1.81 (#3055)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.80 to 0.1.81.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.80...0.1.81)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 10:48:22 +00:00
dependabot[bot] 808919599d
build(deps): bump tinyvec from 1.6.1 to 1.7.0 (#3054)
Bumps [tinyvec](https://github.com/Lokathor/tinyvec) from 1.6.1 to 1.7.0.
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.6.1...v1.7.0)

---
updated-dependencies:
- dependency-name: tinyvec
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 10:47:26 +00:00
dependabot[bot] 32ab3da779
build(deps): bump cc from 1.0.104 to 1.0.105 (#3053)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.104 to 1.0.105.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.0.104...cc-v1.0.105)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 10:46:56 +00:00
dependabot[bot] 3c507ef511
build(deps): bump actions/upload-artifact from 4.3.3 to 4.3.4 (#3051)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](65462800fd...0b2256b8c0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 10:41:16 +00:00
dependabot[bot] afd431a4a8
build(deps): bump zerocopy from 0.7.34 to 0.7.35 (#3049)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.34 to 0.7.35.
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/commits)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-03 11:09:28 +00:00
dependabot[bot] d5c8e1b684
build(deps): bump serde_json from 1.0.119 to 1.0.120 (#3048)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.119 to 1.0.120.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.119...v1.0.120)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-02 10:48:15 +00:00
dependabot[bot] ca1daf38b3
build(deps): bump cc from 1.0.101 to 1.0.104 (#3047)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.101 to 1.0.104.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.0.101...cc-v1.0.104)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 10:26:50 +00:00
dependabot[bot] 8892b32a18
build(deps): bump object from 0.36.0 to 0.36.1 (#3046)
Bumps [object](https://github.com/gimli-rs/object) from 0.36.0 to 0.36.1.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.0...0.36.1)

---
updated-dependencies:
- dependency-name: object
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 10:19:09 +00:00
dependabot[bot] c15e215234
build(deps): bump serde_json from 1.0.118 to 1.0.119 (#3045)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.118 to 1.0.119.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.118...v1.0.119)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 10:17:21 +00:00
dependabot[bot] 89bfe67e1d
build(deps): bump log from 0.4.21 to 0.4.22 (#3043)
Bumps [log](https://github.com/rust-lang/log) from 0.4.21 to 0.4.22.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.21...0.4.22)

---
updated-dependencies:
- dependency-name: log
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-28 11:06:29 +00:00
dependabot[bot] 9d5cf8397a
build(deps): bump num-bigint from 0.4.5 to 0.4.6 (#3042)
Bumps [num-bigint](https://github.com/rust-num/num-bigint) from 0.4.5 to 0.4.6.
- [Changelog](https://github.com/rust-num/num-bigint/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-num/num-bigint/compare/num-bigint-0.4.5...num-bigint-0.4.6)

---
updated-dependencies:
- dependency-name: num-bigint
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-28 11:04:57 +00:00
dependabot[bot] 6aca7787eb
build(deps): bump either from 1.12.0 to 1.13.0 (#3041)
Bumps [either](https://github.com/rayon-rs/either) from 1.12.0 to 1.13.0.
- [Commits](https://github.com/rayon-rs/either/compare/1.12.0...1.13.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-26 11:18:12 +00:00
dependabot[bot] d2e5189608
build(deps): bump cc from 1.0.100 to 1.0.101 (#3040)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.100 to 1.0.101.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.0.100...cc-v1.0.101)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-26 11:07:57 +00:00
dependabot[bot] 99626eb7b9
build(deps): bump uuid from 1.9.0 to 1.9.1 (#3037)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.9.0...1.9.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-26 00:21:37 +00:00
dependabot[bot] 7ea905e031
build(deps): bump softprops/action-gh-release from 2.0.5 to 2.0.6 (#3026)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.5 to 2.0.6.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](69320dbe05...a74c6b72af)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-25 16:42:25 -07:00
dependabot[bot] 1a4d5884ea
build(deps): bump tinyvec from 1.6.0 to 1.6.1 (#3039)
Bumps [tinyvec](https://github.com/Lokathor/tinyvec) from 1.6.0 to 1.6.1.
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: tinyvec
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-25 11:07:09 +00:00
dependabot[bot] 122ac91388
build(deps): bump tj-actions/changed-files from 44.5.4 to 44.5.5 (#3036)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.5.4 to 44.5.5.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](cc3bbb0c52...cc733854b1)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-25 11:06:38 +00:00
dependabot[bot] 1326d3e40c
build(deps): bump serde_json from 1.0.117 to 1.0.118 (#3038)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.117 to 1.0.118.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.117...v1.0.118)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-25 11:06:10 +00:00
dependabot[bot] 96a8cd6e23
build(deps): bump tj-actions/changed-files from 44.5.3 to 44.5.4 (#3035)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.5.3 to 44.5.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](eaf854ef0c...cc3bbb0c52)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 10:51:11 +00:00
dependabot[bot] 7436800b12
build(deps): bump syn from 2.0.67 to 2.0.68 (#3034)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.67 to 2.0.68.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.67...2.0.68)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 10:19:50 +00:00
dependabot[bot] 8a05382816
build(deps): bump uuid from 1.8.0 to 1.9.0 (#3033)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.8.0...1.9.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 10:17:53 +00:00
dependabot[bot] 192916e87e
build(deps): bump libloading from 0.8.3 to 0.8.4 (#3032)
Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.8.3 to 0.8.4.
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.8.3...0.8.4)

---
updated-dependencies:
- dependency-name: libloading
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 10:16:16 +00:00
dependabot[bot] 17033c311d
build(deps): bump cc from 1.0.99 to 1.0.100 (#3031)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.99 to 1.0.100.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.99...cc-v1.0.100)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 10:15:50 +00:00
dependabot[bot] 1c1c43967f
build(deps): bump lazy_static from 1.4.0 to 1.5.0 (#3030)
Bumps [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/rust-lang-nursery/lazy-static.rs/releases)
- [Commits](https://github.com/rust-lang-nursery/lazy-static.rs/compare/1.4.0...1.5.0)

---
updated-dependencies:
- dependency-name: lazy_static
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 10:15:39 +00:00
dependabot[bot] d33bce49eb
build(deps): bump syn from 2.0.66 to 2.0.67 (#3029)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.66 to 2.0.67.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.66...2.0.67)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-21 10:31:10 +00:00
dependabot[bot] 212bbf0575
build(deps): bump proc-macro2 from 1.0.85 to 1.0.86 (#3028)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.85 to 1.0.86.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.85...1.0.86)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-21 10:28:23 +00:00
dependabot[bot] f97a413806
build(deps): bump displaydoc from 0.2.4 to 0.2.5 (#3027)
Bumps [displaydoc](https://github.com/yaahc/displaydoc) from 0.2.4 to 0.2.5.
- [Changelog](https://github.com/yaahc/displaydoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yaahc/displaydoc/commits/v0.2.5)

---
updated-dependencies:
- dependency-name: displaydoc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-21 10:27:13 +00:00
dependabot[bot] 0d620b66be
build(deps): bump tj-actions/changed-files from 44.5.2 to 44.5.3 (#3025)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.5.2 to 44.5.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](d6babd6899...eaf854ef0c)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-20 10:30:59 +00:00
dependabot[bot] 0e402b6b9e
build(deps): bump url from 2.5.1 to 2.5.2 (#3024)
Bumps [url](https://github.com/servo/rust-url) from 2.5.1 to 2.5.2.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.5.1...v2.5.2)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-19 11:11:00 +00:00
dependabot[bot] 840905fcbe
build(deps): bump httparse from 1.9.3 to 1.9.4 (#3022)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.9.3 to 1.9.4.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.9.3...v1.9.4)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 10:38:41 +00:00
dependabot[bot] e52e1e2389
build(deps): bump miniz_oxide from 0.7.3 to 0.7.4 (#3023)
Bumps [miniz_oxide](https://github.com/Frommi/miniz_oxide) from 0.7.3 to 0.7.4.
- [Changelog](https://github.com/Frommi/miniz_oxide/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Frommi/miniz_oxide/commits)

---
updated-dependencies:
- dependency-name: miniz_oxide
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 10:38:12 +00:00
dependabot[bot] cd29ef74d0
build(deps): bump memchr from 2.7.2 to 2.7.4 (#3021)
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.7.2 to 2.7.4.
- [Commits](https://github.com/BurntSushi/memchr/compare/2.7.2...2.7.4)

---
updated-dependencies:
- dependency-name: memchr
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-14 10:38:40 +00:00
Alejandro Pedraza f23b2970c5
Properly set log level for hickory_resolver in proxy (#3019)
Followup to #2872 , where we swapped the trust-dns-resolver with the hickory-resolver dependency. We had mistakingly changed the default log level to `hickory_dns=error` when it should have been `hickory_resolver=error`.
2024-06-14 04:56:45 +00:00
Alex Leong 49336fd7c4
Add env var to disable admin shutdown endpoint (#3014)
The /shutdown admin endpoint of the proxy can potentially be a DOS vector, for example, in the case of a SSRF attack.

We add a LINKERD2_PROXY_SHUTDOWN_ENDPOINT_ENABLED environment variable to control if the /shutdown endpoint is enabled. Disabling this endpoint removes this DOS vector.

Signed-off-by: Alex Leong <alex@buoyant.io>
2024-06-13 21:47:03 -07:00
Alex Leong 3458c94cd7
Handle ipv6 wrapped ipv4 addresses in loopback check (#3013)
The IpAddr::is_loopback function does not account for ipv4 mapped ipv6 addresses and returns false if the address is an ipv4 localhost mapped to ipv6. This causes localhost-only admin endpoints to be unaccessible from localhost when ipv4 mapped ipv6 addresses are used.

We update the logic to check if the ipv6 address is ipv4 mapped and, if so, if the mapped ipv4 address is loopback.

Signed-off-by: Alex Leong <alex@buoyant.io>
2024-06-13 21:44:02 -07:00
dependabot[bot] 913103915f
build(deps): bump url from 2.5.0 to 2.5.1 (#3011)
* build(deps): bump url from 2.5.0 to 2.5.1

Bumps [url](https://github.com/servo/rust-url) from 2.5.0 to 2.5.1.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.5.0...v2.5.1)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Allow the Unicode license (MIT-like)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-06-13 21:39:28 -07:00
Oliver Gould 1814dc185b
build(deps): Remove yanked dependency versions (#3020)
* Downgrade rustc-hash to v1.1.0
* Downgrade clang-sys to v1.8.1
2024-06-14 04:08:09 +00:00
dependabot[bot] 5f1a39518e
build(deps): bump actions/checkout from 4.1.6 to 4.1.7 (#3018)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](a5ac7e51b4...692973e3d9)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-13 20:55:26 -07:00
dependabot[bot] 465a69bf7e
build(deps): bump codecov/codecov-action from 4.4.1 to 4.5.0 (#3017)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.4.1 to 4.5.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](125fc84a9a...e28ff129e5)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-13 10:09:29 +00:00
dependabot[bot] 805ffa2473
build(deps): bump httparse from 1.9.2 to 1.9.3 (#3016)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.9.2 to 1.9.3.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.9.2...v1.9.3)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-12 10:22:35 +00:00
dependabot[bot] c74da492c3
build(deps): bump backtrace from 0.3.72 to 0.3.73 (#3015)
Bumps [backtrace](https://github.com/rust-lang/backtrace-rs) from 0.3.72 to 0.3.73.
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases)
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.72...0.3.73)

---
updated-dependencies:
- dependency-name: backtrace
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-12 10:20:54 +00:00
dependabot[bot] 909d6f8d79
build(deps): bump httparse from 1.8.0 to 1.9.2 (#3012)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.8.0 to 1.9.2.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.8.0...v1.9.2)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-11 11:04:17 +00:00
dependabot[bot] 0adbe83a55
build(deps): bump cc from 1.0.98 to 1.0.99 (#3010)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.98 to 1.0.99.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.98...1.0.99)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-10 10:29:05 +00:00
dependabot[bot] b7935941e9
build(deps): bump regex from 1.10.4 to 1.10.5 (#3009)
Bumps [regex](https://github.com/rust-lang/regex) from 1.10.4 to 1.10.5.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.10.4...1.10.5)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-10 10:20:16 +00:00
dependabot[bot] 56a6460b29
build(deps): bump symbolic-demangle from 12.9.1 to 12.9.2 (#3008)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.9.1 to 12.9.2.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.9.1...12.9.2)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-10 10:19:20 +00:00
dependabot[bot] 6c8432f1b8
build(deps): bump symbolic-common from 12.9.1 to 12.9.2 (#3007)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.9.1 to 12.9.2.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.9.1...12.9.2)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-10 10:18:52 +00:00
dependabot[bot] c5d9f1c1e7
build(deps): bump symbolic-demangle from 12.8.0 to 12.9.1 (#3006)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.8.0 to 12.9.1.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.8.0...12.9.1)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-05 07:17:28 -07:00
dependabot[bot] ff4ec52801
build(deps): bump proc-macro2 from 1.0.84 to 1.0.85 (#3004)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.84 to 1.0.85.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.84...1.0.85)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 10:51:01 +00:00
dependabot[bot] 9cb9f436f9
build(deps): bump tokio from 1.37.0 to 1.38.0 (#3003)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.37.0 to 1.38.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.37.0...tokio-1.38.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-31 10:51:46 +00:00
dependabot[bot] 3059ed9649
build(deps): bump tj-actions/changed-files from 44.5.1 to 44.5.2 (#3002)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.5.1 to 44.5.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](03334d095e...d6babd6899)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-30 10:42:59 +00:00
dependabot[bot] beae3a9811
build(deps): bump clang-sys from 1.8.1 to 1.8.2 (#3001)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.8.1 to 1.8.2.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/compare/v1.8.1...v1.8.2)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-30 10:41:28 +00:00
dependabot[bot] 7d3e667941
build(deps): bump backtrace from 0.3.71 to 0.3.72 (#3000)
Bumps [backtrace](https://github.com/rust-lang/backtrace-rs) from 0.3.71 to 0.3.72.
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases)
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.71...0.3.72)

---
updated-dependencies:
- dependency-name: backtrace
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-29 10:17:30 +00:00
dependabot[bot] b09ea5f7c7
build(deps): bump clang-sys from 1.8.0 to 1.8.1 (#2999)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/compare/v1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-29 10:16:38 +00:00
dependabot[bot] 072e0fe6f6
build(deps): bump rustc-hash from 1.1.0 to 1.2.0 (#2998)
Bumps [rustc-hash](https://github.com/rust-lang/rustc-hash) from 1.1.0 to 1.2.0.
- [Commits](https://github.com/rust-lang/rustc-hash/commits)

---
updated-dependencies:
- dependency-name: rustc-hash
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-28 10:17:53 +00:00
dependabot[bot] bd7d3b4daf
build(deps): bump proc-macro2 from 1.0.83 to 1.0.84 (#2997)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.83 to 1.0.84.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.83...1.0.84)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-28 10:17:43 +00:00
dependabot[bot] 4c5ff9b8bc
build(deps): bump clang-sys from 1.7.0 to 1.8.0 (#2996)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/commits)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-27 10:55:45 +00:00
dependabot[bot] 1a3f9dcd7d
build(deps): bump serde from 1.0.202 to 1.0.203 (#2995)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.202 to 1.0.203.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.202...v1.0.203)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-27 10:54:34 +00:00
dependabot[bot] d06d9346a8
build(deps): bump parking_lot from 0.12.2 to 0.12.3 (#2994)
Bumps [parking_lot](https://github.com/Amanieu/parking_lot) from 0.12.2 to 0.12.3.
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/0.12.2...0.12.3)

---
updated-dependencies:
- dependency-name: parking_lot
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-27 10:53:19 +00:00
dependabot[bot] 15aa217f5f
build(deps): bump syn from 2.0.65 to 2.0.66 (#2993)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.65 to 2.0.66.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.65...2.0.66)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-24 11:16:09 +00:00
dependabot[bot] 8b1b89b236
build(deps): bump tj-actions/changed-files from 44.4.0 to 44.5.1 (#2992)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.4.0 to 44.5.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](a29e8b5656...03334d095e)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-24 10:41:28 +00:00
dependabot[bot] caa21ba734
--- (#2991)
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-22 11:15:49 +00:00
dependabot[bot] 2e5d0d60dc
--- (#2990)
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-22 11:03:49 +00:00
dependabot[bot] 68385064c2
--- (#2989)
updated-dependencies:
- dependency-name: linux-raw-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 11:11:57 +00:00
dependabot[bot] 733d37988f
--- (#2987)
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 10:56:16 +00:00
dependabot[bot] d29168b4c4
--- (#2988)
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 10:51:59 +00:00
dependabot[bot] d9d81a6f56
--- (#2986)
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 10:46:42 +00:00
dependabot[bot] a1ca0930b9
--- (#2985)
updated-dependencies:
- dependency-name: crc32fast
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 10:43:57 +00:00
dependabot[bot] aa172c2c7c
--- (#2983)
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 10:35:13 +00:00
dependabot[bot] 4bd02c43b6
build(deps): Bump miniz_oxide from 0.7.2 to 0.7.3 (#2982)
Bumps [miniz_oxide](https://github.com/Frommi/miniz_oxide) from 0.7.2 to 0.7.3.
- [Changelog](https://github.com/Frommi/miniz_oxide/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Frommi/miniz_oxide/compare/0.7.2...0.7.3)

---
updated-dependencies:
- dependency-name: miniz_oxide
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-20 10:50:46 +00:00
dependabot[bot] 7229786d1e
build(deps): Bump syn from 2.0.64 to 2.0.65 (#2981)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.64 to 2.0.65.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.64...2.0.65)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-20 10:50:22 +00:00
dependabot[bot] eda1a7f9e2
build(deps): Bump prost-build from 0.12.4 to 0.12.6 (#2980)
Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.12.4 to 0.12.6.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.12.4...v0.12.6)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-20 10:50:11 +00:00
dependabot[bot] b0d3a24856
build(deps): Bump either from 1.11.0 to 1.12.0 (#2978)
Bumps [either](https://github.com/rayon-rs/either) from 1.11.0 to 1.12.0.
- [Commits](https://github.com/rayon-rs/either/compare/1.11.0...1.12.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-17 11:07:21 +00:00
dependabot[bot] 824eb923bd
build(deps): Bump serde from 1.0.201 to 1.0.202 (#2977)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.201 to 1.0.202.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.201...v1.0.202)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-17 11:05:44 +00:00
dependabot[bot] fe618a9876
build(deps): Bump syn from 2.0.60 to 2.0.64 (#2976)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.60 to 2.0.64.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.60...2.0.64)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-17 11:01:59 +00:00
dependabot[bot] 78a57e64e5
build(deps): Bump actions/checkout from 4.1.5 to 4.1.6 (#2975)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](44c2b7a8a4...a5ac7e51b4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-17 10:44:40 +00:00
dependabot[bot] 7a259a2885
build(deps): Bump serde_json from 1.0.116 to 1.0.117 (#2974)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.116 to 1.0.117.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.116...v1.0.117)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-16 10:36:05 +00:00
dependabot[bot] c556198f1e
build(deps): Bump rustversion from 1.0.16 to 1.0.17 (#2973)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.16 to 1.0.17.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.16...1.0.17)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-16 10:34:58 +00:00
dependabot[bot] 233092587e
build(deps): Bump ryu from 1.0.17 to 1.0.18 (#2972)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.17 to 1.0.18.
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.17...1.0.18)

---
updated-dependencies:
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-16 10:31:30 +00:00
dependabot[bot] 0249a2e903
build(deps): Bump getrandom from 0.2.14 to 0.2.15 (#2969)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.14 to 0.2.15.
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.14...v0.2.15)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-15 20:20:49 +00:00
dependabot[bot] 1761498757
build(deps): Bump petgraph from 0.6.4 to 0.6.5 (#2968)
Bumps [petgraph](https://github.com/petgraph/petgraph) from 0.6.4 to 0.6.5.
- [Changelog](https://github.com/petgraph/petgraph/blob/master/RELEASES.rst)
- [Commits](https://github.com/petgraph/petgraph/compare/petgraph@v0.6.4...petgraph@v0.6.5)

---
updated-dependencies:
- dependency-name: petgraph
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-15 20:20:06 +00:00
Oliver Gould 7d2d6f324b
fix(ci): Update proxy-init to v2.2.4 (#2971)
This ensures that the proxy-init image is compatible with recent
edge releases.
2024-05-15 18:28:50 +00:00
dependabot[bot] 76761656d8
build(deps): Bump codecov/codecov-action from 4.3.1 to 4.4.0 (#2970)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](5ecb98a3c6...6d798873df)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 16:38:06 +00:00
dependabot[bot] d1782b4bd7
build(deps): Bump tj-actions/changed-files from 44.3.0 to 44.4.0 (#2967)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.3.0 to 44.4.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](0874344d6e...a29e8b5656)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-13 10:57:16 +00:00
dependabot[bot] 69d9d467d8
build(deps): Bump cc from 1.0.96 to 1.0.97 (#2966)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.96 to 1.0.97.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.96...1.0.97)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-13 10:24:17 +00:00
dependabot[bot] 236e857f2f
build(deps): Bump semver from 1.0.22 to 1.0.23 (#2965)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.22 to 1.0.23.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.22...1.0.23)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-13 10:23:47 +00:00
dependabot[bot] c129f29c68
build(deps): Bump serde from 1.0.200 to 1.0.201 (#2964)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.200 to 1.0.201.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.200...v1.0.201)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-10 10:22:52 +00:00
dependabot[bot] f5c9b66bc5
build(deps): Bump thiserror from 1.0.59 to 1.0.60 (#2963)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.59 to 1.0.60.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.59...1.0.60)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-10 10:21:56 +00:00
dependabot[bot] 3ad8f6020f
build(deps): Bump anyhow from 1.0.82 to 1.0.83 (#2962)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.82 to 1.0.83.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.82...1.0.83)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-09 10:53:32 +00:00
dependabot[bot] f08c8c4d5e
build(deps): Bump errno from 0.3.8 to 0.3.9 (#2961)
Bumps [errno](https://github.com/lambda-fairy/rust-errno) from 0.3.8 to 0.3.9.
- [Changelog](https://github.com/lambda-fairy/rust-errno/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lambda-fairy/rust-errno/commits)

---
updated-dependencies:
- dependency-name: errno
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-09 10:52:09 +00:00
dependabot[bot] a765ec0e54
build(deps): Bump softprops/action-gh-release from 2.0.4 to 2.0.5 (#2960)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](9d7c94cfd0...69320dbe05)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-08 10:40:30 +00:00
dependabot[bot] 4c56c33701
build(deps): Bump proc-macro2 from 1.0.81 to 1.0.82 (#2959)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.81 to 1.0.82.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.81...1.0.82)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-08 10:15:45 +00:00
dependabot[bot] 06c68af94b
build(deps): Bump rustc-demangle from 0.1.23 to 0.1.24 (#2958)
Bumps [rustc-demangle](https://github.com/rust-lang/rustc-demangle) from 0.1.23 to 0.1.24.
- [Commits](https://github.com/rust-lang/rustc-demangle/compare/0.1.23...0.1.24)

---
updated-dependencies:
- dependency-name: rustc-demangle
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-08 10:14:43 +00:00
dependabot[bot] 54d51d0914
build(deps): Bump zerocopy from 0.7.33 to 0.7.34 (#2957)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.33 to 0.7.34.
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/commits)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-07 11:20:44 +00:00
dependabot[bot] 23233164ac
build(deps): Bump rustversion from 1.0.15 to 1.0.16 (#2956)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.15 to 1.0.16.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.15...1.0.16)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-07 11:19:50 +00:00
dependabot[bot] bef89cd109
build(deps): Bump prettyplease from 0.2.19 to 0.2.20 (#2955)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.19 to 0.2.20.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.19...0.2.20)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-07 11:10:45 +00:00
dependabot[bot] 715f2296e7
build(deps): Bump actions/checkout from 4.1.4 to 4.1.5 (#2953)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](0ad4b8fada...44c2b7a8a4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-07 11:08:54 +00:00
dependabot[bot] e254703581
build(deps): Bump num-bigint from 0.4.4 to 0.4.5 (#2954)
Bumps [num-bigint](https://github.com/rust-num/num-bigint) from 0.4.4 to 0.4.5.
- [Changelog](https://github.com/rust-num/num-bigint/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-num/num-bigint/compare/num-bigint-0.4.4...num-bigint-0.4.5)

---
updated-dependencies:
- dependency-name: num-bigint
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-07 11:08:33 +00:00
dependabot[bot] b365777cce
build(deps): Bump autocfg from 1.2.0 to 1.3.0 (#2952)
Bumps [autocfg](https://github.com/cuviper/autocfg) from 1.2.0 to 1.3.0.
- [Commits](https://github.com/cuviper/autocfg/compare/1.2.0...1.3.0)

---
updated-dependencies:
- dependency-name: autocfg
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 11:13:09 +00:00
dependabot[bot] b6c89cf731
build(deps): Bump tokio-util from 0.7.10 to 0.7.11 (#2951)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.10 to 0.7.11.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.10...tokio-util-0.7.11)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 11:11:35 +00:00
dependabot[bot] 03728116b1
build(deps): Bump zerocopy from 0.7.32 to 0.7.33 (#2950)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.32 to 0.7.33.
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.7.32...v0.7.33)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 11:01:27 +00:00
dependabot[bot] 0cce8a722b
build(deps): Bump num-traits from 0.2.18 to 0.2.19 (#2949)
Bumps [num-traits](https://github.com/rust-num/num-traits) from 0.2.18 to 0.2.19.
- [Changelog](https://github.com/rust-num/num-traits/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-num/num-traits/compare/num-traits-0.2.18...num-traits-0.2.19)

---
updated-dependencies:
- dependency-name: num-traits
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 10:59:19 +00:00
dependabot[bot] 78f0e05c7c
build(deps): Bump socket2 from 0.5.6 to 0.5.7 (#2948)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.5.6 to 0.5.7.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/compare/v0.5.6...v0.5.7)

---
updated-dependencies:
- dependency-name: socket2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-03 11:09:22 +00:00
dependabot[bot] a62d32ddcc
build(deps): Bump flate2 from 1.0.29 to 1.0.30 (#2947)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.29 to 1.0.30.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.29...1.0.30)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-03 11:07:32 +00:00
dependabot[bot] 3cfd538e0c
build(deps): Bump serde from 1.0.198 to 1.0.200 (#2946)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.198 to 1.0.200.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.198...v1.0.200)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 11:01:33 +00:00
dependabot[bot] 0d2bd58f96
build(deps): Bump parking_lot_core from 0.9.9 to 0.9.10 (#2945)
Bumps [parking_lot_core](https://github.com/Amanieu/parking_lot) from 0.9.9 to 0.9.10.
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/core-0.9.9...core-0.9.10)

---
updated-dependencies:
- dependency-name: parking_lot_core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 11:00:10 +00:00
dependabot[bot] 1c63860c18
build(deps): Bump codecov/codecov-action from 4.3.0 to 4.3.1 (#2944)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](84508663e9...5ecb98a3c6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 10:38:48 +00:00
Oliver Gould 9d1a957861
ci(release): Allow concurrent releases (#2943)
It is sometimes necessary for multiple release workflows to run in parallel. The
current configuration does not allow this. This commit changes the configuration
so that the concurrency group varies by the target ref.
2024-05-01 15:01:36 +00:00
dependabot[bot] e967af8229
build(deps): Bump libc from 0.2.153 to 0.2.154 (#2942)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.153 to 0.2.154.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.153...0.2.154)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 10:29:10 +00:00
dependabot[bot] a6f20ffcd8
build(deps): Bump cc from 1.0.95 to 1.0.96 (#2941)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.95 to 1.0.96.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.95...1.0.96)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 10:28:42 +00:00
Oliver Gould d5c92579bd
build: Remove redundant crate (#2940) 2024-05-01 02:48:01 +00:00
Oliver Gould b45b6cba0f
feat(outbound): Configure HTTP/2 client overrides from discovery (#2937)
This commit updates the outbound proxy to read HTTP/2 client parameters from
Destination responses and to use these values to override the process-wide
defaults.
2024-04-30 12:26:36 -07:00
dependabot[bot] e278b75cb6
build(deps): Bump fastrand from 2.0.2 to 2.1.0 (#2939)
Bumps [fastrand](https://github.com/smol-rs/fastrand) from 2.0.2 to 2.1.0.
- [Release notes](https://github.com/smol-rs/fastrand/releases)
- [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/fastrand/compare/v2.0.2...v2.1.0)

---
updated-dependencies:
- dependency-name: fastrand
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-30 10:23:40 +00:00
dependabot[bot] e0981300a5
build(deps): Bump parking_lot from 0.12.1 to 0.12.2 (#2938)
Bumps [parking_lot](https://github.com/Amanieu/parking_lot) from 0.12.1 to 0.12.2.
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/0.12.1...0.12.2)

---
updated-dependencies:
- dependency-name: parking_lot
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-30 10:23:22 +00:00
Oliver Gould b3abab141d
chore(http): allow http client configuration to vary by endpoint (#2935)
Currently all HTTP client configuration is derived from the configuration loaded
at startup.

We'd like to allow this configuration to vary by endpoint so that, for example,
we can enable keepalives when communicating with other proxies. These keepalives
allow load balancers to eagerly detect connections that are in a bad state (i.e.
before attempting to write a request to that connection).

To setup this kind of per-endpoint configuration, this change modifies the HTTP
client to extract its configuration from the per-endpoint target so that calling
stacks can provide this configuration.

The inbound and outbound stacks continue to set these configurations based on
process-wide defaults, but we now have obvious places where we can set these
parameters based on discovery results.

There are no user-facing functional changes in this commit.
2024-04-29 18:52:25 -07:00
Oliver Gould 0b175c3999
chore(http): split params types into a dedicated http-h2 crate (#2936)
This sets up configuring ClientParams from the proxy-api-resolve crate, i.e. so
that the proxy-api-resolve crate does not need to depend on the proxy-http
crate.
2024-04-30 01:24:43 +00:00
Oliver Gould c570db3d36
bump(deps): Update linkerd2-proxy-api to v0.13.1 (#2934) 2024-04-29 18:09:14 -07:00
Alejandro Pedraza b724ed0dcd
Unwrap IPv4-mapped IPv6 addresses (#2933)
* Unwrap IPv4-mapped IPv6 addresses

The policy logic doesn't account for IPv4-mapped IPv6 addresses when matching allowed IPs with client IPs, so this change "unwraps" these types of IPs, converting those sockets into `SocketAddr::V4` at the lowest level in `BindTcp`. This also allows us to simplify the logic introduced by 7338f6b2b2 into `BindWithOrigDst` as it no longer has to account for IPv4-mapped IPv6 addresses (it was detecting them but wasn't unwrapping them).

As an example, this is the error we were getting, when prometheus (at 10.42.0.11) attempted to scrape a pod, even when that IP was authorized:
```
[    69.592605s]  INFO ThreadId(02) daemon:admin{listen.addr=[::]:4191}: linkerd_app_inbound::policy::http: Request denied server.group=policy.linkerd.io server.kind=server server.name=smoke-test-proxy-admin route.group= route.kind=default route.name=default client.tls=Some(Established { client_id: Some(ClientId(Dns(Name("prometheus.linkerd-viz.serviceaccount.identity.linkerd.custom.domain")))), negotiated_protocol: None }) client.ip=::ffff:10.42.0.11
[    69.592664s]  INFO ThreadId(02) daemon:admin{listen.addr=[::]:4191}:rescue{client.addr=[::ffff:10.42.0.11]:55168}: linkerd_app_core::errors::respond: HTTP/2.0 request failed error=unauthorized request on route
```

Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-04-29 16:33:39 -05:00
dependabot[bot] 3f40853255
build(deps): Bump rustls from 0.21.11 to 0.21.12 (#2932)
Bumps [rustls](https://github.com/rustls/rustls) from 0.21.11 to 0.21.12.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.21.11...v/0.21.12)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-29 11:00:19 +00:00
dependabot[bot] 6453d7e0e5
build(deps): Bump data-encoding from 2.5.0 to 2.6.0 (#2931)
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.5.0 to 2.6.0.
- [Commits](https://github.com/ia0/data-encoding/commits)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-29 11:00:01 +00:00
dependabot[bot] 7ba4bbd917
build(deps): Bump lock_api from 0.4.11 to 0.4.12 (#2930)
Bumps [lock_api](https://github.com/Amanieu/parking_lot) from 0.4.11 to 0.4.12.
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/lock_api-0.4.11...lock_api-0.4.12)

---
updated-dependencies:
- dependency-name: lock_api
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-26 11:01:30 +00:00
dependabot[bot] 03be8f94a8
build(deps): Bump flate2 from 1.0.28 to 1.0.29 (#2929)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.28 to 1.0.29.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.28...1.0.29)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-26 11:01:01 +00:00
dependabot[bot] 65027a1c17
build(deps): Bump actions/checkout from 4.1.3 to 4.1.4 (#2926)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](1d96c772d1...0ad4b8fada)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-25 17:31:31 -07:00
Oliver Gould 6a845fd2dd
fix(pool): Reset endpoints gauge on drop (#2928)
The p2c pool tracks an endpoints gauge that is incremented and decremented as
endpoints are added and removed from the balancer. When a balancer is dropped,
the proxy does not reset this gauge to 0. If the balancer is recreated later,
this causes endpoints to appear to be double-counted.

This commit fixes this in two ways:

1. When the balancer is dropped, the endpoints gauge is reset to 0.
2. When the pool is reset (i.e., during initialization), we always reset the
   endpoints value rather than use individual inc/dec calls.
2024-04-25 17:18:24 -07:00
dependabot[bot] 1ba97a7eca
build(deps): Bump actions/download-artifact from 4.1.6 to 4.1.7 (#2927)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](9c19ed7fe5...65a9edc588)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-25 10:19:54 +00:00
dependabot[bot] c77ce0eff6
build(deps): Bump actions/upload-artifact from 4.3.1 to 4.3.3 (#2923)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.1 to 4.3.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](5d5d22a312...65462800fd)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-24 14:16:38 -07:00
Oliver Gould 15ac05b9ce
feat(app): Configure HTTP/2 server parameters (#2924)
59ea792b3 expanded the proxy's HTTP/2 server parameters so that a variety of
Hyper server settings may be controlled at runtime. There is currently no way
for the control plane to influence these settings.

This commit adds environment-based configuration for the inbound and outbound
proxy servers. All server parameters made configurable in 59ea792b3 are now
configurable via environment variables. Variables take the form:

    LINKERD2_PROXY_<PROXY>_SERVER_HTTP2_<PARAM>

Where `<PROXY>` is either `INBOUND` or `OUTBOUND`, and `<PARAM>` is the
capitalized snake-case name of the parameter.
2024-04-24 13:56:54 -07:00
Zahari Dichev 48020451a5
identity: make spire client config fields pub (#2917)
Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-04-24 13:56:26 -07:00
dependabot[bot] 46957de49f
build(deps): Bump actions/download-artifact from 4.1.5 to 4.1.6 (#2921)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](8caf195ad4...9c19ed7fe5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-23 10:33:34 +00:00
dependabot[bot] d42780ce1b
build(deps): Bump EmbarkStudios/cargo-deny-action from 1.6.2 to 1.6.3 (#2922)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.6.2 to 1.6.3.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](b01e7a8cfb...3f4a782664)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-23 10:32:59 +00:00
dependabot[bot] 2edff9dfa7
build(deps): Bump jobserver from 0.1.30 to 0.1.31 (#2920)
Bumps [jobserver](https://github.com/rust-lang/jobserver-rs) from 0.1.30 to 0.1.31.
- [Commits](https://github.com/rust-lang/jobserver-rs/commits)

---
updated-dependencies:
- dependency-name: jobserver
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-23 10:21:49 +00:00
dependabot[bot] 5ff3a4069d
build(deps): Bump thiserror from 1.0.58 to 1.0.59 (#2919)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.58 to 1.0.59.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.58...1.0.59)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-23 10:18:56 +00:00
dependabot[bot] 2b5296b46f
build(deps): Bump rustix from 0.38.32 to 0.38.34 (#2918)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.32 to 0.38.34.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.32...v0.38.34)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-23 10:16:35 +00:00
Oliver Gould bd562d7f4e
chore(app): move helpers into submodules (#2916)
The app::env module is large and unwieldy. Before we add additional utilities,
making the module larger, this change splits out about 30% of the file into
sub-modules.

There are no functional changes in this commit.
2024-04-22 17:54:09 -07:00
Oliver Gould 59ea792b31
chore(http): split h2 client and server config (#2915)
Hyper supports a variety of configuration options for for the HTTP/2 client and
servers. The proxy's http client and server types do not support modifying these
parameters. We want to support configuring HTTP/2 server and client keep-alives;
and if we are exposing these parameters to the control plane, it also makes
sense to include the others, especially the per-connection stream concurrency
limit and the initial window sizes.

This commit splits the h2 'Settings' type into 'ClientParams' and
'ServerParams', including the appropriate per-connection settings for each.
These parameters are wired into the hyper client and server builders.

These parameters are not yet exposed to the control plane via configuration
interfaces.
2024-04-22 17:52:21 -07:00
Alejandro Pedraza 52681245c5
Bind outbound proxy to the IPv6 loopback (#2854)
In order for the proxy to support IPv6 traffic we need to bind the outbound proxy to the IPv6 loopback (`::1`), in addition to the existing binding to the IPv4 loopback (`127.0.0.1`).

Note, this is not necessary for inbound; on the proxy side we'll set `LINKERD2_PROXY_INBOUND_LISTEN_ADDR` (and the other `*_LISTEN_ADDR`) vars to the IPv6 wildcard address (`::`) which also works for IPv4.

This change adds the `LINKERD2_PROXY_OUTBOUND_LISTEN_ADDRS` var, which is supposed to be set as `127.0.0.1:4140,[::1]:4140` (maximum two entries). If not set, we default to the value in `LINKERD2_PROXY_OUTBOUND_LISTEN_ADDR`.

The field `ServerConfig.addr` is now of the new type `DualListenAddr` which holds a primary `SocketAddr` and an optional one.
The outbound listener is now bound via the `DualBind` implementation of `Bind` which also binds to the second `SocketAddr` if set, merging the two streams using Tokio's `merge` stream extension method.

Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-04-22 07:51:49 -05:00
dependabot[bot] e9b8246988
build(deps): Bump tj-actions/changed-files from 44.1.0 to 44.3.0 (#2904)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.1.0 to 44.3.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](e052d30e1c...0874344d6e)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 10:41:04 +00:00
dependabot[bot] 0a48522110
build(deps): Bump signal-hook-registry from 1.4.1 to 1.4.2 (#2914)
Bumps [signal-hook-registry](https://github.com/vorner/signal-hook) from 1.4.1 to 1.4.2.
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vorner/signal-hook/compare/registry-v1.4.1...registry-v1.4.2)

---
updated-dependencies:
- dependency-name: signal-hook-registry
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 10:34:24 +00:00
dependabot[bot] 4e320299f0
build(deps): Bump hickory-resolver from 0.24.0 to 0.24.1 (#2913)
Bumps [hickory-resolver](https://github.com/hickory-dns/hickory-dns) from 0.24.0 to 0.24.1.
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.0...v0.24.1)

---
updated-dependencies:
- dependency-name: hickory-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 10:32:12 +00:00
dependabot[bot] 3066df7d94
build(deps): Bump actions/checkout from 4.1.2 to 4.1.3 (#2912)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](9bb56186c3...1d96c772d1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 10:31:16 +00:00
dependabot[bot] a32177aff9
build(deps): Bump cc from 1.0.94 to 1.0.95 (#2911)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.94 to 1.0.95.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.94...1.0.95)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 10:31:03 +00:00
dependabot[bot] 75c0e5d047
build(deps): Bump rustls from 0.21.10 to 0.21.11 (#2910)
Bumps [rustls](https://github.com/rustls/rustls) from 0.21.10 to 0.21.11.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.21.10...v/0.21.11)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-19 20:03:42 +00:00
dependabot[bot] 5f8d87758c
build(deps): Bump prettyplease from 0.2.17 to 0.2.19 (#2909)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.17 to 0.2.19.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.17...0.2.19)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-19 10:33:41 +00:00
dependabot[bot] 5bee5a9727
build(deps): Bump thingbuf from 0.1.5 to 0.1.6 (#2908)
Bumps [thingbuf](https://github.com/hawkw/thingbuf) from 0.1.5 to 0.1.6.
- [Release notes](https://github.com/hawkw/thingbuf/releases)
- [Changelog](https://github.com/hawkw/thingbuf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hawkw/thingbuf/compare/v0.1.5...v0.1.6)

---
updated-dependencies:
- dependency-name: thingbuf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-19 10:33:11 +00:00
dependabot[bot] 59f2424a04
build(deps): Bump hickory-proto from 0.24.0 to 0.24.1 (#2907)
Bumps [hickory-proto](https://github.com/hickory-dns/hickory-dns) from 0.24.0 to 0.24.1.
- [Release notes](https://github.com/hickory-dns/hickory-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hickory-dns/hickory-dns/compare/v0.24.0...v0.24.1)

---
updated-dependencies:
- dependency-name: hickory-proto
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-19 10:32:08 +00:00
dependabot[bot] 83c3e1ef5c
build(deps): Bump actions/download-artifact from 4.1.4 to 4.1.5 (#2906)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](c850b930e6...8caf195ad4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-19 10:22:24 +00:00
Oliver Gould 802d93efff
fix(http): fix outbound HTTP metrics naming (#2903)
31d7464ef introduced a naming regression, so that metrics that 'outbound_http_'
became 'outbound_http_http_'. This change fixes this regression.
2024-04-18 21:18:41 +00:00
dependabot[bot] 014065d429
build(deps): Bump tj-actions/changed-files from 44.0.0 to 44.1.0 (#2902)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44.0.0 to 44.1.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](2d756ea4c5...e052d30e1c)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 11:03:56 +00:00
dependabot[bot] 0e86843657
build(deps): Bump serde from 1.0.197 to 1.0.198 (#2901)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.197 to 1.0.198.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.197...v1.0.198)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 10:18:46 +00:00
dependabot[bot] 82a28f6287
build(deps): Bump proc-macro2 from 1.0.80 to 1.0.81 (#2900)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.80...1.0.81)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 10:18:22 +00:00
dependabot[bot] 3484479655
build(deps): Bump syn from 2.0.59 to 2.0.60 (#2899)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.59 to 2.0.60.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.59...2.0.60)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 10:17:38 +00:00
dependabot[bot] 967e9764ff
build(deps): Bump async-trait from 0.1.79 to 0.1.80 (#2888)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.79 to 0.1.80.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.79...0.1.80)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 02:59:32 +00:00
dependabot[bot] 5e66732197
build(deps): Bump jobserver from 0.1.29 to 0.1.30 (#2897)
Bumps [jobserver](https://github.com/rust-lang/jobserver-rs) from 0.1.29 to 0.1.30.
- [Commits](https://github.com/rust-lang/jobserver-rs/commits)

---
updated-dependencies:
- dependency-name: jobserver
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-17 10:43:36 +00:00
dependabot[bot] 5b0d7ffbca
build(deps): Bump syn from 2.0.58 to 2.0.59 (#2896)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.58 to 2.0.59.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.58...2.0.59)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-17 10:43:27 +00:00
Oliver Gould 3ffc276976
chore(http): test HTTP/2 flow control exhaustion (#2895)
This change adds tests that exercises the server's behavior when clients exhaust
their HTTP/2 receive windows, i.e. so that the server is unable to send
additional data to a client.

These tests currently only document the existing behavior, but they will be
extended to validate mitigation strategies as they are implemented.
2024-04-16 18:52:59 -07:00
dependabot[bot] edd01ada85
build(deps): Bump cc from 1.0.92 to 1.0.94 (#2893)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.92 to 1.0.94.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.92...1.0.94)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-16 10:32:55 +00:00
dependabot[bot] 016b47f707
build(deps): Bump serde_json from 1.0.115 to 1.0.116 (#2892)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.115 to 1.0.116.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.115...v1.0.116)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-16 10:32:19 +00:00
dependabot[bot] c7a0b7fa38
build(deps): Bump either from 1.10.0 to 1.11.0 (#2891)
Bumps [either](https://github.com/rayon-rs/either) from 1.10.0 to 1.11.0.
- [Commits](https://github.com/rayon-rs/either/compare/1.10.0...1.11.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 11:07:31 +00:00
dependabot[bot] 5d1d290099
build(deps): Bump proc-macro2 from 1.0.79 to 1.0.80 (#2890)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.79 to 1.0.80.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.79...1.0.80)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 11:05:26 +00:00
Oliver Gould 31d7464ef1
chore(app,outbound)!: Decouple metrics registry from stack building (#2887)
As we introduced the newer prometheus-client metrics registry, we did so by
allowing stacks to register metrics directly. This is incongruent with the
existing legacy metrics registries, which are known by the Inbound and Outbound
stack builders.

This leads to two problems:

1. We cannot build the admin server until all of the proxy stacks are built.
   This ordering dependency is unnecessary and cumbersome if we want to insert
   additional discovery work into the initialization process.
2. It is cumbersome to add new metrics to stacks, as the registry must be passed
   through the stack building process.

To fix this, this change introduces additional Metrics types so that these
metrics may be registered along with the other stack metrics.

BREAKING CHANGE: Gateway-mode proxies now report Balancer metrics with the
"outbound_" prefix instead of the "gateway_" prefix. This metrics scope was
introduced very recently and is incongruent with our other metrics export. We
have no known readers of these metrics, as they are only relevant to new load
balancer behavior, and only on multicluster gateways. Unifying under the
outbound_ prefix reduces noise in metrics in non-gateway use cases and makes it
easier to query proxy data consistently.

This is the only functional change in this commit.
2024-04-12 10:08:29 -07:00
dependabot[bot] 3c8012c252
build(deps): Bump jobserver from 0.1.28 to 0.1.29 (#2889)
Bumps [jobserver](https://github.com/alexcrichton/jobserver-rs) from 0.1.28 to 0.1.29.
- [Commits](https://github.com/alexcrichton/jobserver-rs/commits)

---
updated-dependencies:
- dependency-name: jobserver
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-12 10:32:37 +00:00
dependabot[bot] 55402a3e70
build(deps): Bump time from 0.3.34 to 0.3.36 (#2886)
Bumps [time](https://github.com/time-rs/time) from 0.3.34 to 0.3.36.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.34...v0.3.36)

---
updated-dependencies:
- dependency-name: time
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 10:26:27 +00:00
dependabot[bot] 30a38ad584
build(deps): Bump pem from 3.0.3 to 3.0.4 (#2885)
Bumps [pem](https://github.com/jcreekmore/pem-rs) from 3.0.3 to 3.0.4.
- [Changelog](https://github.com/jcreekmore/pem-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jcreekmore/pem-rs/compare/v3.0.3...v3.0.4)

---
updated-dependencies:
- dependency-name: pem
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 10:23:17 +00:00
dependabot[bot] eddf1fc970
build(deps): Bump anyhow from 1.0.81 to 1.0.82 (#2884)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.81 to 1.0.82.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.81...1.0.82)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 10:22:25 +00:00
dependabot[bot] db908cf674
build(deps): Bump codecov/codecov-action from 4.2.0 to 4.3.0 (#2883)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](7afa10ed9b...84508663e9)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-10 10:47:37 +00:00
dependabot[bot] 19eb923e97
build(deps): Bump multimap from 0.8.3 to 0.10.0 (#2881)
Bumps [multimap](https://github.com/havarnov/multimap) from 0.8.3 to 0.10.0.
- [Commits](https://github.com/havarnov/multimap/commits)

---
updated-dependencies:
- dependency-name: multimap
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-10 10:19:53 +00:00
dependabot[bot] 5c5338ecaf
build(deps): Bump quote from 1.0.35 to 1.0.36 (#2880)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.35 to 1.0.36.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.35...1.0.36)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-10 10:19:16 +00:00
dependabot[bot] 13f7cb607a
build(deps): Bump itertools from 0.11.0 to 0.12.1 (#2879)
Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.11.0 to 0.12.1.
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/compare/v0.11.0...v0.12.1)

---
updated-dependencies:
- dependency-name: itertools
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-10 10:17:41 +00:00
dependabot[bot] c34cf74aaa
build(deps): Bump prost-build from 0.12.3 to 0.12.4 (#2877)
* build(deps): Bump prost-build from 0.12.3 to 0.12.4

Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.12.3 to 0.12.4.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.12.3...v0.12.4)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* regenerate protobuf

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-04-09 16:52:36 -07:00
dependabot[bot] f9425d6d27
build(deps): Bump widestring from 1.0.2 to 1.1.0 (#2878)
Bumps [widestring](https://github.com/starkat99/widestring-rs) from 1.0.2 to 1.1.0.
- [Release notes](https://github.com/starkat99/widestring-rs/releases)
- [Changelog](https://github.com/starkat99/widestring-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/starkat99/widestring-rs/compare/v1.0.2...v1.1.0)

---
updated-dependencies:
- dependency-name: widestring
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-09 11:20:26 +00:00
dependabot[bot] f7008bdd7a
build(deps): Bump cc from 1.0.90 to 1.0.92 (#2876)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.90 to 1.0.92.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.90...1.0.92)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-09 11:13:22 +00:00
dependabot[bot] bce35d06a8
build(deps): Bump getrandom from 0.2.12 to 0.2.14 (#2875)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.12 to 0.2.14.
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.12...v0.2.14)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-09 11:12:20 +00:00
Oliver Gould cf066797fd
chore(dns): Fix test compilation failure in 4daa1f4f0 (#2873) 2024-04-09 00:15:19 +00:00
Alejandro Pedraza 4daa1f4f0b
feat(dns): Expand SRV resolver to account for IPv6 (#2864)
Given the limitations of the dns resolver lib, to retrieve a service IP
we currently take the SRV response target, which has the form
`<host|IP>.svc.ns.svc.cluster-domain.`, and extract the first segment
replacing dashes with dots. This fails for IPv6 address, so in this
change we attempt parsing for IPv4 and if that fails fallback to IPv6 by
instead replacing dots with colons.

The `trust-dns-resolver` has been renamed to `hickory-resolver`
upstream, so we follow suit and also upgrade the version.
2024-04-08 08:30:27 -07:00
Alejandro Pedraza c6115d56c2
build(deps): Swap trust-dns-resolver with hickory-resolver (#2872)
The trust-dns-resolver library has been rebranded as hickory-resolver as
per this [post](https://bluejekyll.github.io/blog/posts/announcing-hickory-dns/).

In order to continue receiving updates, we swap the dependency and
upgrade to v0.24.0
2024-04-08 08:19:24 -07:00
dependabot[bot] c150ac8eec
build(deps): Bump DavidAnson/markdownlint-cli2-action (#2871)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 15.0.0 to 16.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](510b996878...b4c9feab76)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-08 11:15:51 +00:00
dependabot[bot] 0af8f699a4
build(deps): Bump rustversion from 1.0.14 to 1.0.15 (#2870)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.14 to 1.0.15.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.14...1.0.15)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-08 11:02:26 +00:00
dependabot[bot] 85c633f95e
build(deps): Bump thingbuf from 0.1.4 to 0.1.5 (#2869)
Bumps [thingbuf](https://github.com/hawkw/thingbuf) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/hawkw/thingbuf/releases)
- [Changelog](https://github.com/hawkw/thingbuf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hawkw/thingbuf/compare/v0.1.4...v0.1.5)

---
updated-dependencies:
- dependency-name: thingbuf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-08 11:01:33 +00:00
dependabot[bot] 3d6c4a9ec2
build(deps): Bump prost-types from 0.12.3 to 0.12.4 (#2867)
Bumps [prost-types](https://github.com/tokio-rs/prost) from 0.12.3 to 0.12.4.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.12.3...v0.12.4)

---
updated-dependencies:
- dependency-name: prost-types
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-08 11:00:17 +00:00
Alejandro Pedraza 7338f6b2b2
fix(transport): Handle IPv4-mapped IPv6 addrs in SO_ORIGINAL_DST (#2841)
In 9ee109a954 we generalized the `so_original_dst` function to first retrieve the socket's `SO_DOMAIN` in order to determine what constants to use to retrieve the original destination, that would work for both IP families.

This works fine when the socket is bound to `0.0.0.0` and receives a connection to the pod's IPv4 address, or when bound to `::` and receives a connection to the pod's IPv6 address.
When the cluster is in dual-stack mode and we bind the socket to `::`, it properly receives connections targeted at both the pod's IPv4 and IPv6 addresses, but in the former case the `getsockopt` call to retrieve the original destination fails with:

```
WARN ThreadId(01) inbound: linkerd_app_core::serve: Server failed to accept connection error=No such file or directory (os error 2)
```

The problem is that in this case we're dealing with an IPv4-mapped IPv6 address so `SO_DOMAIN` returns `AF_INET6` but apparently in this case we require `AF_INET` when interrogating `getsockopt` for the original destination.

To fix, instead of asking for `SO_DOMAIN` we determine the peer's IP family and use that to set the appropriate constants for `getsocketopt`.
2024-04-05 08:04:58 -07:00
dependabot[bot] 4b1f4533c2
build(deps): Bump codecov/codecov-action from 4.1.1 to 4.2.0 (#2863)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.1.1 to 4.2.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](c16abc29c9...7afa10ed9b)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 10:40:47 +00:00
dependabot[bot] 890daed0ef
build(deps): Bump h2 from 0.3.25 to 0.3.26 (#2862)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.25 to 0.3.26.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.26/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.25...v0.3.26)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 10:19:01 +00:00
Oliver Gould 5b83eb3218
chore(proxy-http): Move utilities out of h1 module (#2861)
Various utility functions are defined in the h1 module that are not strictly
HTTP/1-specific.

In preparation for additional reorganization of the http module, this change
moves utility functions:
2024-04-03 18:19:47 -07:00
dependabot[bot] cf8ecb092a
build(deps): Bump syn from 2.0.57 to 2.0.58 (#2860)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.57 to 2.0.58.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.57...2.0.58)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-03 11:00:40 +00:00
dependabot[bot] 13243c87c0
build(deps): Bump syn from 2.0.55 to 2.0.57 (#2859)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.55 to 2.0.57.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.55...2.0.57)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 11:03:09 +00:00
dependabot[bot] 028639c684
build(deps): Bump drain from 0.1.1 to 0.1.2 (#2858)
Bumps [drain](https://github.com/linkerd/drain-rs) from 0.1.1 to 0.1.2.
- [Release notes](https://github.com/linkerd/drain-rs/releases)
- [Commits](https://github.com/linkerd/drain-rs/commits/v0.1.2)

---
updated-dependencies:
- dependency-name: drain
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 10:58:49 +00:00
dependabot[bot] fe8d2b165a
build(deps): Bump pin-project-lite from 0.2.13 to 0.2.14 (#2857)
Bumps [pin-project-lite](https://github.com/taiki-e/pin-project-lite) from 0.2.13 to 0.2.14.
- [Release notes](https://github.com/taiki-e/pin-project-lite/releases)
- [Changelog](https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project-lite/compare/v0.2.13...v0.2.14)

---
updated-dependencies:
- dependency-name: pin-project-lite
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 10:54:55 +00:00
Oliver Gould 183689e8be
ci: Only trigger sync on latest release (#2855) 2024-03-29 14:50:49 -07:00
Oliver Gould 7d8db39cdb
ci: Allow disabling make_latest on release (#2853) 2024-03-29 11:59:39 -07:00
Oliver Gould 0b92f4e839
control: Configure controller client H2 settings (#2852)
The controller client is supposed to be configured with H2 settings derived from
the environment, but it incorrectly uses defaults.

This change updates the controller client to be configured with the proper H2
client settings.
2024-03-29 08:45:36 -07:00
Oliver Gould 3820c79ac2
control: Remove useless control::Client type (#2851)
This type simply wraps an h2 connection. It can safely be eliminated.

No functional changes.
2024-03-29 15:29:14 +00:00
dependabot[bot] 495d19289a
build(deps): Bump tokio from 1.36.0 to 1.37.0 (#2850)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.36.0 to 1.37.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.36.0...tokio-1.37.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-29 11:06:39 +00:00
Oliver Gould c951b7eb40
proxy-http: Simplify TracingExecutor (#2849)
The proxy::http::trace module was a bit of a misnomer, as it has nothing to do
with "tracing" per-se, and much more to do with being a hyper executor.

This change renames the module and hides it form public export for clarity. It
also simplifies instantiation of the executor.
2024-03-29 01:53:03 +00:00
Oliver Gould 3551ee92ba
proxy-http: Box request bodies (#2848)
The proxy HTTP server emits requests with an UpgradeBody type (as required by
the server module that sets up HTTP CONNECT handling). We also wrap HTTP/2
requests in this body even though we do not currently support CONNECT over
HTTP/2. The inbound and outbound server stacks then Box the request body so that
the UpgradeBody type is hidden.

This commit moves the Box-ing of the request body into the HTTP server to reduce
boilerplate.

This change sets up for additional HTTP server changes. There are no functional
changes.
2024-03-29 01:29:49 +00:00
dependabot[bot] ebefbc55b2
build(deps): Bump tj-actions/changed-files from 43.0.1 to 44.0.0 (#2843)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 43.0.1 to 44.0.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](20576b4b9e...2d756ea4c5)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-28 14:31:16 -07:00
Oliver Gould 24a2c3fb46
ci: Fix version in synced workflow (#2847) 2024-03-28 18:38:35 +00:00
Oliver Gould d91421a9a2
ci: Fix release version (#2846)
Ensures that all release operations happen on the same SHA (i.e. in case main
changes while the run is in progress).
2024-03-28 09:27:40 -07:00
dependabot[bot] ba266854a5
build(deps): Bump memchr from 2.7.1 to 2.7.2 (#2845)
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.7.1 to 2.7.2.
- [Commits](https://github.com/BurntSushi/memchr/compare/2.7.1...2.7.2)

---
updated-dependencies:
- dependency-name: memchr
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-28 10:40:03 +00:00
dependabot[bot] e39f0ce924
build(deps): Bump codecov/codecov-action from 4.1.0 to 4.1.1 (#2842)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](54bcd8715e...c16abc29c9)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-27 10:51:34 +00:00
dependabot[bot] 155603f1ab
build(deps): Bump serde_json from 1.0.114 to 1.0.115 (#2840)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.114 to 1.0.115.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.114...v1.0.115)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 10:43:35 +00:00
dependabot[bot] 5c7504381f
build(deps): Bump regex from 1.10.3 to 1.10.4 (#2839)
Bumps [regex](https://github.com/rust-lang/regex) from 1.10.3 to 1.10.4.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.10.3...1.10.4)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 10:42:51 +00:00
dependabot[bot] eaeff351aa
build(deps): Bump itoa from 1.0.10 to 1.0.11 (#2838)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.10 to 1.0.11.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.10...1.0.11)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 10:41:08 +00:00
dependabot[bot] 76436fc589
build(deps): Bump fastrand from 2.0.1 to 2.0.2 (#2837)
Bumps [fastrand](https://github.com/smol-rs/fastrand) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/smol-rs/fastrand/releases)
- [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/fastrand/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: fastrand
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 10:40:32 +00:00
dependabot[bot] 7a980662df
build(deps): Bump autocfg from 1.1.0 to 1.2.0 (#2836)
Bumps [autocfg](https://github.com/cuviper/autocfg) from 1.1.0 to 1.2.0.
- [Commits](https://github.com/cuviper/autocfg/compare/1.1.0...1.2.0)

---
updated-dependencies:
- dependency-name: autocfg
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-26 10:39:00 +00:00
Oliver Gould 7620e6caaf
ci: Automate weekly proxy releases (#2835)
This commit adds a release-weekly workflow that runs on Wednesday nights. If
there hasn't been a proxy release earlier in the week and there are new commits
on main, then a new release is triggered.

Furthermore, the release workflow is udpated to trigger the sync-proxy
workflow in the Linkerd2 repo after a successful release.
2024-03-25 20:27:10 +00:00
Oliver Gould c07e97bf00
ci: Configure integration test retries (#2834)
Some integration tests can fail in CI due to resource volatility.

This commit configures the PR workflow to use NEXTEST_RETRIES=3 to
automatically retry flakey tests.
2024-03-25 18:41:39 +00:00
dependabot[bot] 2cd30b57dd
build(deps): Bump EmbarkStudios/cargo-deny-action from 1.6.1 to 1.6.2 (#2825)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.6.1 to 1.6.2.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](64015a69ee...b01e7a8cfb)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 18:35:33 +00:00
Oliver Gould cfbb562dc1
chore: Group HTTP crates in a directory (#2833)
This commit moves all linkerd/http-* crates into a common directory.

Linkerd dependencies are grouped distinctly in Cargo.toml files.
2024-03-25 18:24:58 +00:00
dependabot[bot] 239e497e8b
build(deps): Bump syn from 2.0.53 to 2.0.55 (#2831)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.53 to 2.0.55.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.53...2.0.55)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 10:45:48 +00:00
dependabot[bot] 1b738b1538
build(deps): Bump async-trait from 0.1.78 to 0.1.79 (#2832)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.78 to 0.1.79.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.78...0.1.79)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 10:35:34 +00:00
dependabot[bot] 6f5dd498c4
build(deps): Bump backtrace from 0.3.70 to 0.3.71 (#2830)
Bumps [backtrace](https://github.com/rust-lang/backtrace-rs) from 0.3.70 to 0.3.71.
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases)
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.70...0.3.71)

---
updated-dependencies:
- dependency-name: backtrace
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 10:32:05 +00:00
dependabot[bot] 664df5aa5b
build(deps): Bump bytes from 1.5.0 to 1.6.0 (#2829)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 10:29:19 +00:00
dependabot[bot] 7a1c516ac4
build(deps): Bump prettyplease from 0.2.16 to 0.2.17 (#2828)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.16 to 0.2.17.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.16...0.2.17)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 10:28:20 +00:00
dependabot[bot] 8beb070aa8
build(deps): Bump indexmap from 2.2.5 to 2.2.6 (#2827)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.2.5 to 2.2.6.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.2.5...2.2.6)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 10:27:20 +00:00
dependabot[bot] e6a36be817
build(deps): Bump backtrace from 0.3.69 to 0.3.70 (#2826)
Bumps [backtrace](https://github.com/rust-lang/backtrace-rs) from 0.3.69 to 0.3.70.
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases)
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.69...0.3.70)

---
updated-dependencies:
- dependency-name: backtrace
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-22 10:22:21 +00:00
Oliver Gould 62015fdaaf
ci: Update release workflow to use a PAT (#2824)
The proxy release workflow now pushes tags. When pushing a tag, we can be in the
position of modifying GitHub workflows, and so we need 'workflows: write'
permissons. These permisson cannot be granted to github-actions[bot].

This change updates the release worfklow to use Actions metadata to
configure GitHub authentication.
2024-03-21 07:30:27 -07:00
dependabot[bot] 3274700ce8
build(deps): Bump smallvec from 1.13.1 to 1.13.2 (#2823)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.13.1 to 1.13.2.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.13.1...v1.13.2)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 10:45:19 +00:00
dependabot[bot] 95a862bced
build(deps): Bump tj-actions/changed-files from 43.0.0 to 43.0.1 (#2822)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 43.0.0 to 43.0.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](77af4bed28...20576b4b9e)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-21 10:18:08 +00:00
Oliver Gould 3043f8de9b
ci: Fix release workflow permissions (#2821)
The release workflow needs to be able to write actions.
2024-03-20 19:35:20 -07:00
dependabot[bot] 202b5bc1fb
build(deps): Bump aho-corasick from 1.1.2 to 1.1.3 (#2820)
Bumps [aho-corasick](https://github.com/BurntSushi/aho-corasick) from 1.1.2 to 1.1.3.
- [Commits](https://github.com/BurntSushi/aho-corasick/compare/1.1.2...1.1.3)

---
updated-dependencies:
- dependency-name: aho-corasick
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-20 10:50:03 +00:00
dependabot[bot] 8d1373ebaf
build(deps): Bump rustix from 0.38.31 to 0.38.32 (#2819)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.31 to 0.38.32.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.31...v0.38.32)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-20 10:48:05 +00:00
Oliver Gould 0b2aaffdc8
ci: Update release workflow to use arbitrary references (#2818)
This allows unnamed references to be released, which is necessary now that
the release workflow produces tag references.
2024-03-19 23:04:06 -07:00
Oliver Gould 3837465d24
balance: Drop unneeded dependencies (#2817) 2024-03-19 21:28:30 +00:00
Oliver Gould d762e7731f
pool: Extract MockPool into a standalone crate (#2813)
This enables this to be reused in other crates.
2024-03-19 19:54:29 +00:00
Oliver Gould c049a0babd
ci: Fix PR workflow to identify modified crates (#2816) 2024-03-19 19:47:22 +00:00
Oliver Gould fdbeadccdf
ci: Avoid needlessly running coverage builds (#2815) 2024-03-19 19:38:11 +00:00
Oliver Gould 2c5057f9d2
cargo-deny: Ignore private crates (#2814)
There's no point in having to specify the license value on all our unpublished
crates. This commit relaxes the license check for private crates.
2024-03-19 19:29:10 +00:00
Oliver Gould 354ee574f3
api-resolve: Expose endpoint weights (#2812)
The proxy API endpoint types include a 'weight' field that is not currently
exposed by the endpoint Metadata type. This change updates the Metadata type
to include the weight field as specified in the API.
2024-03-19 17:52:46 +00:00
Oliver Gould 46ce396296
ci: Update release workflow to be triggered via API (#2809)
Previously, we have triggered release workflows by pushing a tag to the repo.
While this isn't a huge problem, it's sub-optimal for automation workflows,
where can rely on the `gh` CLI, and it's a sub-optimal user interface compared
to the GitHub Actions UI.

This change updates the release workflow to be triggered by a workflow_dispatch
event with a set of metadata that is used to drive the release process. These
inputs can be specified when triggering the workflow. For example:

    :; gh workflow run Release -f version=v2.223.0 -f publish=true
2024-03-19 10:26:16 -07:00
Oliver Gould a173b22bde
ci: Use rust-cache in PR workflow (#2811)
The Swatinem/rust-cache action attempts to cache dependencies for rust
builds.

This PR adds it to the PR and Coverage workflows.
2024-03-19 17:03:54 +00:00
Oliver Gould c5cff4bdbc
Fix Clippy warnings on nightly (#2810)
Our nightly build is failing due to some dead code warnings that aren't being
triggered on stable.

This change runs `cargo +nightly clippy --fix` and then manually fixes the
remaining issues.

This change also updates the nightly and beta workflows so that they may be
triggered manually.
2024-03-19 08:57:23 -07:00
dependabot[bot] 5e9766565f
build(deps): Bump uuid from 1.7.0 to 1.8.0 (#2808)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.7.0...1.8.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-19 11:08:08 +00:00
dependabot[bot] 9e66a1dd70
build(deps): Bump h2 from 0.3.24 to 0.3.25 (#2807)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.24 to 0.3.25.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.25/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.24...v0.3.25)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-19 11:07:06 +00:00
dependabot[bot] dfafef9ef3
build(deps): Bump syn from 2.0.52 to 2.0.53 (#2805)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.52 to 2.0.53.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.52...2.0.53)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-18 10:14:45 +00:00
dependabot[bot] 261b85fbb1
build(deps): Bump async-trait from 0.1.77 to 0.1.78 (#2806)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.77 to 0.1.78.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.77...0.1.78)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-18 10:14:31 +00:00
dependabot[bot] b305c973e7
build(deps): Bump tokio-test from 0.4.3 to 0.4.4 (#2801)
Bumps [tokio-test](https://github.com/tokio-rs/tokio) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-test-0.4.3...tokio-test-0.4.4)

---
updated-dependencies:
- dependency-name: tokio-test
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-15 11:11:16 +00:00
dependabot[bot] 9cedf7a4d0
build(deps): Bump tokio-stream from 0.1.14 to 0.1.15 (#2800)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.14 to 0.1.15.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.14...tokio-stream-0.1.15)

---
updated-dependencies:
- dependency-name: tokio-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-15 11:10:08 +00:00
Oliver Gould 27899f9a8f
ci: Fix release publish conditions (#2799) 2024-03-15 01:12:03 +00:00
Oliver Gould c2698c6046
ci: Skip checking changed files on releases (#2798)
There's no need to check for file changes on release tags. Furthermore, avoid
rebuilding packages on workflow changes (for now).
2024-03-14 17:19:46 -07:00
Oliver Gould 1690668bf4
ci: Fix semver check in release workflow (#2797)
The semver check was inverted. This commit fixes it.
2024-03-14 23:50:34 +00:00
Oliver Gould 6faa3d3636
ci: Add a confirmation job to the release workflow (#2796)
This job can be required on all changes.
2024-03-14 16:35:55 -07:00
Oliver Gould 1c350d3456
ci: Support full semver tags in release workflow (#2795) 2024-03-14 16:29:38 -07:00
Alejandro Pedraza 9ee109a954
Add IPv6 support when retrieving original destination (#2794)
We first retrieve the socket option `SO_DOMAIN` to figure the socket's
family, to then use the appropriate level and optname args when retrieving
the original destination.
2024-03-14 15:40:45 +00:00
dependabot[bot] 1fe06759e3
build(deps): Bump tj-actions/changed-files from 42.1.0 to 43.0.0 (#2793)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 42.1.0 to 43.0.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](aa08304bd4...77af4bed28)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-14 11:05:35 +00:00
Oliver Gould 18bd7167e8
ci: Fix incorrent log message (#2792) 2024-03-14 00:42:49 +00:00
dependabot[bot] 8913c0c403
build(deps): Bump actions/checkout from 4.1.1 to 4.1.2 (#2789)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](b4ffde65f4...9bb56186c3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-13 15:55:32 +00:00
dependabot[bot] 1613c6bc95
build(deps): Bump softprops/action-gh-release from 2.0.3 to 2.0.4 (#2790)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](3198ee18f8...9d7c94cfd0)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-13 10:19:33 +00:00
Oliver Gould cf144058a2
Include the github CLI in the devcontainer (#2788) 2024-03-12 12:54:45 -07:00
dependabot[bot] eb1f07dad7
build(deps): Bump softprops/action-gh-release from 2.0.2 to 2.0.3 (#2783)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](d99959edae...3198ee18f8)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-12 14:28:00 +00:00
Oliver Gould 1fc6cbcd13
ci: Fix Action update auto-merging (#2787) 2024-03-12 07:26:15 -07:00
dependabot[bot] 8af9d9c025
build(deps): Bump thiserror from 1.0.57 to 1.0.58 (#2786)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.57 to 1.0.58.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.57...1.0.58)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-12 11:02:40 +00:00
dependabot[bot] 33f892cf94
build(deps): Bump proc-macro2 from 1.0.78 to 1.0.79 (#2785)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.78 to 1.0.79.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.78...1.0.79)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-12 11:00:22 +00:00
dependabot[bot] de85fa234c
build(deps): Bump anyhow from 1.0.80 to 1.0.81 (#2784)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.80...1.0.81)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-12 10:59:21 +00:00
Oliver Gould 7faad88da5
readme: mTLS has been prod for years (#2782) 2024-03-11 20:52:23 -07:00
dependabot[bot] 6cf795129e
build(deps): Bump tj-actions/changed-files from 42.0.5 to 42.1.0 (#2775)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 42.0.5 to 42.1.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](800a282599...aa08304bd4)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-11 20:31:10 -07:00
dependabot[bot] 85ad089998
build(deps): Bump cc from 1.0.89 to 1.0.90 (#2769)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.89 to 1.0.90.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.89...1.0.90)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-11 20:28:22 -07:00
Oliver Gould 62556c4a97
ci: Fix dependabot merge flow (#2781)
Merge actions workflow into PR workflow
2024-03-11 20:12:25 -07:00
Oliver Gould 7466eb3ce3
ci: PR merge-dependabot (#2780) 2024-03-11 19:24:35 -07:00
Oliver Gould bde6151a2c
ci: Improve PR debugging (#2779)
* ci: Improve PR debugging

* touchup

* Fix coverage conditional

* Release touchups

* Explicit conditional matching

* fixup! Explicit conditional matching
2024-03-11 18:30:35 -07:00
Oliver Gould 7b5c173543
ci: Improve diagnostics in PR workflows (#2778) 2024-03-11 17:37:38 -07:00
Oliver Gould eccce3cba8
Debug depenabot automation (#2777) 2024-03-11 17:07:43 -07:00
dependabot[bot] 67be706d3c
build(deps): Bump softprops/action-gh-release from 1 to 2 (#2776)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](de2c0eb89a...d99959edae)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-11 16:42:48 -07:00
Oliver Gould ca668f23fe
Consolidate PR workflow with dependabot automation (#2774)
We currently run many different workflows for each PR, each flagged on a subset
of files. This means that we can't mark any workflows as required for PRs to
merge, which in turn limits our ability to automate the merge process for
dependencies.

To fix this, we consolidate our various integration testing steps into a single
Pull Request workflow (which will be marked as required for PRs to merge).

Similarly, the coverage workflow now runs on on all PRs; and we use the
changed-files action to limit execution to changes that alter Rust code.

All workflows are updated to use GitHub's native concurrency control, which
replaces styfle/cancel-workflow-action.
2024-03-11 16:42:00 -07:00
dependabot[bot] 9189267ec5
build(deps): Bump libloading from 0.8.2 to 0.8.3 (#2771)
Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.8.2 to 0.8.3.
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.8.2...0.8.3)

---
updated-dependencies:
- dependency-name: libloading
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-08 09:52:03 -08:00
dependabot[bot] e78dfb9d11
build(deps): Bump prometheus-client from 0.22.1 to 0.22.2 (#2770)
Bumps [prometheus-client](https://github.com/prometheus/client_rust) from 0.22.1 to 0.22.2.
- [Release notes](https://github.com/prometheus/client_rust/releases)
- [Changelog](https://github.com/prometheus/client_rust/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_rust/compare/v0.22.1...v0.22.2)

---
updated-dependencies:
- dependency-name: prometheus-client
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-08 09:51:54 -08:00
dependabot[bot] 6a6df81572
build(deps): Bump EmbarkStudios/cargo-deny-action from 1.5.15 to 1.6.1 (#2768)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.5.15 to 1.6.1.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](68cd9c5e3e...64015a69ee)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-06 07:15:36 -08:00
dependabot[bot] 937ca3d0cd
build(deps): Bump ahash from 0.8.10 to 0.8.11 (#2761)
Bumps [ahash](https://github.com/tkaitchuck/ahash) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/tkaitchuck/ahash/releases)
- [Commits](https://github.com/tkaitchuck/ahash/compare/v0.8.10...v0.8.11)

---
updated-dependencies:
- dependency-name: ahash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-06 07:15:16 -08:00
dependabot[bot] ebe1a9f8b4
build(deps): Bump syn from 2.0.50 to 2.0.52 (#2760)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.50 to 2.0.52.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.50...2.0.52)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-06 07:15:00 -08:00
dependabot[bot] 9f5abc7d16
build(deps): Bump cc from 1.0.88 to 1.0.89 (#2767)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.88 to 1.0.89.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.88...1.0.89)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-06 07:13:50 -08:00
dependabot[bot] 3d85bd2632
build(deps): Bump pin-project from 1.1.4 to 1.1.5 (#2766)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.4 to 1.1.5.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.4...v1.1.5)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-06 07:13:22 -08:00
dependabot[bot] 4fdd885a60
build(deps): Bump mio from 0.8.10 to 0.8.11 (#2758)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.10...v0.8.11)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-05 09:00:05 -08:00
Oliver Gould 701e81fbdd
Disable PRs for hermit-abi (#2765) 2024-03-05 07:11:15 -08:00
dependabot[bot] 71b161d57b
build(deps): Bump actions/download-artifact from 4.1.3 to 4.1.4 (#2757)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](87c55149d9...c850b930e6)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 08:36:59 -08:00
dependabot[bot] fa895bebac
build(deps): Bump libloading from 0.8.1 to 0.8.2 (#2756)
Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.8.1 to 0.8.2.
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.8.1...0.8.2)

---
updated-dependencies:
- dependency-name: libloading
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 08:36:46 -08:00
dependabot[bot] a39044d5a3
build(deps): Bump indexmap from 2.2.3 to 2.2.5 (#2755)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.2.3 to 2.2.5.
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.2.3...2.2.5)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 08:34:20 -08:00
dependabot[bot] f69f122c97
build(deps): Bump log from 0.4.20 to 0.4.21 (#2754)
Bumps [log](https://github.com/rust-lang/log) from 0.4.20 to 0.4.21.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.20...0.4.21)

---
updated-dependencies:
- dependency-name: log
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 08:34:08 -08:00
dependabot[bot] d10bee4fa7
build(deps): Bump x509-parser from 0.15.1 to 0.16.0 (#2752)
Bumps [x509-parser](https://github.com/rusticata/x509-parser) from 0.15.1 to 0.16.0.
- [Release notes](https://github.com/rusticata/x509-parser/releases)
- [Changelog](https://github.com/rusticata/x509-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rusticata/x509-parser/compare/x509-parser-0.15.1...x509-parser-0.16.0)

---
updated-dependencies:
- dependency-name: x509-parser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 08:00:04 -08:00
dependabot[bot] 73bbb62d0c
build(deps): Bump ahash from 0.8.9 to 0.8.10 (#2750)
Bumps [ahash](https://github.com/tkaitchuck/ahash) from 0.8.9 to 0.8.10.
- [Release notes](https://github.com/tkaitchuck/ahash/releases)
- [Commits](https://github.com/tkaitchuck/ahash/compare/v0.8.9...v0.8.10)

---
updated-dependencies:
- dependency-name: ahash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-28 07:48:16 -08:00
dependabot[bot] 2e1e823775
build(deps): Bump cc from 1.0.86 to 1.0.88 (#2743)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.86 to 1.0.88.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.86...1.0.88)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 14:09:01 -08:00
dependabot[bot] 9c51104497
build(deps): Bump actions/download-artifact from 4.1.2 to 4.1.3 (#2749)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](eaceaf801f...87c55149d9)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 11:45:49 -08:00
dependabot[bot] bfb26d3690
build(deps): Bump codecov/codecov-action from 4.0.1 to 4.1.0 (#2748)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](e0b68c6749...54bcd8715e)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 11:43:38 -08:00
dependabot[bot] d366f90357
build(deps): Bump tj-actions/changed-files from 42.0.4 to 42.0.5 (#2744)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 42.0.4 to 42.0.5.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](3f54ebb830...800a282599)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 11:43:24 -08:00
dependabot[bot] c97ac72ff4
build(deps): Bump socket2 from 0.5.5 to 0.5.6 (#2742)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/compare/v0.5.5...v0.5.6)

---
updated-dependencies:
- dependency-name: socket2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 11:43:06 -08:00
dependabot[bot] dd8c9dc52d
build(deps): Bump rangemap from 1.5.0 to 1.5.1 (#2747)
Bumps [rangemap](https://github.com/jeffparsons/rangemap) from 1.5.0 to 1.5.1.
- [Changelog](https://github.com/jeffparsons/rangemap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jeffparsons/rangemap/commits)

---
updated-dependencies:
- dependency-name: rangemap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 11:42:59 -08:00
dependabot[bot] 75f3d96b3d
build(deps): Bump tempfile from 3.10.0 to 3.10.1 (#2746)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.10.0 to 3.10.1.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.10.0...v3.10.1)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 11:42:49 -08:00
Oliver Gould 8f78dd32d2
build(deps): Bump all remaining deps (#2738)
:; cargo update
    Updating crates.io index
    Updating anyhow v1.0.79 -> v1.0.80
    Updating base64 v0.21.5 -> v0.21.7
    Updating bitflags v2.4.0 -> v2.4.2
    Updating cc v1.0.83 -> v1.0.86
    Updating cpufeatures v0.2.11 -> v0.2.12
    Updating either v1.9.0 -> v1.10.0
    Updating indexmap v2.1.0 -> v2.2.3
    Updating ipnet v2.7.2 -> v2.9.0
    Updating jemalloc-sys v0.5.3+5.3.0-patched -> v0.5.4+5.3.0-patched
    Removing jobserver v0.1.28
    Updating memmap2 v0.9.3 -> v0.9.4
    Updating miniz_oxide v0.7.1 -> v0.7.2
    Updating num-bigint v0.4.3 -> v0.4.4
    Updating num-integer v0.1.45 -> v0.1.46
    Updating num-traits v0.2.15 -> v0.2.18
    Updating object v0.32.1 -> v0.32.2
    Updating rcgen v0.12.0 -> v0.12.1
    Updating rustix v0.38.28 -> v0.38.31
    Updating semver v1.0.21 -> v1.0.22
    Updating serde v1.0.195 -> v1.0.197
    Updating serde_derive v1.0.195 -> v1.0.197
    Updating serde_json v1.0.94 -> v1.0.114
    Updating syn v2.0.46 -> v2.0.50
    Updating tempfile v3.9.0 -> v3.10.0
    Updating thiserror v1.0.39 -> v1.0.57
    Updating thiserror-impl v1.0.39 -> v1.0.57
    Updating unicode-normalization v0.1.22 -> v0.1.23
    Updating uuid v1.5.0 -> v1.7.0
    Updating want v0.3.0 -> v0.3.1
    Updating windows-targets v0.48.0 -> v0.48.5
    Updating windows_aarch64_gnullvm v0.48.0 -> v0.48.5
    Updating windows_aarch64_msvc v0.48.0 -> v0.48.5
    Updating windows_i686_gnu v0.48.0 -> v0.48.5
    Updating windows_i686_msvc v0.48.0 -> v0.48.5
    Updating windows_x86_64_gnu v0.48.0 -> v0.48.5
    Updating windows_x86_64_gnullvm v0.48.0 -> v0.48.5
    Updating windows_x86_64_msvc v0.48.0 -> v0.48.5
2024-02-21 16:13:58 -08:00
Oliver Gould 10d68a46ab
build(deps): Update rustls and ring (#2735)
This change updates the repo to uses the latest TLS dependencies.

Stack canaries are not enabled in produced binaries due to changes in the TLS build.
2024-02-21 16:03:35 -08:00
Oliver Gould e2d9652193
build(deps): Update hyper, http, and http-body (#2737) 2024-02-21 15:51:52 -08:00
Oliver Gould 986458f232
build(deps): Update tokio to v1.36.0 (#2736) 2024-02-21 15:51:33 -08:00
dependabot[bot] 08cec7ed12
bump proc-macro2 from 1.0.74 to 1.0.78 (#2734)
---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 15:12:23 -08:00
dependabot[bot] c7409e545a
bump hermit-abi from 0.3.1 to 0.3.6 (#2733)
---
updated-dependencies:
- dependency-name: hermit-abi
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 15:11:38 -08:00
dependabot[bot] 804db1b41a
build(deps): bump ipconfig from 0.3.0 to 0.3.2 (#2732)
Bumps [ipconfig](https://github.com/liranringel/ipconfig) from 0.3.0 to 0.3.2.
- [Release notes](https://github.com/liranringel/ipconfig/releases)
- [Commits](https://github.com/liranringel/ipconfig/commits/0.3.2)

---
updated-dependencies:
- dependency-name: ipconfig
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 15:07:41 -08:00
dependabot[bot] 962f0d9ffd
build(deps): bump prometheus-client from 0.22.0 to 0.22.1 (#2731)
Bumps [prometheus-client](https://github.com/prometheus/client_rust) from 0.22.0 to 0.22.1.
- [Release notes](https://github.com/prometheus/client_rust/releases)
- [Changelog](https://github.com/prometheus/client_rust/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_rust/compare/v0.22.0...v0.22.1)

---
updated-dependencies:
- dependency-name: prometheus-client
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 15:04:49 -08:00
dependabot[bot] 740cb949ed
build(deps): bump bytes from 1.4.0 to 1.5.0 (#2728)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 15:03:18 -08:00
dependabot[bot] 7665119517
build(deps): bump unicode-bidi from 0.3.14 to 0.3.15 (#2729)
Bumps [unicode-bidi](https://github.com/servo/unicode-bidi) from 0.3.14 to 0.3.15.
- [Release notes](https://github.com/servo/unicode-bidi/releases)
- [Commits](https://github.com/servo/unicode-bidi/commits)

---
updated-dependencies:
- dependency-name: unicode-bidi
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 15:03:08 -08:00
dependabot[bot] f1796d7730
build(deps): bump actions/upload-artifact from 4.3.0 to 4.3.1 (#2723)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](26f96dfa69...5d5d22a312)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:56:24 -08:00
dependabot[bot] 7e7a85f073
build(deps): bump linux-raw-sys from 0.4.12 to 0.4.13 (#2727)
Bumps [linux-raw-sys](https://github.com/sunfishcode/linux-raw-sys) from 0.4.12 to 0.4.13.
- [Commits](https://github.com/sunfishcode/linux-raw-sys/compare/v0.4.12...v0.4.13)

---
updated-dependencies:
- dependency-name: linux-raw-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:56:12 -08:00
dependabot[bot] fa34f6505d
build(deps): bump ahash from 0.8.7 to 0.8.9 (#2726)
Bumps [ahash](https://github.com/tkaitchuck/ahash) from 0.8.7 to 0.8.9.
- [Release notes](https://github.com/tkaitchuck/ahash/releases)
- [Commits](https://github.com/tkaitchuck/ahash/compare/0.8.7...v0.8.9)

---
updated-dependencies:
- dependency-name: ahash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:55:57 -08:00
dependabot[bot] 6f33219a1d
build(deps): bump log from 0.4.17 to 0.4.20 (#2725)
Bumps [log](https://github.com/rust-lang/log) from 0.4.17 to 0.4.20.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.17...0.4.20)

---
updated-dependencies:
- dependency-name: log
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:55:49 -08:00
dependabot[bot] 92e74fcec7
build(deps): bump lock_api from 0.4.9 to 0.4.11 (#2724)
Bumps [lock_api](https://github.com/Amanieu/parking_lot) from 0.4.9 to 0.4.11.
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/lock_api-0.4.9...lock_api-0.4.11)

---
updated-dependencies:
- dependency-name: lock_api
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:55:40 -08:00
dependabot[bot] c8b5e7b94f
build(deps): bump rangemap from 1.4.0 to 1.5.0 (#2721)
Bumps [rangemap](https://github.com/jeffparsons/rangemap) from 1.4.0 to 1.5.0.
- [Changelog](https://github.com/jeffparsons/rangemap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jeffparsons/rangemap/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: rangemap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:41:07 -08:00
dependabot[bot] 116be8763f
build(deps): bump jobserver from 0.1.27 to 0.1.28 (#2720)
Bumps [jobserver](https://github.com/alexcrichton/jobserver-rs) from 0.1.27 to 0.1.28.
- [Commits](https://github.com/alexcrichton/jobserver-rs/commits)

---
updated-dependencies:
- dependency-name: jobserver
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:38:56 -08:00
dependabot[bot] 1527252279
build(deps): bump tempfile from 3.6.0 to 3.9.0 (#2718)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.6.0 to 3.9.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.6.0...v3.9.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:37:48 -08:00
Oliver Gould 8ed4fb8e2f
ignore all windows deps (#2722) 2024-02-21 14:37:36 -08:00
dependabot[bot] 80e9e27a50
build(deps): bump mio from 0.8.9 to 0.8.10 (#2715)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.9 to 0.8.10.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.9...v0.8.10)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:32:53 -08:00
dependabot[bot] 988ccef158
build(deps): bump ryu from 1.0.16 to 1.0.17 (#2717)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.16 to 1.0.17.
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.16...1.0.17)

---
updated-dependencies:
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:32:41 -08:00
dependabot[bot] 06acf76c72
build(deps): bump regex from 1.9.4 to 1.10.3 (#2714)
Bumps [regex](https://github.com/rust-lang/regex) from 1.9.4 to 1.10.3.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.9.4...1.10.3)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:27:00 -08:00
dependabot[bot] 5fbd18b4d8
build(deps): bump pin-project from 1.1.3 to 1.1.4 (#2713)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.3...v1.1.4)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:26:46 -08:00
dependabot[bot] 9664d33ef7
build(deps): bump crc32fast from 1.3.2 to 1.4.0 (#2712)
Bumps [crc32fast](https://github.com/srijs/rust-crc32fast) from 1.3.2 to 1.4.0.
- [Commits](https://github.com/srijs/rust-crc32fast/compare/v1.3.2...v1.4.0)

---
updated-dependencies:
- dependency-name: crc32fast
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:23:37 -08:00
dependabot[bot] be5be6d65e
build(deps): bump libc from 0.2.150 to 0.2.153 (#2709)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.150 to 0.2.153.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.150...0.2.153)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:23:27 -08:00
dependabot[bot] 32c50338d3
build(deps): bump petgraph from 0.6.3 to 0.6.4 (#2711)
Bumps [petgraph](https://github.com/petgraph/petgraph) from 0.6.3 to 0.6.4.
- [Changelog](https://github.com/petgraph/petgraph/blob/master/RELEASES.rst)
- [Commits](https://github.com/petgraph/petgraph/compare/petgraph@v0.6.3...petgraph@v0.6.4)

---
updated-dependencies:
- dependency-name: petgraph
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:20:08 -08:00
dependabot[bot] 23d5946f24
build(deps): bump rustversion from 1.0.11 to 1.0.14 (#2710)
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.11 to 1.0.14.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.11...1.0.14)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:19:52 -08:00
dependabot[bot] 0e09b7169a
build(deps): bump tj-actions/changed-files from 42.0.0 to 42.0.4 (#2702)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 42.0.0 to 42.0.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](ae82ed4ae0...3f54ebb830)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:15:23 -08:00
dependabot[bot] f60e24b3ec
build(deps): bump thread_local from 1.1.7 to 1.1.8 (#2708)
Bumps [thread_local](https://github.com/Amanieu/thread_local-rs) from 1.1.7 to 1.1.8.
- [Commits](https://github.com/Amanieu/thread_local-rs/compare/1.1.7...1.1.8)

---
updated-dependencies:
- dependency-name: thread_local
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:13:43 -08:00
dependabot[bot] ca85d26738
build(deps): bump boring from 3.0.4 to 3.1.0 (#2707)
Bumps [boring](https://github.com/cloudflare/boring) from 3.0.4 to 3.1.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v3.0.4...v3.1.0)

---
updated-dependencies:
- dependency-name: boring
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:10:07 -08:00
dependabot[bot] 84c0cd3a43
build(deps): bump time from 0.3.30 to 0.3.34 (#2706)
Bumps [time](https://github.com/time-rs/time) from 0.3.30 to 0.3.34.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.30...v0.3.34)

---
updated-dependencies:
- dependency-name: time
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:09:52 -08:00
dependabot[bot] 6ac236d5bf
build(deps): bump EmbarkStudios/cargo-deny-action from 1.5.11 to 1.5.15 (#2699)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.5.11 to 1.5.15.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](2b35f42b96...68cd9c5e3e)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:02:47 -08:00
dependabot[bot] 1920e05379
build(deps): bump actions/download-artifact from 4.1.1 to 4.1.2 (#2697)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](6b208ae046...eaceaf801f)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:02:32 -08:00
dependabot[bot] 4ef089cd4b
build(deps): bump codecov/codecov-action from 3.1.1 to 4.0.1 (#2693)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.1 to 4.0.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](d9f34f8cd5...e0b68c6749)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:02:18 -08:00
dependabot[bot] 54ca1c3544
build(deps): bump styfle/cancel-workflow-action from 0.12.0 to 0.12.1 (#2690)
Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.12.0 to 0.12.1.
- [Release notes](https://github.com/styfle/cancel-workflow-action/releases)
- [Commits](01ce38bf96...85880fa030)

---
updated-dependencies:
- dependency-name: styfle/cancel-workflow-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:02:06 -08:00
dependabot[bot] 5e6faf1273
build(deps): bump itoa from 1.0.6 to 1.0.10 (#2686)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.6 to 1.0.10.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.6...1.0.10)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 14:01:49 -08:00
Oliver Gould b023c5c482
dependabot: Ignore windows_* (#2704) 2024-02-21 14:01:22 -08:00
dependabot[bot] 5fad8a5510
build(deps): bump tokio-test from 0.4.2 to 0.4.3 (#2684)
Bumps [tokio-test](https://github.com/tokio-rs/tokio) from 0.4.2 to 0.4.3.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-test-0.4.2...tokio-test-0.4.3)

---
updated-dependencies:
- dependency-name: tokio-test
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-21 13:56:50 -08:00
Oliver Gould f1d55717e9
dev: v43 with Rust v1.76 (#2703)
76df6dc386
2024-02-21 13:55:19 -08:00
Oliver Gould 098dd0dede
gateway: Avoid double http prefixing in metric names (#2701) 2024-02-16 11:33:28 -08:00
Oliver Gould 96124bc360
http: Parameterize NewServeHttp (#2696)
We plan to add defensive timeouts to the HTTP server to limit idle streams and
connections. In preparation for this, we need to parameterize the server
to accept these additonal configurations.

This change updates NewServeHttp to use an ExtractParam to build a Params struct
for each server. In follow-up changes, the timeout configuration will be
instrumented through this Params struct.

There are no functional changes in this commit.
2024-02-05 14:59:04 -08:00
Oliver Gould 28b2d83449
outbound: Log and remove l5d-proxy-error from responses (#2694)
When an outbound client reads a response from a remote peer that
includes the l5d-proxy-error header, it doesn't communicate this error
state in logs, and it (incorrectly, according to the comments) leaves
the l5d-proxy-error header on the response.

Furthermore, we currently _always_ emit a DEBUG log message "Remote proxy
error", even when no error header is present.

This change updates the error handler to:

1. Emit 'Remote proxy error' messages at INFO level when the header is
   validly set;
2. Strip these headers when they are logged (i.e. to eliminate ambiguity
   and potential for double-logging).

Tests are updated to exercise the header removal logic.
2024-02-05 14:17:15 -08:00
dependabot[bot] fc9ae35697
build(deps): bump bumpalo from 3.12.0 to 3.14.0 (#2678)
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.12.0 to 3.14.0.
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.12.0...3.14.0)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-25 17:30:16 -08:00
dependabot[bot] cdcc037b23
build(deps): bump jobserver from 0.1.26 to 0.1.27 (#2679)
Bumps [jobserver](https://github.com/alexcrichton/jobserver-rs) from 0.1.26 to 0.1.27.
- [Commits](https://github.com/alexcrichton/jobserver-rs/commits)

---
updated-dependencies:
- dependency-name: jobserver
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-25 17:29:58 -08:00
dependabot[bot] fb6be29137
build(deps): bump rcgen from 0.11.3 to 0.12.0 (#2677)
Bumps [rcgen](https://github.com/rustls/rcgen) from 0.11.3 to 0.12.0.
- [Commits](https://github.com/rustls/rcgen/compare/v0.11.3...v0.12.0)

---
updated-dependencies:
- dependency-name: rcgen
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-25 17:29:47 -08:00
dependabot[bot] 26309e8c4a
build(deps): bump tj-actions/changed-files from 41.0.1 to 42.0.0 (#2657)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 41.0.1 to 42.0.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](716b1e1304...ae82ed4ae0)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 16:36:15 -08:00
dependabot[bot] 2092c8666c
build(deps): bump EmbarkStudios/cargo-deny-action from 1.5.10 to 1.5.11 (#2672)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.5.10 to 1.5.11.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](1350841d09...2b35f42b96)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 16:19:43 -08:00
dependabot[bot] 1ff9c2a0ed
build(deps): bump sharded-slab from 0.1.4 to 0.1.7 (#2676)
Bumps [sharded-slab](https://github.com/hawkw/sharded-slab) from 0.1.4 to 0.1.7.
- [Release notes](https://github.com/hawkw/sharded-slab/releases)
- [Changelog](https://github.com/hawkw/sharded-slab/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hawkw/sharded-slab/compare/v0.1.4...v0.1.7)

---
updated-dependencies:
- dependency-name: sharded-slab
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 16:19:30 -08:00
dependabot[bot] cab3986cb7
build(deps): bump which from 4.4.0 to 4.4.2 (#2675)
Bumps [which](https://github.com/harryfei/which-rs) from 4.4.0 to 4.4.2.
- [Release notes](https://github.com/harryfei/which-rs/releases)
- [Changelog](https://github.com/harryfei/which-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/harryfei/which-rs/compare/4.4.0...4.4.2)

---
updated-dependencies:
- dependency-name: which
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 16:06:15 -08:00
dependabot[bot] f339454da9
build(deps): bump getrandom from 0.2.8 to 0.2.12 (#2674)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.8 to 0.2.12.
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.8...v0.2.12)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 16:06:05 -08:00
dependabot[bot] fc2becc339
build(deps): bump prettyplease from 0.2.15 to 0.2.16 (#2673)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.2.15 to 0.2.16.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.15...0.2.16)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 16:05:54 -08:00
dependabot[bot] c44440963c
build(deps): bump actions/upload-artifact from 4.2.0 to 4.3.0 (#2671)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](694cdabd8b...26f96dfa69)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 16:05:35 -08:00
dependabot[bot] 3f127b84fa
build(deps): bump unicode-ident from 1.0.6 to 1.0.12 (#2667)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.6 to 1.0.12.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.6...1.0.12)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 16:05:24 -08:00
dependabot[bot] 95ca575ce5
build(deps): bump zerocopy from 0.7.31 to 0.7.32 (#2666)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.31 to 0.7.32.
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.7.31...v0.7.32)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-23 12:38:13 -08:00
dependabot[bot] 54bfcc460a
build(deps): bump clang-sys from 1.6.0 to 1.7.0 (#2668)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-23 12:37:52 -08:00
dependabot[bot] 96d4013774
build(deps): bump serde from 1.0.193 to 1.0.195 (#2670)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.193 to 1.0.195.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.193...v1.0.195)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-23 12:37:31 -08:00
dependabot[bot] 187c83d241
build(deps): bump EmbarkStudios/cargo-deny-action from 1.5.5 to 1.5.10 (#2665)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.5.5 to 1.5.10.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](1e59595bed...1350841d09)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:24:07 -08:00
dependabot[bot] 00c900451f
build(deps): bump DavidAnson/markdownlint-cli2-action (#2656)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 14.0.0 to 15.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](455b6612a7...510b996878)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:16:17 -08:00
dependabot[bot] ea551378bc
build(deps): bump shlex from 1.1.0 to 1.3.0 (#2664)
Bumps [shlex](https://github.com/comex/rust-shlex) from 1.1.0 to 1.3.0.
- [Changelog](https://github.com/comex/rust-shlex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/comex/rust-shlex/commits)

---
updated-dependencies:
- dependency-name: shlex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:16:04 -08:00
dependabot[bot] fc0bd72a81
build(deps): bump actions/upload-artifact from 4.0.0 to 4.2.0 (#2658)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.0.0 to 4.2.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](c7d193f32e...694cdabd8b)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:15:48 -08:00
dependabot[bot] 2ac2f3d0d0
build(deps): bump either from 1.8.1 to 1.9.0 (#2652)
Bumps [either](https://github.com/bluss/either) from 1.8.1 to 1.9.0.
- [Commits](https://github.com/bluss/either/compare/1.8.1...1.9.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:07:26 -08:00
dependabot[bot] 820c97aeac
build(deps): bump smallvec from 1.10.0 to 1.13.1 (#2661)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.10.0 to 1.13.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.10.0...v1.13.1)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:07:13 -08:00
dependabot[bot] 2c0af408d2
build(deps): bump semver from 1.0.20 to 1.0.21 (#2651)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.20 to 1.0.21.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.20...1.0.21)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:04:02 -08:00
dependabot[bot] e38b1a6eb3
build(deps): bump async-trait from 0.1.75 to 0.1.77 (#2650)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.75 to 0.1.77.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/commits)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:03:52 -08:00
dependabot[bot] 279d748fb3
build(deps): bump procfs from 0.15.1 to 0.16.0 (#2649)
Bumps [procfs](https://github.com/eminence/procfs) from 0.15.1 to 0.16.0.
- [Release notes](https://github.com/eminence/procfs/releases)
- [Commits](https://github.com/eminence/procfs/compare/v0.15.1...v0.16.0)

---
updated-dependencies:
- dependency-name: procfs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:03:35 -08:00
dependabot[bot] de04a40c4e
build(deps): bump h2 from 0.3.22 to 0.3.24 (#2660)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.22 to 0.3.24.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.24/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.22...v0.3.24)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 16:03:12 -08:00
Zahari Dichev 9c23fdd513
discovery: consume server_name and UriLikeIdentity from proto (#2618)
This change is a follow-up to the work to split the concepts of
`ServerId` and `ServerName`. To do that we consume the
changes to the protobuf API introduced in: https://github.com/linkerd/linkerd2-proxy-api/pull/285.
while keeping things backward compatible.

 Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-01-15 17:53:32 +02:00
Zahari Dichev b3dea15808
config:add spire client config (#2641)
This change allows the proxy to be configured to use SPIRE
as its credentials provider. There are three additional ENV
vars introduced: 

- `LINKERD2_PROXY_IDENTITY_SERVER_ID` - Configures the TLS Id of the proxy inbound server.
- `LINKERD2_PROXY_IDENTITY_SERVER_NAME` - Configures the server name of this proxy.
- `ENV_IDENTITY_SPIRE_SOCKET` - If set, the proxy will use Spire as the identity provider

For backward compatibility reasons if `ENV_IDENTITY_IDENTITY_LOCAL_NAME`
is set both tls id and server_name will be sourced from its value. If however
it is not set, both `LINKERD2_PROXY_IDENTITY_SERVER_ID` and
`LINKERD2_PROXY_IDENTITY_SERVER_NAME` are required. 

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2024-01-14 22:03:53 +02:00
Zahari Dichev e5392af904
identity: add spire identity client (#2580)
This PR adds gRPC client that allows us to connect to the SPIRE workload API
and stream new certificates through the `identity::Credentials` API.  The configuration
part of this functionality will come in a later subsequent change.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com
2024-01-13 17:07:05 +02:00
Oliver Gould 8ff8c1f260
docs: Fix bad reference link (#2647)
This eliminates annoying warnings.
2024-01-12 09:13:06 -08:00
Táskai Dominik 466f88cffb
Change inbound port check log level to debug. (#2625)
Change inbound port check log level to debug.

Fixes linkerd/linkerd2#10299
Signed-off-by: Dominik Táskai <dominik.taskai@leannet.eu>
Co-authored-by: Dominik Táskai <dominik.taskai@leannet.eu>
2024-01-12 04:25:25 -08:00
dependabot[bot] 9fcedaf88f
build(deps): bump num_cpus from 1.15.0 to 1.16.0 (#2646)
Bumps [num_cpus](https://github.com/seanmonstar/num_cpus) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/seanmonstar/num_cpus/releases)
- [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.15.0...v1.16.0)

---
updated-dependencies:
- dependency-name: num_cpus
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 04:07:38 -08:00
dependabot[bot] 805297c0c9
build(deps): bump httpdate from 1.0.2 to 1.0.3 (#2645)
Bumps [httpdate](https://github.com/pyfisch/httpdate) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/pyfisch/httpdate/releases)
- [Commits](https://github.com/pyfisch/httpdate/compare/v1.0.2...v1.0.3)

---
updated-dependencies:
- dependency-name: httpdate
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 04:07:28 -08:00
dependabot[bot] f7f2ecb976
build(deps): bump rustix from 0.36.16 to 0.36.17 (#2643)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.36.16 to 0.36.17.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.36.16...v0.36.17)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 04:07:12 -08:00
dependabot[bot] 7e804b91b2
build(deps): bump thingbuf from 0.1.3 to 0.1.4 (#2642)
Bumps [thingbuf](https://github.com/hawkw/thingbuf) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/hawkw/thingbuf/releases)
- [Changelog](https://github.com/hawkw/thingbuf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hawkw/thingbuf/compare/v0.1.3...v0.1.4)

---
updated-dependencies:
- dependency-name: thingbuf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 04:06:58 -08:00
dependabot[bot] 2a5410adcb
build(deps): bump actions/download-artifact from 4.1.0 to 4.1.1 (#2636)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](f44cd7b40b...6b208ae046)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-11 04:11:07 -08:00
dependabot[bot] efa54a230c
build(deps): bump rangemap from 1.3.0 to 1.4.0 (#2640)
Bumps [rangemap](https://github.com/jeffparsons/rangemap) from 1.3.0 to 1.4.0.
- [Changelog](https://github.com/jeffparsons/rangemap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jeffparsons/rangemap/commits)

---
updated-dependencies:
- dependency-name: rangemap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-11 04:10:53 -08:00
dependabot[bot] 520d01c45a
build(deps): bump futures from 0.3.28 to 0.3.30 (#2639)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.28 to 0.3.30.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.28...0.3.30)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-11 04:10:33 -08:00
dependabot[bot] 9b5b203e3d
build(deps): bump pin-project from 1.0.12 to 1.1.3 (#2638)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.0.12 to 1.1.3.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.0.12...v1.1.3)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-11 04:10:14 -08:00
dependabot[bot] 254382f8fb
build(deps): bump memchr from 2.6.4 to 2.7.1 (#2637)
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.6.4 to 2.7.1.
- [Commits](https://github.com/BurntSushi/memchr/compare/2.6.4...2.7.1)

---
updated-dependencies:
- dependency-name: memchr
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-11 04:10:01 -08:00
dependabot[bot] 3aaea4b34b
build(deps): bump trust-dns-resolver from 0.22.0 to 0.23.2 (#2631)
* build(deps): bump trust-dns-resolver from 0.22.0 to 0.23.2

Bumps [trust-dns-resolver](https://github.com/bluejekyll/trust-dns) from 0.22.0 to 0.23.2.
- [Release notes](https://github.com/bluejekyll/trust-dns/releases)
- [Changelog](https://github.com/hickory-dns/hickory-dns/blob/v0.23.2/CHANGELOG.md)
- [Commits](https://github.com/bluejekyll/trust-dns/compare/v0.22.0...v0.23.2)

---
updated-dependencies:
- dependency-name: trust-dns-resolver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix api

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-01-11 04:09:52 -08:00
dependabot[bot] ce17c33e6a
build(deps): bump rcgen from 0.11.3 to 0.12.0 (#2635)
Bumps [rcgen](https://github.com/rustls/rcgen) from 0.11.3 to 0.12.0.
- [Commits](https://github.com/rustls/rcgen/compare/v0.11.3...v0.12.0)

---
updated-dependencies:
- dependency-name: rcgen
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-10 18:55:24 -08:00
dependabot[bot] 981ff59588
build(deps): bump boring-sys from 3.0.4 to 3.1.0 (#2633)
Bumps [boring-sys](https://github.com/cloudflare/boring) from 3.0.4 to 3.1.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v3.0.4...v3.1.0)

---
updated-dependencies:
- dependency-name: boring-sys
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-10 18:55:01 -08:00
dependabot[bot] 1fef0701b4
build(deps): bump tokio-stream from 0.1.12 to 0.1.14 (#2632)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.12 to 0.1.14.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.12...tokio-stream-0.1.14)

---
updated-dependencies:
- dependency-name: tokio-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-10 18:54:49 -08:00
dependabot[bot] 9eea4739d9
build(deps): bump unicode-bidi from 0.3.11 to 0.3.14 (#2630)
Bumps [unicode-bidi](https://github.com/servo/unicode-bidi) from 0.3.11 to 0.3.14.
- [Release notes](https://github.com/servo/unicode-bidi/releases)
- [Commits](https://github.com/servo/unicode-bidi/compare/v0.3.11...v0.3.14)

---
updated-dependencies:
- dependency-name: unicode-bidi
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-08 06:32:21 -08:00
dependabot[bot] 1b7c15eb09
build(deps): bump slab from 0.4.8 to 0.4.9 (#2629)
Bumps [slab](https://github.com/tokio-rs/slab) from 0.4.8 to 0.4.9.
- [Release notes](https://github.com/tokio-rs/slab/releases)
- [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/slab/compare/v0.4.8...v0.4.9)

---
updated-dependencies:
- dependency-name: slab
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-08 06:06:43 -08:00
dependabot[bot] 97819a2fde
build(deps): bump tracing from 0.1.37 to 0.1.40 (#2628)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.37 to 0.1.40.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.37...tracing-0.1.40)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-08 06:06:28 -08:00
dependabot[bot] 7506e5f079
build(deps): bump tokio from 1.34.0 to 1.35.1 (#2627)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.34.0 to 1.35.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.34.0...tokio-1.35.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-08 05:42:57 -08:00
Oliver Gould 97bb771190
identity: Update metrics to follow OpenMetrics best practices (#2617)
In preparation to add SPIRE integration, this change extracts the identity
certificate metrics from the control plane client, moving them into the
linkerd-identity crate, as an implementation of Credentials trait (which is
updated to include an expiry value). The app::identity module is updated to
instrument the credentials store with metrics.

A `identity_cert_refresh_timestamp_seconds` metric is added to report the time
when the identity certificate was last updated.

**Backwards-incompatible changes**: `identity_cert_refresh_count` is renamed to
`identity_cert_refreshes_total` to follow OpenMetrics best practices, where
counters must end with `_total`.

I've searched GitHub, and the only external references to this metric are in our
documentation (which will have to be updated).

---

    # HELP identity_cert_expiration_timestamp_seconds Time when the this proxy's current mTLS identity certificate will expire (in seconds since the UNIX epoch).
    # TYPE identity_cert_expiration_timestamp_seconds gauge
    # UNIT identity_cert_expiration_timestamp_seconds seconds
    identity_cert_expiration_timestamp_seconds 1704500155.0
    # HELP identity_cert_refresh_timestamp_seconds Time when the this proxy's current mTLS identity certificate were last updated.
    # TYPE identity_cert_refresh_timestamp_seconds gauge
    # UNIT identity_cert_refresh_timestamp_seconds seconds
    identity_cert_refresh_timestamp_seconds 1704413735.7489427
    # HELP identity_cert_refreshes The total number of times this proxy's mTLS identity certificate has been refreshed by the Identity provider..
    # TYPE identity_cert_refreshes counter
    identity_cert_refreshes_total{result="ok"} 1
    identity_cert_refreshes_total{result="error"} 0
2024-01-05 09:05:17 -08:00
dependabot[bot] 43d015e185
build(deps): bump ryu from 1.0.13 to 1.0.16 (#2623)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.13 to 1.0.16.
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.13...1.0.16)

---
updated-dependencies:
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-05 07:39:41 -08:00
dependabot[bot] 0a7d57d030
build(deps): bump tempfile from 3.5.0 to 3.6.0 (#2621)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.5.0 to 3.6.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.5.0...v3.6.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-05 07:39:31 -08:00
dependabot[bot] 7e581e93ba
build(deps): bump libfuzzer-sys from 0.4.6 to 0.4.7 (#2620)
Bumps [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer) from 0.4.6 to 0.4.7.
- [Changelog](https://github.com/rust-fuzz/libfuzzer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/libfuzzer/compare/0.4.6...0.4.7)

---
updated-dependencies:
- dependency-name: libfuzzer-sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-05 07:39:17 -08:00
dependabot[bot] ed6cbc61e6
build(deps): bump socket2 from 0.4.9 to 0.5.5 (#2622)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.4.9 to 0.5.5.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/compare/v0.4.9...v0.5.5)

---
updated-dependencies:
- dependency-name: socket2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-05 07:39:01 -08:00
dependabot[bot] f8ac9235a5
build(deps): bump anyhow from 1.0.76 to 1.0.79 (#2619)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.76 to 1.0.79.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.76...1.0.79)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-05 07:38:43 -08:00
dependabot[bot] e790de33d6
build(deps): bump pem from 3.0.2 to 3.0.3 (#2615)
Bumps [pem](https://github.com/jcreekmore/pem-rs) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/jcreekmore/pem-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jcreekmore/pem-rs/compare/v3.0.2...v3.0.3)

---
updated-dependencies:
- dependency-name: pem
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-04 08:23:39 -08:00
dependabot[bot] 1aecc1e23a
build(deps): bump io-lifetimes from 1.0.10 to 1.0.11 (#2616)
Bumps [io-lifetimes](https://github.com/sunfishcode/io-lifetimes) from 1.0.10 to 1.0.11.
- [Commits](https://github.com/sunfishcode/io-lifetimes/compare/v1.0.10...v1.0.11)

---
updated-dependencies:
- dependency-name: io-lifetimes
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-04 08:23:20 -08:00
dependabot[bot] 5dea62825d
build(deps): bump scopeguard from 1.1.0 to 1.2.0 (#2614)
Bumps [scopeguard](https://github.com/bluss/scopeguard) from 1.1.0 to 1.2.0.
- [Commits](https://github.com/bluss/scopeguard/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: scopeguard
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-04 08:23:06 -08:00
dependabot[bot] 9b15342c33
build(deps): bump cc from 1.0.79 to 1.0.83 (#2613)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.79 to 1.0.83.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.79...1.0.83)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-04 08:22:49 -08:00
dependabot[bot] f9f2717b6e
build(deps): bump ahash from 0.8.6 to 0.8.7 (#2612)
Bumps [ahash](https://github.com/tkaitchuck/ahash) from 0.8.6 to 0.8.7.
- [Release notes](https://github.com/tkaitchuck/ahash/releases)
- [Commits](https://github.com/tkaitchuck/ahash/commits)

---
updated-dependencies:
- dependency-name: ahash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-04 08:22:32 -08:00
dependabot[bot] 81cbb58171
build(deps): bump proc-macro2 from 1.0.69 to 1.0.74 (#2610)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.69 to 1.0.74.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.69...1.0.74)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-03 10:50:57 -08:00
dependabot[bot] e9b46f8108
build(deps): bump axum from 0.6.11 to 0.6.20 (#2609)
Bumps [axum](https://github.com/tokio-rs/axum) from 0.6.11 to 0.6.20.
- [Release notes](https://github.com/tokio-rs/axum/releases)
- [Changelog](https://github.com/tokio-rs/axum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/axum/compare/axum-v0.6.11...axum-v0.6.20)

---
updated-dependencies:
- dependency-name: axum
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-03 10:03:59 -08:00
dependabot[bot] f1e3b67819
build(deps): bump deranged from 0.3.10 to 0.3.11 (#2608)
Bumps [deranged](https://github.com/jhpratt/deranged) from 0.3.10 to 0.3.11.
- [Commits](https://github.com/jhpratt/deranged/commits/v0.3.11)

---
updated-dependencies:
- dependency-name: deranged
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-03 10:03:52 -08:00
dependabot[bot] 53eade0a6a
build(deps): bump tokio-boring from 3.0.4 to 3.1.0 (#2607)
Bumps [tokio-boring](https://github.com/cloudflare/boring) from 3.0.4 to 3.1.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/RELEASE_NOTES)
- [Commits](https://github.com/cloudflare/boring/compare/v3.0.4...v3.1.0)

---
updated-dependencies:
- dependency-name: tokio-boring
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-03 10:03:38 -08:00
dependabot[bot] 81e080a61b
build(deps): bump serde from 1.0.185 to 1.0.193 (#2606)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.185 to 1.0.193.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.185...v1.0.193)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-03 10:03:18 -08:00
Oliver Gould 79ca4dad1c
tracing: Ensure that INFO-level spans are preserved (#2611)
There's a foot-gun when instrumenting asynchronous code with:

    .instrument(tracing::debug_span!(...))

When the debug-level span is not enabled, the code will NOT be
instrumented with INFO-level parent spans. To preserve the parent spans,
we must use:

    .instrument(tracing::debug_span!(...).or_current())

This change updates the proxy's uses of debug_span and trace_span to
ensure that the current span info is preserved. This should improve
diagnostic logging.
2024-01-03 10:03:02 -08:00
Oliver Gould 5096bc88d8
deps: h2 v0.3.22 (#2605) 2024-01-02 18:15:25 -08:00
dependabot[bot] 68a9533a78
build(deps): bump actions/download-artifact from 3.0.2 to 4.1.0 (#2569)
* build(deps): bump actions/upload-artifact from 3.1.3 to 4.0.0

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](a8a3f3ad30...c7d193f32e)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump actions/download-artifact from 3.0.2 to 4.1.0

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3.0.2 to 4.1.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](9bc31d5ccc...f44cd7b40b)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2024-01-02 16:41:04 -08:00
Oliver Gould a69283bf7d
deps: Update to indexmap v2 (#2604) 2024-01-02 15:54:56 -08:00
Oliver Gould fdc88082bb
outbound: Update route backend metrics implementation (#2603)
To help setup for adding neew route metrics to the outbound proxy, this
change wires up route metrics registry infrastructure, porting the route
backend metrics implementation to use prometheus-client instead of
Linkerd's legacy metrics.
2024-01-02 15:54:41 -08:00
dependabot[bot] 0b5a0991bb
build(deps): bump prost-build from 0.12.1 to 0.12.3 (#2601)
Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.12.1 to 0.12.3.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.12.1...v0.12.3)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-02 15:41:59 -08:00
dependabot[bot] c48f51850e
build(deps): bump parking_lot_core from 0.9.5 to 0.9.9 (#2600)
Bumps [parking_lot_core](https://github.com/Amanieu/parking_lot) from 0.9.5 to 0.9.9.
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/core-0.9.5...core-0.9.9)

---
updated-dependencies:
- dependency-name: parking_lot_core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-02 15:41:41 -08:00
dependabot[bot] f07d9fbba5
build(deps): bump mime from 0.3.16 to 0.3.17 (#2599)
Bumps [mime](https://github.com/hyperium/mime) from 0.3.16 to 0.3.17.
- [Release notes](https://github.com/hyperium/mime/releases)
- [Commits](https://github.com/hyperium/mime/compare/v0.3.16...v0.3.17)

---
updated-dependencies:
- dependency-name: mime
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-02 15:41:28 -08:00
Oliver Gould 601d9e500a
cargo: Remove cyclic meshtls dependency (#2602)
The meshtls-rustls crate has an unneeded cyclic dependency onto meshtls.
This change removes this unused dependency.
2023-12-31 08:54:11 -08:00
Oliver Gould d6d3c18e56
balance: Move endpoint state gauge into balancer (#2598)
There are a few problems:

* Controller clients do not includer endpoint state metrics, as outbound stacks do.
* Controller client balancer metrics are not currently scoped with a balancer_ prefix.
* Endpoint state metrics should be an implementation detail of the balancer
  crate and not something that requires explicit instrumentation in the app.
* The balancer endpoint gauges module should be in an independent crate so it
  can be tested and reused independently.

This change removes a test of the outbound stack, since we can no longer query
the metrics registry in the same way.

The behavior has been manually confirmed:

    :; linkerd diagnostics proxy-metrics -n emojivoto deploy/web | grep _state
    control_identity_balancer_endpoints{endpoint_state="pending",addr="linkerd-identity-headless.linkerd.svc.cluster.local:8080"} 0
    control_identity_balancer_endpoints{endpoint_state="ready",addr="linkerd-identity-headless.linkerd.svc.cluster.local:8080"} 0
    control_destination_balancer_endpoints{endpoint_state="pending",addr="linkerd-dst-headless.linkerd.svc.cluster.local:8086"} 0
    control_destination_balancer_endpoints{endpoint_state="ready",addr="linkerd-dst-headless.linkerd.svc.cluster.local:8086"} 1
    control_policy_balancer_endpoints{endpoint_state="pending",addr="linkerd-policy.linkerd.svc.cluster.local:8090"} 0
    control_policy_balancer_endpoints{endpoint_state="ready",addr="linkerd-policy.linkerd.svc.cluster.local:8090"} 1
    outbound_http_balancer_endpoints{endpoint_state="pending",,backend_name="emoji-svc",backend_port="8080",backend_section_name=""} 0
    outbound_http_balancer_endpoints{endpoint_state="pending",...,backend_name="voting-svc",backend_port="8080",backend_section_name=""} 0
    outbound_http_balancer_endpoints{endpoint_state="ready",,backend_name="emoji-svc",backend_port="8080",backend_section_name=""} 1
    outbound_http_balancer_endpoints{endpoint_state="ready",...,backend_name="voting-svc",backend_port="8080",backend_section_name=""} 1
2023-12-29 07:55:01 -08:00
Oliver Gould 710454238e
pool: Decompose the pool and balancer crates (#2597)
* Pool::update_pool is replaced with a narrower API:
  * Avoids need for unneeded allocations;
  * Slightly modifies the p2c endpoint update metrics, removing the DNE
    label.
* Split up crates:
  * Move the pool trait to a minimal crate
  * Move the balancer's P2cPool types into a library crate
* Rename NewBalancePeakEwma to NewBalance
2023-12-28 18:06:27 -08:00
dependabot[bot] a6a87ffeba
build(deps): bump async-trait from 0.1.68 to 0.1.75 (#2595)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.68 to 0.1.75.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.68...0.1.75)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-28 07:12:55 -08:00
dependabot[bot] 6e0f654268
build(deps): bump itertools from 0.10.5 to 0.11.0 (#2594)
Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.10.5 to 0.11.0.
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/compare/v0.10.5...v0.11.0)

---
updated-dependencies:
- dependency-name: itertools
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-28 06:46:38 -08:00
Oliver Gould f191eac2f9
control: Avoid logging warnings on reconnect (#2593)
When stream limits cause a graceful stream end, we should not log a
warning.
2023-12-27 13:26:56 -08:00
Oliver Gould 6aaafcb8f3
pool: Fix tracing context on pool task (#2592) 2023-12-27 12:52:20 -08:00
Oliver Gould abd7e865eb
control: Enforce timeouts on response stream (#2587)
When connecting to a control plane API, the API server can return an
HTTP response long before it returns the first stream response. To bound
this time, we now enforce timeouts so that failures may result in attempting
to use an alternate controller instances.

All controller response streams now use a generic gRPC middleware with
initial, idle, and lifetime timeouts. When an initial timeout is
encountered, a DeadlineExceeded grpc status is synthesized. When the
other timeouts are encountered, the stream terminates gracefully.

These timeouts are configurable by the proxy injector. Timeouts are not
enabled without configuration:

* LINKERD2_PROXY_CONTROL_STREAM_INITIAL_TIMEOUT
* LINKERD2_PROXY_CONTROL_STREAM_IDLE_TIMEOUT
* LINKERD2_PROXY_CONTROL_STREAM_LIFETIME

Each of these parameters is optional.
2023-12-27 09:53:04 -08:00
dependabot[bot] 821e371bfc
build(deps): bump symbolic-demangle from 12.6.0 to 12.8.0 (#2591)
Bumps [symbolic-demangle](https://github.com/getsentry/symbolic) from 12.6.0 to 12.8.0.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.6.0...12.8.0)

---
updated-dependencies:
- dependency-name: symbolic-demangle
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-27 09:26:35 -08:00
dependabot[bot] 919e59a09c
build(deps): bump foreign-types-macros from 0.2.2 to 0.2.3 (#2590)
Bumps [foreign-types-macros](https://github.com/sfackler/foreign-types) from 0.2.2 to 0.2.3.
- [Release notes](https://github.com/sfackler/foreign-types/releases)
- [Commits](https://github.com/sfackler/foreign-types/compare/foreign-types-macros-v0.2.2...foreign-types-macros-v0.2.3)

---
updated-dependencies:
- dependency-name: foreign-types-macros
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-27 09:26:21 -08:00
dependabot[bot] 693b46a015
build(deps): bump gimli from 0.28.0 to 0.28.1 (#2588)
Bumps [gimli](https://github.com/gimli-rs/gimli) from 0.28.0 to 0.28.1.
- [Changelog](https://github.com/gimli-rs/gimli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/gimli/compare/0.28.0...0.28.1)

---
updated-dependencies:
- dependency-name: gimli
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-27 09:20:36 -08:00
dependabot[bot] f8e2e18f8a
build(deps): bump symbolic-common from 12.6.0 to 12.8.0 (#2584)
Bumps [symbolic-common](https://github.com/getsentry/symbolic) from 12.6.0 to 12.8.0.
- [Release notes](https://github.com/getsentry/symbolic/releases)
- [Changelog](https://github.com/getsentry/symbolic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/symbolic/compare/12.6.0...12.8.0)

---
updated-dependencies:
- dependency-name: symbolic-common
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-26 21:48:42 -08:00
dependabot[bot] 92aa45e22a
build(deps): bump anyhow from 1.0.69 to 1.0.76 (#2583)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.69 to 1.0.76.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.69...1.0.76)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-26 21:48:32 -08:00
dependabot[bot] e18dbfc622
build(deps): bump jemallocator from 0.5.0 to 0.5.4 (#2581)
Bumps [jemallocator](https://github.com/tikv/jemallocator) from 0.5.0 to 0.5.4.
- [Release notes](https://github.com/tikv/jemallocator/releases)
- [Changelog](https://github.com/tikv/jemallocator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tikv/jemallocator/compare/0.5.0...0.5.4)

---
updated-dependencies:
- dependency-name: jemallocator
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-26 21:48:04 -08:00
dependabot[bot] 0eefcb547a
build(deps): bump ahash from 0.8.5 to 0.8.6 (#2582)
Bumps [ahash](https://github.com/tkaitchuck/ahash) from 0.8.5 to 0.8.6.
- [Release notes](https://github.com/tkaitchuck/ahash/releases)
- [Commits](https://github.com/tkaitchuck/ahash/commits)

---
updated-dependencies:
- dependency-name: ahash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-26 21:47:46 -08:00
dependabot[bot] 4707bc6a9b
build(deps): bump tj-actions/changed-files from 40.2.3 to 41.0.1 (#2586)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 40.2.3 to 41.0.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](56284d8081...716b1e1304)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-26 21:47:29 -08:00
dependabot[bot] 97e9f7e7f1
build(deps): bump data-encoding from 2.3.3 to 2.5.0 (#2579)
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.3.3 to 2.5.0.
- [Commits](https://github.com/ia0/data-encoding/commits)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-20 06:23:53 -08:00
dependabot[bot] dd67a8ca35
build(deps): bump arbitrary from 1.2.3 to 1.3.2 (#2578)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.2.3 to 1.3.2.
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.2.3...v1.3.2)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-20 06:23:41 -08:00
dependabot[bot] 3ca4f084dd
build(deps): bump memchr from 2.5.0 to 2.6.4 (#2577)
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.5.0 to 2.6.4.
- [Commits](https://github.com/BurntSushi/memchr/compare/2.5.0...2.6.4)

---
updated-dependencies:
- dependency-name: memchr
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-20 06:23:29 -08:00
dependabot[bot] 8ed42bcd2e
build(deps): bump semver from 1.0.17 to 1.0.20 (#2576)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.17 to 1.0.20.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.17...1.0.20)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-20 06:23:18 -08:00
dependabot[bot] e2bb2101e1
build(deps): bump tj-actions/changed-files from 40.2.2 to 40.2.3 (#2570)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 40.2.2 to 40.2.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](9454999946...56284d8081)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-19 18:51:53 -08:00
dependabot[bot] 14da17aac9
build(deps): bump try-lock from 0.2.4 to 0.2.5 (#2571)
Bumps [try-lock](https://github.com/seanmonstar/try-lock) from 0.2.4 to 0.2.5.
- [Commits](https://github.com/seanmonstar/try-lock/compare/v0.2.4...v0.2.5)

---
updated-dependencies:
- dependency-name: try-lock
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-19 18:51:21 -08:00
dependabot[bot] 6c7ef271ea
build(deps): bump tokio-util from 0.7.7 to 0.7.10 (#2572)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.7 to 0.7.10.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/commits)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-19 18:51:08 -08:00
dependabot[bot] fe0d6c7340
build(deps): bump nom from 7.1.0 to 7.1.3 (#2574)
Bumps [nom](https://github.com/Geal/nom) from 7.1.0 to 7.1.3.
- [Changelog](https://github.com/rust-bakery/nom/blob/7.1.3/CHANGELOG.md)
- [Commits](https://github.com/Geal/nom/compare/7.1.0...7.1.3)

---
updated-dependencies:
- dependency-name: nom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-19 18:50:39 -08:00
Oliver Gould 0792f56485
balance: Restore INFO logging of balancer changes (#2575)
8222d6e86 removed the discovery module that logged changes.

The balancer's logging is changed to increase endpoint updates to INFO.
2023-12-19 18:47:25 -08:00
dependabot[bot] 19fce505b9
build(deps): bump deranged from 0.3.9 to 0.3.10 (#2564)
Bumps [deranged](https://github.com/jhpratt/deranged) from 0.3.9 to 0.3.10.
- [Commits](https://github.com/jhpratt/deranged/commits)

---
updated-dependencies:
- dependency-name: deranged
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-18 07:59:37 -08:00
dependabot[bot] 896df80ae1
build(deps): bump matchit from 0.7.0 to 0.7.3 (#2563)
Bumps [matchit](https://github.com/ibraheemdev/matchit) from 0.7.0 to 0.7.3.
- [Release notes](https://github.com/ibraheemdev/matchit/releases)
- [Commits](https://github.com/ibraheemdev/matchit/compare/v0.7.0...v0.7.3)

---
updated-dependencies:
- dependency-name: matchit
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-18 07:59:10 -08:00
dependabot[bot] 903fe2a9ec
build(deps): bump async-stream from 0.3.4 to 0.3.5 (#2562)
Bumps [async-stream](https://github.com/tokio-rs/async-stream) from 0.3.4 to 0.3.5.
- [Release notes](https://github.com/tokio-rs/async-stream/releases)
- [Commits](https://github.com/tokio-rs/async-stream/compare/v0.3.4...v0.3.5)

---
updated-dependencies:
- dependency-name: async-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-18 07:58:54 -08:00
dependabot[bot] 09c020a393
build(deps): bump zerocopy from 0.7.3 to 0.7.31 (#2560)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.3 to 0.7.31.
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.7.3...v0.7.31)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-18 07:58:31 -08:00
Zahari Dichev bb6c0352cd
identity: prepare Credentials API for Spire support (#2553)
This PR prepares the Credentials API for integration with SPIRE more easily.

Notable changes include:
- the gen_certificate_signing_request is no longer part of the concrete
  identity service client rather than the Credentials trait
- CSR, service account tokens, etc are supposed to be a concern of the
  concrete LinkedIn identity client implementation, so the `Store` and
  `Receiver` do not know of them
- the fn `set_certificate`` method now takes the cert key as well, because
  in alternative certificate provider implementations (e.g. Spire), we cannot
  assume that the certificate key is known upfront or is static.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2023-12-15 15:36:17 +02:00
Oliver Gould 8222d6e860
Enable PoolQueue balancer (#2559)
This change culminates recent work to restructure the balancer to use a
PoolQueue so that balancer changes may occur independently of request
processing. This replaces independent discovery buffering so that the
balancer task is responsible for polling discovery streams without
independent buffering. Requests are buffered and processed as soon as
the pool has available backends. Fail-fast circuit breaking is enforced
on the balancer's queue so that requests can't get stuck in a queue
indefinitely.

In general, the new balancer is instrumented directly with metrics, and
the relevant metric name prefix and labelset is provided by the stack.
In addition to detailed queue metrics including request (in-queue)
latency histograms, but also failfast states, discovery updates counts,
and balancer endpoint pool sizes.
2023-12-13 15:15:57 -08:00
Oliver Gould a34957576e
balance: Instrument metrics in pool balancer (#2558)
This change updates the PoolQueue and P2CPool with metrics that track
endpoint update and queue runtime metrics, including:

* The count of queue gate state changes (as driven by failfast).
* The timestamp of the last gate state change (i.e. so it's possible to
  determine how long a balancer has been in failfast).
* The number of requests that enter the queue.
* The distribution of in-queue latencies.
* The current length of the queue.
* The number of endpoint updates by update type.
* The current number of endpoints.
2023-12-12 19:53:43 -08:00
dependabot[bot] b4cdafbb14
build(deps): bump tj-actions/changed-files from 40.2.1 to 40.2.2 (#2556)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 40.2.1 to 40.2.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](1c938490c8...9454999946)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-12 13:13:13 -08:00
Oliver Gould c053aa8965
vscode: Move workspace settings to devcontainer (#2557)
Adds .vscode/settings.json to .gitignore.

This allows per-user workspace configurations.
2023-12-12 13:10:33 -08:00
Oliver Gould 0ee7e5c56f
app: Setup prom registry for use in balancers (#2555)
This change updates application initialization to instantiate a
prometheus registry that is then passed (as a reference) to the proxy
stack builders to register metrics during initialization. The registry
is then passed to the admin server's metrics export in an Arc.

This approach is preferable to using a RwLock, as it eliminates a
potential deadlock condition.

No functional changes.
2023-12-08 14:42:32 -08:00
Oliver Gould b0643d5950
outbound: Move HTTP balancer into its own module (#2554)
No functional changes. Setup for changes to come.
2023-12-08 13:59:36 -08:00
Zahari Dichev c5b1f63f2e
linkerd_identity: split `linkerd_identity::Id` into DNS and URI variants (#2538)
Our `linkerd_identity::Id` type was capable of representing
only DNS-like SANs. In order to be able to perform SAN
verification on SPIFFE identities, in this PR we turn this
type into an enum that can represent either a DNS or URI ids.

Additionally the logic in `meshtls::verifier`` has been updated
to consider URI SANs as well.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2023-12-08 19:22:23 +02:00
Oliver Gould 31b2aea620
metrics: Export process metrics using prometheus-client (#2552)
* Move process metrics from linkerd-app-core to linkerd-metrics (with a
  feature flag).
* Add a linkered_metrics::prom::registry helper that automatically
  configures process metrics when the feature is enabled.
* Add a process_threads metric to help surface when the multi-core proxy
  runtime is in use.
* All of this uses prometheus-client to set up for future reusability.

Before

    # HELP process_start_time_seconds Time that the process started (in seconds since the UNIX epoch)
    # TYPE process_start_time_seconds gauge
    process_start_time_seconds 1701551542
    # HELP process_uptime_seconds_total Total time since the process started (in seconds)
    # TYPE process_uptime_seconds_total counter
    process_uptime_seconds_total 1782.137
    # HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
    # TYPE process_cpu_seconds_total counter
    process_cpu_seconds_total 0.72
    # HELP process_virtual_memory_bytes Virtual memory size in bytes.
    # TYPE process_virtual_memory_bytes gauge
    process_virtual_memory_bytes 111042560
    # HELP process_resident_memory_bytes Resident memory size in bytes.
    # TYPE process_resident_memory_bytes gauge
    process_resident_memory_bytes 33910784
    # HELP process_open_fds Number of open file descriptors.
    # TYPE process_open_fds gauge
    process_open_fds 28
    # HELP process_max_fds Maximum number of open file descriptors.
    # TYPE process_max_fds gauge
    process_max_fds 1048576
    # HELP proxy_build_info Proxy build info
    # TYPE proxy_build_info gauge
    proxy_build_info{version="2.213.0",git_sha="9f7e7ac",profile="release",date="2023-11-16T23:24:26Z",vendor="linkerd"} 1

After

    # HELP proxy_build_info Proxy build info.
    # TYPE proxy_build_info gauge
    proxy_build_info{date="2023-12-06T02:15:30Z",git_sha="9c29322d5",profile="release",vendor="code@ver-sea",version="0.0.0-dev.9c29322d5"} 1
    # HELP process_start_time_seconds Time that the process started (in seconds since the UNIX epoch).
    # TYPE process_start_time_seconds gauge
    # UNIT process_start_time_seconds seconds
    process_start_time_seconds 1701829321.4647413
    # HELP process_uptime_seconds Total time since the process started (in seconds)
    # TYPE process_uptime_seconds counter
    # UNIT process_uptime_seconds seconds
    process_uptime_seconds_total 51.986633717
    # HELP process_cpu_seconds Total user and system CPU time spent in seconds
    # TYPE process_cpu_seconds counter
    # UNIT process_cpu_seconds seconds
    process_cpu_seconds_total 0.04
    # HELP process_virtual_memory_bytes Virtual memory size in bytes
    # TYPE process_virtual_memory_bytes gauge
    # UNIT process_virtual_memory_bytes bytes
    process_virtual_memory_bytes 108208128
    # HELP process_resident_memory_bytes Resident memory size in bytes
    # TYPE process_resident_memory_bytes gauge
    # UNIT process_resident_memory_bytes bytes
    process_resident_memory_bytes 27471872
    # HELP process_open_fds Number of open file descriptors
    # TYPE process_open_fds gauge
    process_open_fds 21
    # HELP process_max_fds Maximum number of open file descriptors
    # TYPE process_max_fds gauge
    process_max_fds 1048576
    # HELP process_threads Number of OS threads in the process.
    # TYPE process_threads gauge
    process_threads 2
    # EOF
2023-12-05 19:12:53 -08:00
Oliver Gould f72cc7f9cc
balance: Add a p2c Pool implementation (#2541)
Following #2540, which introduces a new PoolQueue and Pool interface,
this change introduces a P2cPool implementation that replaces
Tower's p2c balancer (using the same underlying ReadyCache and p2c
implementations).

This balancer implementation is currently unused. It will be integrated
in a follow-up change.
2023-12-05 15:43:10 -08:00
Oliver Gould f920e6c12c
metrics: Use prometheus-client for proxy_build_info (#2551)
In preparation to add metrics that report float values, and ultimately in
service of replacing Linkerd's custom metrics implementation with an
upstream library, this change adds an integration with the
prometheus-client crate.

This is accomplished by leaving the existing types and traits in place
and adding a FmtMetrics implementation for the prometheus-client
Registry type, minimizing the change needed to support this new library.

New metrics can use the upstream registry and metric types. The
proxy_build_info metric has been ported to use the new API to validate
the new library. Now, the metrics dump ends with:

    # HELP proxy_build_info Proxy build info.
    # TYPE proxy_build_info gauge
    proxy_build_info{date="2023-12-05T19:52:40Z",git_sha="215c32d3f",profile="release",vendor="code@ver-sea",version="0.0.0-dev.215c32d3f"} 1
    # EOF
2023-12-05 15:15:25 -08:00
dependabot[bot] b12ff1d059
build(deps): bump tj-actions/changed-files from 40.2.0 to 40.2.1 (#2549)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 40.2.0 to 40.2.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](da093c1609...1c938490c8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-04 15:31:25 -08:00
Oliver Gould c329541956
deps: Update tokio, tonic, and prost (#2544)
* tokio 1.34
* tonic 0.10
* prost 0.12
* linkerd2-proxy-api 0.12 (linkerd/linkerd2-proxy-api#269)
2023-12-04 12:42:58 -08:00
Oliver Gould 351bf01b63
ci: Skip ARM builds during non-release CI (#2547)
We run release builds during CI to ensure that compilation doesn't
regress. We exercise this against all platforms. This chews up CI
resources.

This change updates the release workflow to skip ARM builds during
non-release CI.
2023-12-03 12:36:29 -08:00
Oliver Gould f9b67fc19a
ci: Cancel prior runs (#2546)
Prevent actions from backing up on repeated pushes.
2023-12-03 12:24:51 -08:00
Oliver Gould 2fe5e7a880
ci: Fixup codecov config (#2545) 2023-12-03 11:53:02 -08:00
Oliver Gould 1b2039d4ce
Add the PoolQueue middleware (#2540)
Tower's Buffer middleware is used to make a Service shareable across
tasks. Within Linkerd, we've augmented the Buffer with failfast
behavior, etc, as a Queue middleware. This queue plays a vital role in
dispatching requests to load balancers, ensuring that load is shed when
a balancer has no available endpoints.

The tower Balancer additionally holds a Stream of endpoint updates that
are processed as the balancer is driven to readiness. Crucially, this
means that updates to the balancer can only occur while requests are
being processed. We cannot eagerly drop defunct endpoints, nor can we
eagerly connect to new endpoints. We have observed situations where
long-lived, mostly-idle balancers can buffer discovery updates
indefinitely, bloating memory and even forcing backpressure to the
control plane.

To correct this behavior, this change introduces the PoolQueue
middleware. The PoolQueue is based on the tower's Buffer, but instead of
composing over an inner Service, it composes over an inner Pool.

Pool is a new interface that provides an additional interface to update
the pool's members and to drive all pending endpoints in the pool to be
ready (decoupling the semantics of Service::poll_ready and
Pool::poll_pool). Pool implementations will typically hold a
ReadyCache of inner endpoints (as the tower balancer does). This change,
however, does not include the concrete implementation of a Pool to be
replace the balancer. A p2c pool will be introduced in a followup
change.

This change has the added benefit of simplifying the endpoint discovery
pipeline. We currently process Updates (including an array of endpoints)
from the discovery API and convert that into a stream of discrete
endpoint updates for the balancer, requiring redundant caching. The Pool
interface processes Updates directly, so there is no need for the extra
translation.
2023-12-02 11:48:21 -08:00
Oliver Gould e0ffbc7c00
metrics: Remove unused features (#2542)
The aging linkerd-metrics crate includes some features that are unused
in our codebase: a histogram Summary; and a 'Scopes' type. Neither of
these are used in our codebase.

This change removes these defunct features so they need not be
considered as we make future improvements/replacements to our metrics
infrastructure.
2023-12-01 11:13:36 -08:00
Oliver Gould b07db77614
outbound: Move queues into the concrete stack (#2539)
In preparation to change the load balancer's queuing behavior, this
change moves the concrete stack's queue into the inner balancer and
forward stacks.
2023-11-30 11:44:34 -08:00
dependabot[bot] 1dd72a6920
build(deps): bump tj-actions/changed-files from 40.1.1 to 40.2.0 (#2536)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 40.1.1 to 40.2.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](25ef3926d1...da093c1609)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-28 12:25:06 -08:00
dependabot[bot] e8c191576c
build(deps): bump DavidAnson/markdownlint-cli2-action (#2537)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 13.0.0 to 14.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](ed4dec634f...455b6612a7)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-28 12:24:55 -08:00
Zahari Dichev 374e75f342
meshtls: Consolidate TLS ID verification (#2534)
The rustls and boring meshtls crates each implement SAN verification
independently. In preparation to support URI SAN verification, this change
introduces a new meshtls-verifier crate that uses x509-parser to implement
DNS SAN verification.

To support this, we have disabled the TLS backends' default certificate
verification mechanisms.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2023-11-28 08:11:36 -08:00
Oliver Gould 9c56e91cc9
test: Cleanup outbound_balancer_waits_for_ready_endpoint (#2529)
The outbound_balancer_waits_for_ready_endpoint test doesn't reliably
demonstrate the behavior it is trying to test: we setup two identical
endpoints, so our tests can't be sure that the response is coming from
the correct endpoint.

This change updates this test to provide backends that return varied
responses so we can ensure the desired behavior.

This change also improves the test's logging. The discovery test
infrastructure is updated to allow overriding the logical service
address. This aids disambiguating addresses in logs.
2023-11-20 13:57:33 -08:00
Oliver Gould 8ce2df4fae
test: Improve error reporting in gauges_endpoints (#2530)
And add a reminder to remove some parts of this test in the future.
2023-11-17 16:27:08 -08:00
Oliver Gould 5abc63fae2
test: Cleanup consecutive_failures_accrue (#2531)
This change improves error handling and logging for hte outbound
consecutive_failures_accrue test, especially imposing timeouts on
requests that can hang when the functionality is broken.
2023-11-17 16:26:15 -08:00
Oliver Gould 6f8c616606
ci: Enable coverage on main and all PRs (#2533)
In preparation for some larger changes to the proxy, this change enables
codecov on main and on PRs that change code. We need to run coverage on
main so that PRs have a meaningful comparison point.

We use the styfle/cancel-workflow-action to prevent multiple runs
from clogging up Actions Runners.

We can adapt this configuration if it's too annoying, but it seems low
risk to add for now.
2023-11-17 16:24:11 -08:00
Oliver Gould 8da64218ba
ci: Fetch tarpaulin binary instead of compiling (#2532)
This should shave 2+ minutes off of coverage tests.
2023-11-17 16:33:31 -05:00
Oliver Gould bc625144c3
stack-metrics: Implement Clone for TrackService (#2524)
The stack metrics module cannot currently wrap services that need to
implement Clone.

To fix this, we introduce an extra Arc that ensures we only count
drops when all clones have been dropped.
2023-11-17 12:36:57 -08:00
Oliver Gould b99c5955c1
ci: Compute coverage over all tests (#2528)
Our coverage workflow only measures the coverage of integration tests,
ignoring all of our unit tests and component tests. This is caused by
our inclusion of tests that don't run in CI in the default integration
test configuration.

In order to run coverage over all tests, we disable two flakey tests
from the default integration test configuration. The tests that are
flakey only in coverage are simply enabled. Instead, we'll tolerate test
failures in our coverage reports. We'll trust that our tests are
actually executed successfully outside of the coverage run.
2023-11-17 11:59:43 -08:00
Oliver Gould e969ae88e8
stack: Add BoxCloneSyncService (#2523)
tower::util::BoxCloneService doesn't implement Sync, which is necessary
when we may want to share these services across threads (which is
entirely the point of making a service cloneable, really).

This change replicates BoxCloneService as BoxCloneSyncService and
updates many of Linkerd's stacks to return this new type.
2023-11-17 11:19:40 -08:00
Oliver Gould b786b5006e
Add a .codecov.yml (#2527)
Configure codecov to skip the PR status checks for now.
2023-11-17 05:52:16 -08:00
Oliver Gould 9f7e7ac2f5
admin: Add optional /debug/pprof/profile endpoint (#2516)
This change introduces a new, optional /debug/pprof/profile.pb.gz
endpoint to the proxy's admin server. This endpoint is feature-gated
and, initially, it will not be included in release builds. It replicates
Go's /debug/pprof/profile, but it always returns gzipped protobuf (i.e.
as can be read by pprof pprofutils).

When the feature is enabled, profiling requests are only permitted over
the loopback interface.

The development Dockerfile is updated to prevent stripping debug
symbols when pprof is enabled so that the pprof data has useful names.

Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2023-11-16 13:09:43 -08:00
Oliver Gould bf5cb67b0a
Update DEFAULT_OUTBOUND_TCP_QUEUE_CAPACITY to 10K (#2521)
DEFAULT_OUTBOUND_TCP_QUEUE_CAPACITY was incorrectly set to 10 so that
bursts of TCP connections could see EOF errors.

This change increases the value to match the HTTP queue capacity.
2023-11-16 12:07:23 -08:00
Zahari Dichev 2ad49d6f23
meshtls: Extract TLS id verification out of TLS backends (#2507)
To further prepare for the introduction of Spiffe IDs in the proxy,
this change disables TLS SAN verification in both rustls and boring
TLS implementations. The need to do that stems from the fact that
these implementations only look at DNS SANs and cannot handle
certificates that use URI SANs.

To enable adding this functionality, TLS Id verification is not extracted
as a separate step, after the TLS handshake completes. To do that in
boring, we need to verify_hostname. For rustls, we need to pass a
custom ServerCertVerifier that skips name validation. In our case, the
verifier is nearly identical to ustls::client::WebPkiVerifier, except for
the step where DNS SANs are validated based on the ServerName.

This change is non functional, but it sets the stage to have more control
over TLS Id verification.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2023-11-14 12:28:03 -08:00
Oliver Gould 8542ec7c79
dev: Disable nightly install for now (#2515)
The devcontainer nightly install leaves cargo in a bad state due to
permissions issues in the docker setup. Let's just disable nightly for
now (it can always be added at runtime).
2023-11-14 12:18:58 -08:00
Loong Dai 048542ae77
dev: optimize image build (#2452)
- `on-create` uses much time to download and install without cache, any changes about devcontainer will make it run again. If we put those into Dockerfile, we will have cache and speed up this process.
- Add proxy settings for development behind a proxy server

Signed-off-by: Loong <loong.dai@intel.com>
Signed-off-by: Loong <loong.dai@intel.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2023-11-13 15:43:19 -08:00
Oliver Gould e62cc28ffe
Use heap indirection to manage type signatures (#2510)
The proxy's release debug symbols are currently >6GB. It doesn't appear
to even be possible to build the proxy with debuginfo=2, as we overflow
u32::MAX and violate the restrictions of DWARF32.

To fix this, we more aggressively use dynamic dispatch via the new
`Stack::arc_new_box` helpers. This helps reduce our largest type
signatures from >700KB to ~50KB. We'll want to follow up with changes
that monitor the size of these signatures to prevent regressions.

This allows us to minimize many type assertions, etc.

There are no functional changes in this PR.
2023-11-10 18:51:26 -08:00
Oliver Gould 005e25c41b
ci: Fix fuzzer listing (#2513)
The fuzzer tests in CI were broken in CI by a change to the file-listing
action. This change fixes CI for fuzzer changes.

It does not actually fix the fuzzer suites.
2023-11-10 14:00:29 -08:00
Oliver Gould dd64109090
ci: Turn off debuginfo in ci test builds (#2512)
We don't consume debuginfo from CI builds, so we can disable debug
symbols in these builds.

The coverage test is also fixed to address a linking issue with the
version of cargo-tarpaulin we have cached. The coverage workflow has all
debuginfo enabled since it's used for coverage generation.
2023-11-10 13:11:43 -08:00
Oliver Gould fefdd12d53
ci: Fix check-each workflow (#2511)
At some point, the check-each workflow broke (likely due to change in
the action dependency we use to enumerate changed files).

This change fixes the script used to convert changed files to crate
names so that the check-each workflows runs properly.
2023-11-10 14:59:33 -05:00
dependabot[bot] 8edaf591c4
build(deps): bump actions/checkout from 4.1.0 to 4.1.1 (#2485)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](8ade135a41...b4ffde65f4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-10 11:59:12 -08:00
dependabot[bot] b38d2f41e7
build(deps): bump tj-actions/changed-files from 39.2.0 to 40.1.1 (#2508)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 39.2.0 to 40.1.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](8238a41032...25ef3926d1)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-10 10:45:03 -08:00
Oliver Gould 089e994b50
Use reference-counted strings in dns::Name (#2509)
Before b4ff7d23e, our identity::Name type used a reference-counted
dns::Name. This change restores this reference-counting behavior, moving
it into the lower-level `dns::Name` type.

This generally helps to minimize allocation overhead for proxied
traffic.
2023-11-08 12:07:56 -08:00
Oliver Gould b4ff7d23eb
Separate tls::ServerName and identity::Id types (#2506)
* Remove the Credentials::dns_name API

The Credentials trait needlessly exposes a dns::Name value. We plan to
decouple certificates from DNS names (though DNS names will remain in
use for SNI negotiation).

This change narrows the trait interface so we can begin to make those
changes.

* Separate tls::ServerName and identity::Id types

To prepare for the introduction of SPIFFE identities into Linkerd's
identity system, this change we need to begin to separate the
representation of an endpoint's SNI value and its "identity" for the
purposes of authentication.

This change distinguishes:

* Authenticated `Id` values (i.e. as described by a certificate)
* Server Name Indication (SNI) values used for TLS negotation

The `tls::ServerName` type to represent the SNI use case. The
`tls::ClientTls` type now has distinct `ServerName` and `ServerId`
configurations to support distinct behavior for sending an SNI value to
the server server

The `id::Name` type is genralized as `id::Id`. In the future, this type
will be used to encompass both DNS-like and SPIFFE identities. This type
is specifically used for peer authentication (and not for SNI
negotiation).

The `id::LocalId` type is removed. It was only being used as a means for
the local server name configuration.

Co-authored-by: <zahari@buoyant.io>
2023-11-07 16:04:40 -08:00
Oliver Gould f4f606555e
dev: v42 (#2501)
* Update dev to v42
* Update Rust to 1.73.0
  * Address new clippy & check warnings
* Update debian from bullseye to bookworm
* Update K3d to v5.6.0
  * Update CI from k3s 1.26 to 1.28
* Fix `just linkerd-install` to specify k8s context
* Update markdownlint-cli2 to 0.10.0
* Update Dockerfile to use a debian base image for easier debugging
* Update proc-macro2 to fix rust-nightly build failures
2023-11-03 13:22:10 -07:00
Oliver Gould 26b718c55d
Include server address in server error logs (#2500)
When the proxy's TCP server encounters an error (usually due to one of
the connections failing, we log the error and the client's address. The
server's address was omitted because it varies based on context that is
not known in this module: in some cases it's the actual server address
on the socket, but when proxying a connection it may be determined by
the value retrieved from the SO_ORIGINAL_DST socket option.

To fix this, the server now requires that connection metadata be able to
materialize an 'AddrPair' parameter that describes a client-server
connection. The TCP listener impls are updated to satisfy this based on
the appropriate metadata; and the TCP server consumes this type to
include both client and server addresses in the relevant logs/contexts.
2023-11-03 10:30:25 -07:00
Oliver Gould cbf226e8e5
inbound: Fix gRPC response classification (#2496)
ecaaf39 changed the proxy's behavior with regard to creating [default
response classifiers][default]: the defaults used to support detecting
gRPC response (regardless of the request properties).

To fix this, we modify the metrics module that uses responses
classifiers to *require* them without inferring defaults. This enforces
the intended usage pattern so that we do not silently and implicitly
fall back to the default behavior.

This change also updates the `NewClassify` module that inserts the
response classifier request extension so that overrides are supported.
We then can install a default classifier early in request processing and
override it only if specified by a route configuration.

To support this change, the http-metrics crate is updated to support
querying response_total metrics without stringifying everything.

[default]: ecaaf39b46 (diff-372e8a8a57b1fad5d94f37d2f77fdc7a45bcf708782475424b75d671f99ea1a0L97-L103)
2023-11-01 17:41:19 -07:00
Oliver Gould 920b2ddfba
Log a warning when the controller clients receive an error (#2499)
The controller client includes a recovery/backoff module that causes
resolutions to be retried when an unexpected error is encountered.
These events are only logged at debugging and trace log levels.

This change updates the destination and policy controller recovery
modules to log unexpected errors as warnings.
2023-11-01 16:18:48 -07:00
Oliver Gould 6999daca59
gate: Fix readiness deadlock (#2493)
The gate middleware controls a service's readiness so that it can exert
back-pressure. This is used, for instance, by the circuit breaker module
so that an endpoint can go into an unavailable state after the breaker
has been tripped and be marked available again as it recovers.

This change fixes a bug in that recovery scenario: when the gate is in a
Limited state (i.e. when the circuit breaker puts an endpoint into
Probation to test its availability), and caller (i.e. the balancer) is
waiting for the endpoint to leave probation, the balancer may never be
notified that the endpoint has left its probation state.

To fix this, we update the gate controller to definitively close its
inner Semaphore when transitioning out of a limited state -- dropping
the semaphore in the sender doesn't close it when it's being held by a
receiver.

This issue is somewhat masked by the balancer's polling behavior, where
endpoint states are only advanced as requests are processed. It seems
likely, however, that this scenario could be encountered in the wild
when circuit breaking is enabled on a service.
2023-11-01 12:30:38 -07:00
Oliver Gould bbc4e23c1b
Bump ahash to v0.8.5 (#2498)
* Bump ahash to v0.8.5

* Allow BSD-2-Clause
2023-11-01 12:29:47 -07:00
Oliver Gould 4f68425ccf
gate: Detect disconnected inner services in readiness (#2491)
If `Gate` becomes ready, it assumes the inner service remains ready
indefinitely.

Load balancers rely on lazy and redudant readiness checking to avoid
disconnected endpoints.

This change fixes the Gate to ensure that the inner service is always
polled whenever the gate is polled.
2023-10-25 12:55:31 -07:00
Eliza Weisman 986d45895c
chore: change `rust-toolchain` file to toml format (#2487)
* chore: change `rust-toolchain` file to toml format

The `rust-toolchain` file containing only a Rust version number is
deprecated in favor of a TOML-formatted `rust-toolchain.toml`. Using the
old format seems to make Dependabot unhappy --- it complains that:

```
only rust-toolchain files formatted as TOML are supported, the non-TOML
format was deprecated by Rust
```

Therefore, this branch changes the toolchain file in this repo to the
TOML format. This required updating the CI workflows that check that
the toolchain matches to use a new regex.
2023-10-23 10:26:19 -07:00
Oliver Gould 6cf2e9f3e1
balance: Fail the discovery stream on queue backup (#2486)
328826caa updated the balancer's discovery channel to prevent backing up
into the discovery stream by dropping the discovery stream. This results
in balancers becoming permanently stale (should they ever be used
again).

This change modifies the discovery stream so that these errors are fatal
for the balancer. These errors are recorded distinctly by the error counters.

To fix this, we replace the `DiscoverNew` module with a
`discover::NewServices` module that wraps the buffering layer. The
buffer now only holds target metadata, and services are only built as
the entry is dequeued from channel.

This has the (positive) side-effect that the proxy's stack_create_total
metric will not be incremented before the balancer actually uses an
endpoint stack. Previously, this metric would be incremented for all
queued endpoint updates.

We also now log at INFO the address of all additions and removals from a
balancer. This should dramatically improve diagnostics in stale endpoint
situations.
2023-10-19 11:44:42 -07:00
Eliza Weisman 777435b404
build(deps): update `rustix` to v0.36.16/v0.37.7 (#2488)
This commit updates the proxy's dependency on `rustix` in order to
resolve a potential memory exhaustion issue when using the
`rustix::fs::Dir` iterator with the `linux-raw` backend. This issue is
described in GHSA-c827-hfw6-qwvm.

We currently depend on both `rustix` v0.36 and v0.37 as transitive deps,
so this branch updates the v0.36 dep from v0.36.14 to v0.36.16, and the
v0.37 dependency from v0.37.4 to v0.37.7.

Unfortunately, we weren't able to get Dependabot to bump these deps for
us, because it no longer supports the legacy (non-TOML) `rust-toolchain`
file (see #2487 for details). Therefore, we have to do this bump
manually.
2023-10-19 09:37:53 -07:00
Oliver Gould 328826caa7
balance: Log and fail stuck discovery streams. (#2484)
In 6d2abbc, we changed how outbound proxies process discovery updates.
The prior implementation used a watchdog timeout to bound the amount of
time an update stream could be full. With that change, when an update
channel fills, the backpressure can extend to the destination
controller's gRPC response stream.

To detect and avoid this harmful (and useless) backpressure, this change
modifies the balancer's discovery processing stream to exit when the
balancer has 1000 unprocessed discovery updates. A sufficiently scary
warning is logged.
2023-10-17 11:01:19 -07:00
Alex Leong 54979bc5d5
Render grpc_status metric label as number (#2480)
Fixes https://github.com/linkerd/linkerd2/issues/11449

The `grpc_status` metric label is rendered as a long form, human readable string value in the proxy metrics.  For example:

```
response_total{direction="outbound", [...], classification="failure",grpc_status="Unknown error",error=""} 1
```

This is because of the Display impl for Code.  We explicitly convert to an i32 so this renders as a number instead:

```
response_total{direction="outbound", [...] ,classification="failure",grpc_status="2",error=""} 1
```

Signed-off-by: Alex Leong <alex@buoyant.io>
2023-10-03 17:17:28 -07:00
dependabot[bot] 45b324f7b4
build(deps): bump actions/upload-artifact from 3.1.2 to 3.1.3 (#2479)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](0b7f8abb15...a8a3f3ad30)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-28 13:57:26 -07:00
dependabot[bot] 597549d66e
build(deps): bump DavidAnson/markdownlint-cli2-action (#2476)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 12.0.0 to 13.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](3aaa38e446...ed4dec634f)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-28 13:57:12 -07:00
dependabot[bot] ad95981117
build(deps): bump EmbarkStudios/cargo-deny-action from 1.5.4 to 1.5.5 (#2478)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.5.4 to 1.5.5.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](a50c7d5f86...1e59595bed)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-28 13:56:40 -07:00
dependabot[bot] 768ff0b497
build(deps): bump tj-actions/changed-files from 39.0.2 to 39.2.0 (#2475)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 39.0.2 to 39.2.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](6ee9cdc581...8238a41032)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-28 13:56:19 -07:00
dependabot[bot] 0dafe33e9a
build(deps): bump actions/checkout from 3.5.0 to 4.1.0 (#2474)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.0 to 4.1.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](8f4b7f8486...8ade135a41)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-27 14:53:30 -07:00
Eliza Weisman e92f325bb6
meshtls: log errors parsing client certs (#2467)
Currently, if errors occur while parsing a client identity from a TLS
certificate, the `client_identity` function in `linkerd-meshtls-rustls`
will simply discard the error and return `None`. This means that we
cannot easily determine *why* a connection has no client identity ---
there may have been no client cert, but we may also have failed to parse
a client cert that was present.

In order to make debugging these issues a little easier, I've changed
this function to log any errors returned by `rustls-webpki` while
parsing client certs.
2023-09-27 11:24:32 -07:00
dependabot[bot] 16a75fe1c7
build(deps): bump EmbarkStudios/cargo-deny-action from 1.5.0 to 1.5.4 (#2448)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 1.5.0 to 1.5.4.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](8af37f5d0c...a50c7d5f86)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-27 11:21:39 -07:00
dependabot[bot] d44158cebb
build(deps): bump tj-actions/changed-files from 36.2.1 to 39.0.2 (#2468)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 36.2.1 to 39.0.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](c9124514c3...6ee9cdc581)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-27 11:08:06 -07:00
dependabot[bot] 218c9f6835
build(deps): bump DavidAnson/markdownlint-cli2-action (#2460)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 9.0.0 to 12.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](5b7c9f74fe...3aaa38e446)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-27 11:06:42 -07:00
Eliza Weisman 85db2fcb69
meshtls: update to `rustls` v0.21.7 (#2472)
Currently, the proxy [depends on an outdated version of `rustls`][1],
v0.20.8. The `rustls` dependency is via our dependency on `tokio-rustls`
v0.23.4; we don't have a direct `rustls` dependency, in order to ensure
that the version of `rustls` is always the same version as used by
`tokio-rustls`. `rustls` also has a dependency on `webpki`, and v0.20.x
of `rustls` uses the original `webpki` crate, rather than the
`rustls-webpki` crate. So, unfortunately, because we have a transitive
dep on `webpki` via `rustls`, PR linkerd/linkerd2-proxy#2465 did not
remove _all_ `webpki` deps from our dependency tree, only the direct
dependency.

This branch updates to `rustls` v0.21.x, which depends on
`rustls-webpki` rather than `webpki`, removing the `webpki` dependency.
This is accomplished by updating `tokio-rustls` to v0.24.x, implicitly
updating the transitive `rustls` dep. In order to update to the
semver-incompatible version of `rustls`, it was necessary to modify our
code in order to track some breaking API changes. I've also added a
`cargo-deny` ban for `webpki` to our `deny.toml`, to ensure that we
always use the actively-maintained `rustls-webpki` crate rather than
`webpki` classic.

Since peer certificate validation is performed through `rustls` rather
than through the direct `rustls-webpki` dependency, this should
hopefully resolve issues with issuer certs that contain name constraints
--- these were not fixed by linkerd/linkerd2-proxy#2465, because the
failure with certs containing name constraints occurred inside of the
*`webpki` version depended on by `rustls`*, rather than inside of the
proxy's direct dep. See [this comment][2] for details.

In addition, it was necessary to update `rustls-webpki` to v0.101.6,
since v0.101.5 was yanked due to an accidental API breaking change.

<details>

<summary>Verifying that we no longer depend on `webpki`:</summary>

Before:

```console
$ cargo tree -p webpki -i
webpki v0.22.1
├── rustls v0.20.8
│   └── tokio-rustls v0.23.4
│       ├── linkerd-app-integration v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/integration)
│       └── linkerd-meshtls-rustls v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/meshtls/rustls)
│           ├── linkerd-app-inbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/inbound)
│           │   ├── linkerd-app v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app)
│           │   │   ├── linkerd-app-integration v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/integration)
│           │   │   └── linkerd2-proxy v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd2-proxy)
│           │   ├── linkerd-app-admin v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/admin)
│           │   │   └── linkerd-app v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app) (*)
│           │   │   [dev-dependencies]
│           │   │   └── linkerd-app-integration v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/integration)
│           │   └── linkerd-app-gateway v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/gateway)
│           │       └── linkerd-app v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app) (*)
│           │   [dev-dependencies]
│           │   └── linkerd-app-gateway v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/gateway) (*)
│           ├── linkerd-app-outbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/outbound)
│           │   ├── linkerd-app v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app) (*)
│           │   └── linkerd-app-gateway v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/gateway) (*)
│           │   [dev-dependencies]
│           │   └── linkerd-app-gateway v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/gateway) (*)
│           └── linkerd-meshtls v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/meshtls)
│               ├── linkerd-app-core v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/core)
│               │   ├── linkerd-app v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app) (*)
│               │   ├── linkerd-app-admin v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/admin) (*)
│               │   ├── linkerd-app-gateway v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/gateway) (*)
│               │   ├── linkerd-app-inbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/inbound) (*)
│               │   ├── linkerd-app-integration v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/integration)
│               │   ├── linkerd-app-outbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/outbound) (*)
│               │   └── linkerd-app-test v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/test)
│               │       ├── linkerd-app-inbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/inbound) (*)
│               │       ├── linkerd-app-integration v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/integration)
│               │       └── linkerd-app-outbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/outbound) (*)
│               │       [dev-dependencies]
│               │       ├── linkerd-app-gateway v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/gateway) (*)
│               │       ├── linkerd-app-inbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/inbound) (*)
│               │       └── linkerd-app-outbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/outbound) (*)
│               ├── linkerd-app-inbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/inbound) (*)
│               ├── linkerd-proxy-tap v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/proxy/tap)
│               │   └── linkerd-app-core v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/core) (*)
│               └── linkerd2-proxy v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd2-proxy)
│               [dev-dependencies]
│               ├── linkerd-app-inbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/inbound) (*)
│               ├── linkerd-app-integration v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/integration)
│               └── linkerd-app-outbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/outbound) (*)
│           [dev-dependencies]
│           ├── linkerd-app-inbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/inbound) (*)
│           └── linkerd-app-outbound v0.1.0 (/home/eliza/Code/linkerd2-proxy/linkerd/app/outbound) (*)
└── tokio-rustls v0.23.4 (*)
```

After:

```console
$ cargo tree -p webpki -i
error: package ID specification `webpki` did not match any packages
```

</details>

[1]:
    8afc72258b/Cargo.lock (L2450-L2460C2)
[2]:
    https://github.com/linkerd/linkerd2/issues/9299#issuecomment-1730094953
2023-09-21 14:17:49 -07:00
Pranoy Kumar Kundu 8afc72258b
Replace `procinfo` with `procfs` (#2433)
This PR will replace [procinfo](https://crates.io/crates/procinfo) crate
which is not maintained for over 5 years with
[procfs](https://crates.io/crates/procfs).

Signed-off-by: Pranoy Kumar Kundu <pranoy1998k@gmail.com>

Fixes linkerd/linkerd2/issues/10819
2023-09-20 12:47:30 -07:00
Eliza Weisman c10c4b7ac7
meshtls: use published `rustls-webpki` v0.101.5 (#2470)
Now that [v0.101.5 of `rustls-webpki`][1] has been [published][2], we
can now depend on the crate from crates.io. This allows us to remove the
Git dependency on the branch preparing that release to be published,
which allows us to remove the allowance for Git dependencies in the
`cargo-deny` config.

[1]: https://github.com/rustls/webpki/releases/tag/v%2F0.101.5
[2]: https://crates.io/crates/rustls-webpki/0.101.5
2023-09-18 11:13:11 -07:00
Eliza Weisman cd04d7a801
use `rustls-webpki` instead of `linkerd/webpki` (#2465)
This commit changes the `linkerd-meshtls-rustls` crate to use the
upstream `rustls-webpki` crate, maintained by Rustls, rather than our
fork of `briansmith/webpki` from GitHub. Since `rustls-webpki` includes
the change which was the initial motivation for the `linkerd/webpki`
fork (rustls/webpki#42), we can now depend on upstream.

Currently, we must take a Git dependency on `rustls-webpki`, since a
release including a fix for an issue (rustls/webpki#167) which prevents
`rustls-webpki` from parsing our test certificates has not yet been
published. Once v0.101.5 of `rustls-webpki` is published (PR see
rustls/webpki#170), we can remove the Git dep. For now, I've updated
`cargo-deny` to allow the Git dependency.
2023-09-11 11:03:52 -07:00
Eliza Weisman 426120a6e9
build(deps): use published version of `boring` (#2454)
The `linkerd-meshtls-boring` crate currently uses a Git dependency on
`boring` and `tokio-boring`. This is because, when this crate was
initially introduced, the proxy required unreleased changes to these
crates. Now, however, upstream has published all the changes we depended
on (this happened ages ago), and we can depend on these libraries from
crates.io.

This branch removes the Git deps and updates to v3.0.0 of
`boring`/`tokio-boring`. I've also changed the `cargo-deny` settings to
no longer allow Git deps on these crates, as we no longer depend on them
from Git.
2023-08-25 10:27:48 -07:00
Eliza Weisman 9fa90df4ec
Increase HTTP request queue capacity (#2449)
In 2.13, the default inbound and outbound HTTP request queue capacity
decreased from 10,000 requests to 100 requests (in PR #2078). This
change results in proxies shedding load much more aggressively while
under high load to a single destination service, resulting in increased
error rates in comparison to 2.12 (see linkerd/linkerd2#11055 for
details).

This commit changes the default HTTP request queue capacities for the
inbound and outbound proxies back to 10,000 requests, the way they were
in 2.12 and earlier. In manual load testing I've verified that
increasing the queue capacity results in a substantial decrease in 503
Service Unavailable errors emitted by the proxy: with a queue capacity
of 100 requests, the load test described [here] observed a failure rate
of 51.51% of requests, while with a queue capacity of 10,000 requests,
the same load test observes no failures.

Note that I did not modify the TCP connection queue capacities, or the
control plane request queue capacity. These were previously configured
by the same variable before #2078, but were split out into separate vars
in that change. I don't think the queue capacity limits for TCP
connection establishment or for control plane requests are currently
resulting in instability the way the decreased request queue capacity
is, so I decided to make a more focused change to just the HTTP request
queues for the proxies.

[here]: https://github.com/linkerd/linkerd2/issues/11055#issuecomment-1650957357
2023-08-03 10:19:39 -07:00
Alex Leong 32245601bb
Add suport for response header filter (#2439)
Add support for the response header modifier, which was added to the proxy API in https://github.com/linkerd/linkerd2-proxy-api/pull/251

Signed-off-by: Alex Leong <alex@buoyant.io>
2023-07-19 14:47:03 -07:00
Oliver Gould d6172c594c
Emit distinguishable version info (#2432)
The proxy currently emits very little useful version information.

This change updates the proxy to support new build-time environment
variables that are used to report version information:

* LINKERD2_PROXY_BUILD_TIME
* LINKERD2_PROXY_VENDOR
* LINKERD2_PROXY_VERSION

Additionally, several pre-existing Git-oriented metadata have been
removed, as they were generally redundant or uninformative. The Rustc
version has also been removed (since it has no real user-facing value
and can be easily determined by the version/tag).
2023-06-23 14:21:28 -07:00
Eliza Weisman f0277cc776
outbound: handle `NotFound` client policies in ingress mode (#2431)
When the outbound proxy resolves an outbound policy from the policy
controller's `OutboundPolicies` API, the policy controller may return an
error with the `grpc-status` code `NotFound` in order to indicate that
the destination is not a ClusterIP service. When this occurs, the proxy
will fall back to either using a ServiceProfile, if the ServiceProfile
contains non-trivial configuration, or synthesizing a default client
policy from the ServiceProfile.

However, when the outbound proxy is configured to run in ingress mode,
the fallback behavior does not occur. Instead, the ingress mode proxy
treats any error returned by the policy controller's `OutboundPolicies`
API as fatal. This means that when an ingress controller performs its
own load-balancing and opens a connection to a pod IP directly, the
ingress mode proxy will fail any requests on that connection. This is a
bug, and is the cause of the issues described in linkerd/linkerd2#10908.

This branch fixes this by changing the ingress mode proxy to handle
`NotFound` errors returned by the policy controller. I've added similar
logic for synthesizing default policies from a discovered
ServiceProfile, or using the profile if it's non-trivial. Unfortunately,
we can't just reuse the existing `Outbound::resolver` method, as ingress
discovery may be performed for an original destination address *or* for
a DNS name, and it's necessary to construct fallback policies in either
case. Instead, I've added a new function with similar behavior that's
ingress-specific.

I've manually tested this change against the repro steps[^1] described
in linkerd/linkerd2#10908, and verified that the proxy 503s on 2.13.4,
and that it once again routes correctly after applying this change.

Fixes linkerd/linkerd2#10908.

[^1]: As described in the first comment, using Contour and podinfo.
2023-06-20 12:14:37 -07:00
Eliza Weisman 9f0a2698f4
outbound: add backend and route metadata to errors (#2428)
PRs #2418 and #2419 add per-route and per-backend request timeouts
configured by the `OutboundPolicies` API to the `MatchedRoute` and
`MatchedBackend` layers in the outbound `ClientPolicy` stack,
respectively. This means that — unlike in the `ServiceProfile` stack —
two separate request timeouts can be configured in `ClientPolicy`
stacks. However, because both the `MatchedRoute` and `MatchedBackend`
layers are in the HTTP logical stack, the errors emitted by both
timeouts will have a `LogicalError` as their most specific error
metadata, meaning that the log messages and `l5d-proxy-error` headers
recorded for these timeouts do not indicate whether the timeout that
failed the request was the route request timeout or the backend request
timeout.

In order to ensure this information is recorded and exposed to the user,
this branch adds two new error wrapper types, one of which enriches an
error with a `RouteRef`'s metadata, and one of which enriches an error
with a `BackendRef`'s metadata. The `MatchedRoute` stack now wraps all
errors with `RouteRef` metadata, and the `MatchedBackend` stack wraps
errors with `BackendRef` metadata. This way, when the route timeout
fails a request, the error will include the route metadata, while when
the backend request timeout fails a request, the error will include both
the route and backend metadata.

Adding these new error wrappers also has the additional side benefit of
adding this metadata to errors returned by filters, allowing users to
distinguish between errors emitted by a filter on a route rule and
errors emitted by a per-backend filter. Also, any other errors emitted
lower in the stack for requests that are handled by a client policy
stack will now also include this metadata, which seems generally useful.

Example errors, taken from a proxy unit test:

backend request:
```
logical service logical.test.svc.cluster.local:666: route httproute.test.timeout-route: backend service.test.test-svc:666: HTTP response timeout after 1s
```
route request:
```
logical service logical.test.svc.cluster.local:666: route httproute.test.timeout-route: HTTP response timeout after 2s
```
2023-06-15 12:26:31 -07:00
Eliza Weisman 966306bc84
outbound: implement `OutboundPolicies` backend request timeouts (#2419)
Depends on #2418 

The latest proxy-api release, v0.10.0, adds fields to the
`OutboundPolicies` API for configuring HTTP request timeouts, based on
the proposed changes to HTTPRoute in kubernetes-sigs/gateway-api#1997.
PR #2418 updates the proxy to depend on the new proxy-api release, and
implements the `Rule.request_timeout` field added to the API. However,
that branch does *not* add a timeout for the
`RouteBackend.request_timeout` field. This branch changes the proxy to
apply the backend request timeout when configured by the policy
controller.

This branch implements `RouteBackend.request_timeout` by adding an
additional timeout layer in the `MatchedBackend` stack. This applies the
per-backend timeout once a backend is selected for a route. I've also
added stack tests for the interaction between the request and backend
request timeouts.

Note that once retries are added to client policy stacks, it may be
necessary to move the backend request timeout to ensure it occurs
"below" retries, depending on where the retry middleware ends up being
located in the proxy stack.
2023-06-15 10:48:49 -07:00
dependabot[bot] 1a6225feb7
build(deps): bump tj-actions/changed-files from 35.7.7 to 36.2.1 (#2427)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.7.7 to 36.2.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](db5dd7c176...c9124514c3)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-15 09:33:42 -07:00
Eliza Weisman a512ea658d
outbound: implement `OutboundPolicies` route request timeouts (#2418)
The latest proxy-api release, v0.10.0, adds fields to the
`OutboundPolicies` API for configuring HTTP request timeouts, based on
the proposed changes to HTTPRoute in kubernetes-sigs/gateway-api#1997.

This branch updates the proxy-api dependency to v0.10.0 and adds the new
timeout configuration fields to the proxy's internal client policy
types. In addition, this branch adds a timeout middleware to the HTTP
client policy stack, so that the timeout described by the
`Rule.request_timeout` field is now applied.

Implementing the `RouteBackend.request_timeout` field with semantics as
close as possible to those described in GEP-1742 will be somewhat more
complex, and will be added in a separate PR.
2023-06-14 11:36:40 -07:00
Eliza Weisman 864a5dbc97
recover: remove unused `mut` (#2425) 2023-06-12 11:45:35 -07:00
Alex Leong 704ef31a28
Classify grpc requests properly in the http classifier (#2410)
The gRPC protocol always sets the HTTP response status code to 200 and instead communicates failures in a grpc-status header sent in a TRAILERS frame. Linkerd uses the HTTP response status code to determine if a response is successful, and therefore will consider all gRPC responses successful regardless of their gRPC status code. This means that functionality such as retries and circuit breaking do not function correctly with gRPC traffic.

We update the Http classifier to look for the presence of a `Content-Type: application/grpc` header and use Grpc response classification when it is set.

Signed-off-by: Alex Leong <alex@buoyant.io>
2023-05-22 13:40:37 -07:00
Matei David 3933feb587
Skip h2 upgrade when target is local (#2407)
In the most recent stable versions, pods cannot communicate with themselves when using a ClusterIP. While direct (pod-to-pod) connections are never sent through the proxy and are skipped at the iptables level, connections to a logical service still pass through the proxy. When the chosen endpoint is the same as the source of the traffic, TLS and H2 upgrades should be skipped.

Every endpoint receives an h2 upgrade hint in its metadata. When looking into the problem, I noticed that client settings do not take into account that the target may be local. When deciding what client settings to use, we do not upgrade the connection when the hint is "unknown" (gatewayed connections) or "opaque". This change does a similar thing by using H1 settings when the protocol is H1 and the target IP is also part of the inbound IPs passed to the proxy.

Fixes linkerd/linkerd2#10816

Signed-off-by: Matei David <matei@buoyant.io>
2023-05-10 10:01:03 +01:00
Willi Schönborn 5366652c2b
Propagate correct span ID via W3C context (#2408)
The W3C context propagation uses the wrong span ID right now. That
causes all spans emitted by linkerd-proxy to be siblings rather than
children of their original parent.

This only applies to W3C as far as I can tell, because the B3
propagation uses the span ID correctly.

Signed-off-by: Willi Schönborn <w.schoenborn@gmail.com>
2023-05-04 09:21:35 -07:00
Oliver Gould c30d39f73e
dev: Update to Rust v1.69.0 (#2402)
Update dev to v40
2023-04-25 15:56:34 -07:00
dependabot[bot] 2a32127d48
build(deps): bump async-trait from 0.1.66 to 0.1.68 (#2368)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.66 to 0.1.68.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.66...0.1.68)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2023-04-25 14:52:13 -07:00
dependabot[bot] fc3a1e860c
build(deps): bump futures from 0.3.26 to 0.3.28 (#2370)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.26 to 0.3.28.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.26...0.3.28)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-25 14:08:37 -07:00
Eliza Weisman 717fd22b23
chore: allow `syn` v1 and v2 to coexist peacefully (#2401)
The proc-macro ecosystem is in the middle of a migration from `syn` v1
to `syn` v2. Some crates (such as `tokio-macros`, `async-trait`,
`tracing-attributes`, etc) have been updated to v2, while others haven't
yet. This means that `cargo deny` will not currently permit us to update
some of those crates to versions that depend on `syn` v2, because they
will create a duplicate dependency.

Since `syn` is used by proc-macros (executed at compile time), duplicate
versions won't have an impact on the final binary size. Therefore, it's
fine to allow both v1 and v2 to coexist while the ecosystem is still
being gradually migrated to the new version.
2023-04-25 12:42:20 -07:00
dependabot[bot] aacd8c9bac
build(deps): bump io-lifetimes from 1.0.4 to 1.0.10 (#2379)
Bumps [io-lifetimes](https://github.com/sunfishcode/io-lifetimes) from 1.0.4 to 1.0.10.
- [Release notes](https://github.com/sunfishcode/io-lifetimes/releases)
- [Commits](https://github.com/sunfishcode/io-lifetimes/compare/1.0.4...v1.0.10)

---
updated-dependencies:
- dependency-name: io-lifetimes
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-25 09:58:41 -07:00
Eliza Weisman 181a20753a
outbound: synthesize client policies on `Unimplemented` (#2396)
If the policy controller is from a Linkerd version earlier than 2.13.x,
it will return the `Unimplemented` gRPC status code for requests to the
`OutboundPolicies` API. The proxy's outbound policy client will
currently retry this error code, rather than synthesizing a default
policy. Since 2.13.x proxies require an `OutboundPolicy` to be
discovered before handling outbound traffic, this means that 2.13.x
proxies cannot handle outbound connections when the control plane
is on an earlier version. Therefore, installing Linkerd 2.13 and then
downgrading to 2.12 can potentially break the data plane's ability to
route traffic.

In order to support downgrade scenarios, the proxy should also
synthesize a default policy when receiving an `Unimplemented` gRPC
status code from the policy controller. This branch changes the proxy to
do that. A warning is logged which indicates that the control plane
version is older than the proxy's.
2023-04-25 09:56:30 -07:00
Eliza Weisman ad4d5b64bb
inbound: determine default policies using the opaque ports env var (#2395)
The proxy injector populates an environment variable,
`LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION`, with a list
of all ports marked as opaque. Currently, however, _the proxy _does not
actually use this environment variable_. Instead, opaque ports are
discovered from the policy controller. The opaque ports environment
variable was used only when running in the "fixed" inbound policy mode,
where all inbound policies are determined from environment variables,
and no policy controller address is provided. This mode is no longer
supported, and the policy controller address is now required, so the
`LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION` environment
variable is not currently used to discover inbound opaque ports.

There are two issues with the current state of things. One is that
inbound policy discovery is _non-blocking_: when an inbound proxy
receives a connection on a port that it has not previously discovered a
policy for, it uses the default policy until it has successfully
discovered a policy for that port from the policy controller. This means
that the proxy may perform protocol detection on the first connection to
an opaque port. This isn't great, as it may result in a protocol
detection timeout error on a port that the user had previously marked as
opaque. It would be preferable for the proxy to read the environment
variable, and use it to determine whether the default policy for a port
is opaque, so that ports marked as opaque disable protocol detection
even before the "actual" policy is discovered.

The other issue with the
`LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION` environment
variable is that it is currently a list of _individual port numbers_,
while the proxy injector can accept annotations that specify _ranges_ of
opaque ports. This means that when a very large number of ports are
marked as opaque, the proxy manifest must contain a list of each
individual port number in those ranges, making it potentially quite
large. See linkerd/linkerd2#9803 for details on this issue.

This branch addresses both of these problems. The proxy is changed so
that it will once again read the
`LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION` environment
variable, and use it to determine which ports should have opaque
policies by default. The parsing of the environment variable is changed
to support specifying ports as a list of ranges, rather than a list of
individual port numbers. Along with a proxy-injector change, this would
resolve the manifest size issue described in linkerd/linkerd2#9803.

This is implemented by changing the `inbound::policy::Store` type to
also include a set of port ranges that are marked as opaque. When the
`Store` handles a `get_policy` call for a port that is not already in
the cache, it starts a control plane watch for that port just as it did
previously. However, when determining the initial _default_ value for
the policy, before the control plane discovery provides one, it checks
whether the port is in a range that is marked as opaque, and, if it is,
uses an opaque default policy instead.

This approach was chosen rather than pre-populating the `Store` with
policies for all opaque ports to better handle the case where very large
ranges are marked as opaque and are used infrequently. If the `Store`
was pre-populated with default policies for all such ports, it would
essentially behave as though all ports in
`LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION` were also in
`LINKERD2_PROXY_INBOUND_PORTS`, and the proxy would immediately start a
policy controller discovery watch for all opaque ports, which would be
kept open for the proxy's entire lifetime. In cases where the opaque
ports ranges include ~10,000s of ports, this causes significant
unnecessary load on the policy controller. Storing opaque port ranges
separately and using them to determine the default policy as needed
allows opaque port policies to be treated the same as non-default ports,
which are discovered as needed and can be evicted from the cache if they
are unused. If a port is in both
`LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION` *and*
`LINKERD2_PROXY_INBOUND_PORTS`, the proxy will start discovery eagerly
and retain the port in the cache forever, but the default policy will be
opaque.

I've also added a test for the behavior of opaque ports where the port's
policy has not been discovered from the policy controller. That test
fails on `main`, as the proxy attempts protocol detection, but passes on
this branch.

In addition, I changed the parsing of the `LINKERD2_PROXY_INBOUND_PORTS`
environment variable to also accept ranges, because it seemed like a
nice thing to do while I was here. :)
2023-04-25 09:56:07 -07:00
Eliza Weisman 15bebe4eeb
outbound: add missing `meta` field in test policy (#2400)
Looks like we accidentally merged PR #2375 without a CI build against
the latest state of `main`. In the meantime since #2375 was last built
on CI, PR #2374 added an additional metadata field to
`policy::HttpParams`, which the `HttpParams` constructed in the test
added from #2375 doesn't populate. Therefore, merging this PR broke the
build. Whoops!

This commit populates the `meta` field, fixing it.
2023-04-24 14:22:28 -07:00
Eliza Weisman 2a48e12e2b
outbound: test load balancer behavior with failure accrual (#2375)
This branch adds a new test for failure accrual in load balancers with
multiple endpoints. This test asserts that endpoints whose circuit
breakers have tripped will not be selected by a load balancer.
2023-04-24 13:34:25 -07:00
Eliza Weisman 423ffb0af8
set default `trust_dns` log level to `ERROR` (#2393)
Since upstream has yet to release a version with PR
bluejekyll/trust-dns#1881, this commit changes the proxy's default log
level to silence warnings from `trust_dns_proto` that are generally
spurious.

See linkerd/linkerd2#10123 for details.
2023-04-24 13:25:25 -07:00
Eliza Weisman 9d8607351a
outbound: determine protocol based on `OutboundPolicy` (#2397)
Currently, the outbound proxy determines whether or not to perform
protocol detection based on the presence of the `opaque_protocol` field
on the resolved `ServiceProfile` from the Destination controller.
However, the `OutboundPolicy` resolved from the policy controller also
contains a `proxy_protocol` field that indicates what protocol should be
used for this destination. While the proxy uses the HTTPRoutes from the
`OutboundPolicy`'s `proxy_protocol`, it does _not_ take into account the
`proxy_protocol` when determining whether or not to perform protocol
detection. This can result in the outbound proxy performing protocol
detection on connections to destinations that have been marked as
opaque.

This branch modifies the outbound proxy to use the `proxy_protocol` from
the `OutboundPolicy`, as well as the `opaque_protocol` field from the
`ServiceProfile`, when determining whether or not to perform protocol
detection. In addition, I've added an integration test, which fails before
making the changes on this branch.

Fixes linkerd/linkerd2#10745
2023-04-24 13:22:08 -07:00
Eliza Weisman 051e0e199d
build(deps): bump `h2` to v0.3.18 (#2394)
The DOS mitigation changes in `h2` v0.3.17 inadvertantly introduced a
potential panic (hyperium/h2#674). Version 0.3.18 fixes this, so we
should bump the proxy's dependency to avoid panics.
2023-04-18 14:51:25 -07:00
Eliza Weisman c7918cfb1f
outbound: handle `Opaque` protocol hints on endpoints (#2237)
Currently, when the outbound proxy makes a direct connection prefixed
with a `TransportHeader` in order to send HTTP traffic, it will always
send a `SessionProtocol` hint with the HTTP version as part of the
header. This instructs the inbound proxy to use that protocol, even if
the target port has a ServerPolicy that marks that port as opaque, which
can result in incorrect handling of that connection. See
linkerd/linkerd2#9888 for details.

In order to prevent this, linkerd/linkerd2-proxy-api#197 adds a new
`ProtocolHint` value to the protobuf endpoint metadata message. This
will allow the Destination controller to explicitly indicate to the
outbound proxy that a given endpoint is known to handle all connections
to a port as an opaque TCP stream, and that the proxy should not perform
a protocol upgrade or send a `SessionProtocol` in the transport header.
This branch updates the proxy to handle this new hint value, and adds
tests that the outbound proxy behaves as expected.

Along with linkerd/linkerd2#10301, this will fix linkerd/linkerd2#9888.

I opened a new PR for this change rather than attempting to rebase my
previous PR #2209, as it felt a bit easier to start with a new branch
and just make the changes that were still relevant. Therefore, this
closes #2209.
2023-04-13 14:09:01 -07:00
dependabot[bot] abab7fd783
build(deps): bump cmake from 0.1.49 to 0.1.50 (#2365)
Bumps [cmake](https://github.com/rust-lang/cmake-rs) from 0.1.49 to 0.1.50.
- [Release notes](https://github.com/rust-lang/cmake-rs/releases)
- [Commits](https://github.com/rust-lang/cmake-rs/compare/0.1.49...0.1.50)

---
updated-dependencies:
- dependency-name: cmake
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-13 10:39:32 -07:00
dependabot[bot] 67306bc7ba
build(deps): bump h2 from 0.3.16 to 0.3.17 (#2391)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.16 to 0.3.17.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.16...v0.3.17)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Closes  #2390
2023-04-13 10:22:28 -07:00
Oliver Gould 89f237be86
outbound: Export balancer endpoints gauges (#2385)
d6f20a6 added a new `outbound_http_balancer_endpoints` gauge, but
omitted it from metrics export. This change fixes this deficiency to
ensure that this metric is rendered.
2023-04-11 15:29:15 -07:00
Eliza Weisman 907e4bf11a
update `linkerd2-proxy-api` to v0.9.0 from crates.io (#2384)
This branch updates the dependency on `linkerd2-proxy-api` to use v0.9.0
from `crates.io` rather than via a Git dependency.
2023-04-10 10:39:04 -07:00
Oliver Gould d6f20a6519
outbound: Report HTTP balancer endpoint gauges (#2380)
It's not currently possible to know how many endpoints are in a
balancer. This change adds an `outbound_http_balancer_endpoints` gauge
that exposes the number of endpoints a balancer has by their current
readiness status.

Note that in the concrete stack we do not currently differentiate
between gRPC and HTTP backends, so all balancers are exposed under this
single metric.
2023-04-07 17:13:57 -07:00
Eliza Weisman cef2ba9fba
outbound: add `l5d-dst-canonical` to requests with ServiceProfiles (#2383)
PR #2250 removed the `l5d-dst-canonical` header from ServiceProfile
requests. This header is used by the inbound proxy for telemetry
purposes, so removing it and not putting it back broke ServiceProfile
route metrics. This commit adds a layer for setting this header to the
service profile route stack.

We can also add the header for non-ServiceProfile requests if that's
desirable...I'll have to look into whether it is. This commit should, at
least, fix the existing ServiceProfile route metrics.

Fixes #10521
2023-04-07 13:27:42 -07:00
Oliver Gould d9fde0a414
outbound: Report per-route-backend request count metrics (#2377)
When performing policy-based routing, proxies may dispatch requests
through per-route backend configurations. In order to illustrate how
routing rules apply and how backend distributions are being honored,
this change adds two new metrics:

* `outbound_http_route_backend_requests_total`; and
* `outbound_grpc_route_backend_requests_total`

Each of these metrics includes labels that identify a routes parent
(i.e. a Service), the route resource being used, and the backend
resource being used.

This implementation does NOT implement any form of metrics eviction for
these new metrics. This is tolerable for the short term as the
cardinality of services and routes is generally much less than the
cardinality of individual endpoints (where we do require
timeout/eviction for metrics).
2023-04-04 16:18:32 -07:00
Oliver Gould 7a811f6916
Revert "Merge branch 'ver/route-reqs-mtx'"
This reverts commit fdd2128ff6, reversing
changes made to 7859b9a3e5.
2023-04-04 21:43:34 +00:00
Oliver Gould fdd2128ff6
Merge branch 'ver/route-reqs-mtx' 2023-04-04 21:37:37 +00:00
Oliver Gould 7859b9a3e5
outbound: Configure balancers with service metadata (#2374)
The OutboundPolicies API includes resource references with its
responses. These references allow us to accurately identify an arbitrary
(Kubernetes style) resource by its group, kind, namespace, and name.

To support new metrics that include these resource coordinates as
labels, we need access to the parent and backend references from the
balancer stack.

This change makes the following changes to accommodate this:

1. We introduce `ParentRef`, `RouteRef`, `BackendRef`, and
   `EndpointRef` new-types to serve as explicit markers for
   different types of metadata we may encounter.
3. The profile stack is updated to parse out metadata from service names
   in the form <name>.<ns>.svc.*.
4. We also support discovering pod metadata from the endpoint labels
   `dst_pod` and `dst_namespace`.
5. When we can't infer any metadata from a profile response, we use an
   "unknown" metadata.
6. When using policy, we use control-plane provided metadata.

In practice, pod metadata won't be surfaced by the existing code path;
but we have a relatively simple path forward to using it.

This change splits the balancer stack into its own layer so it's
distinct from the rest of the concrete stack configuration.

There are only minor functional changes in this branch:

1. The `balance{addr=...}` tracing context is replace by
   `service{ns=..,name=...}` for clarity;
2. Errors returned from the balance stack are now rendered as:
   `Service {name}.{ns}: {error}`
2023-04-04 14:04:18 -07:00
Oliver Gould 4cced5846d
app: Rename Metrics types as InboundMetrics and OutboundMetrics (#2376)
This helps avoid a bug with rust-analyzer and is generally clearer.
2023-04-03 22:03:55 -07:00
Oliver Gould 9e8c1fc20b
Merge branch 'main' into ver/route-reqs-mtx 2023-04-04 00:36:36 +00:00
Oliver Gould 846ce1b524
outbound: Emit INFO-level logs on failure accrual changes (#2373)
There are no explicit indications of failure accrual related behavior.

This change adds INFO-level logs when a failure accrual breaker is
closed or reopened. These log messages are scoped within the
'endpoint' log context so that log lines include endpoint and balancer
addresses.

    INFO balance{addr=logical.test.svc.cluster.local:666}:endpoint{addr=192.0.2.41:666}:consecutive_failures: linkerd_app_outbound::http::breaker::consecutive_failures: Consecutive failure-accrual breaker closed
    INFO balance{addr=logical.test.svc.cluster.local:666}:endpoint{addr=192.0.2.41:666}:consecutive_failures: linkerd_app_outbound::http::breaker::consecutive_failures: Consecutive failure-accrual breaker reopened
2023-04-03 17:07:38 -07:00
Oliver Gould df78f2967c
outbound: Report per-route-backend request count metrics
When performing policy-based routing, proxies may dispatch requests
through per-route backend configurations. In order to illustrate how
routing rules apply and how backend distributions are being honored,
this change adds two new metrics:

* `outbound_http_route_backend_requests_total`; and
* `outbound_grpc_route_backend_requests_total`

Each of these metrics includes labels that identify a routes parent
(i.e. a Service), the route resource being used, and the backend
resource being used.

This implementation does NOT implement any form of metrics eviction for
these new metrics. This is tolerable for the short term as the
cardinality of services and routes is generally much less than the
cardinality of individual endpoints (where we do require
timeout/eviction for metrics).
2023-04-01 19:58:13 +00:00
Eliza Weisman 172523fb08
outbound: add failure accrual test, fix `Gate`s not becoming ready (#2371)
This branch adds a stack test in `linkerd_app_outbound` for the
consecutive-failures failure accrual policy. This test builds the HTTP
logical and concrete stacks and tests their behavior using a mocked
`tower::Service` as the endpoint stack, and a mock stack target type and
destination resolver. Because these stack tests do not perform IO,
execute in a single thread, and use the paused Tokio timer, they should
be fully deterministic, minimizing potential flaky failures. However, we
are still testing enough of the stack to exercize the circuit-breaking
functionality integrated with other components of the proxy.

The test added in this branch exercises only the behavior of a single
concrete stack (one backend). It tests that the backend's circuit
breaker trips when the configured number of failures occur, that the
backend is probed after a probation backoff, and the behavior of failed
and successful probe requests. This test does *not* currently exercise
the behavior of distributors/load balancers when only some endpoints are
failing. Those tests can be added in a follow-up PR.

This test revealed a bug in the `Gate` middleware that prevented the
test from passing. The `Gate` middleware's `poll_ready` implementation
attempts to acquire a semaphore permit when the gate is in a limited
state, and then polls the inner service for readiness. If the inner
service is ready, the semaphore permit is stored in the gate to be
consumed in `call`. However, this implementation does not check if the
gate has *already* acquired a sempahore permit and stored it in the
gate. In that case, a subsequent call to `poll_ready` after the gate has
returned `Poll::Ready` will result in it attempting to acquire another
permit. If the semaphore only has a single permit, and the gate has
already acquired it, it will never become ready if `poll_ready` is
called a second time.

This branch fixes this bug by changing the `Gate` to only call
`self.poll_acquire()` if the gate has not acquired a permit. If it has
already acquired a permit, the `poll_ready` implementation returns
`Poll::Ready` immediately.
2023-03-31 13:57:58 -07:00
Eliza Weisman c659ec542f
configure failure accrual from the `OutboundPolicy` API (#2364)
This branch updates the proxy to configure failure accrual policies from
the OutboundPolicy API. It updates the dependency on
`linkerd2-proxy-api` to include changes from
linkerd/linkerd2-proxy-api#223, which adds failure accrual configuration
to the `Protocol::Http1`, `Protocol::Http2`, and `Protocol::Grpc`
variants.

Currently, `ConsecutiveFailures` (added in #2357) is the only supported
failure accrual policy. If the proxy API does not configure a failure
accrual policy, failures are not accrued, and endpoints do not become
unavailable due to failure accrual.
2023-03-30 16:44:49 -07:00
Eliza Weisman d158a98480
add `ConsecutiveFailures` failure accrual policy (#2357)
Depends on https://github.com/linkerd/linkerd2-proxy/pull/2354.

This branch introduces a `ConsecutiveFailures` failure accrual policy
which marks an endpoint as unavailable if a given number of failures
occur in a row without any successes. Once the endpoint is marked as
failing, it is issued a single probe request after a delay. If the probe
succeeds, the endpoint transitions back to the available state.
Otherwise, it remains unavailable, with subsequent probe requests being
issued with an exponential backoff. The consecutive failures failure
accrual policy was initially implemented in PR #2334 by @olix0r.

A new `FailureAccrual::ConsecutiveFailures` variant is added in
`linkerd2-proxy-client-policy` for configuring the consecutive failures
failure accrual policy. The construction of circuit breakers in the
outbound stack is changed from a closure implementing `ExtractParam` to
a new `breaker::Params` type, so that the type returned can be the same
regardless of which failure accrual policy is constructed.
2023-03-30 16:06:57 -07:00
Eliza Weisman f5daf1f727
outbound: configure failure accrual policies from stack targets (#2354)
Depends on #2353.

PR #2353 adds middleware for implementing request-level circuit
breaking. This branch adds the circuit breaking middleware to the
outbound concrete stack, and adds plumbing for configuring a concrete
stack's circuit breaker based on params provided by the target.


A new `FailureAccrual` enum is added in `linkerd2-proxy-client-policy`
to represent the failure accrual policy for a circuit breaker.
Currently, no actual implementations of failure accrual policies exist
in the proxy, so the only available variant of `FailureAccrual` is
`FailureAccrual::None`, which disables circuit breaking. Circuit
breaking middleware (a `Gate`/`BroadcastClassification` pair) is still
constructed, but no failure accural task is spawned to actually open and
shut the gate, so no circuit breaking is actually performed. Subsequent
branches will actually implement failure accrual policies.

Failure accrual policies are configured at the protocol level, rather
than per-route or per-backend. This is because a given policy may
contain multiple routes referencing the same backend, and a single
concrete stack is constructed for that backend that's shared across all
distributions that include it. If failure accrual policies were
configured at the `RouteBackend` level, we would need to build separate
client stacks if the same backend is referenced by `RouteBackend`s that
have different failure accrual policies. Currently, failure accrual
policies are not present in the proxy API, so all `ClientPolicy`
instances have the default policy, `FailureAccrual::None`. Once the
`OutboundPolicy` proxy API actually provides failure accrual
configurations, a subsequent branch will populate this configuration
from discovery.
2023-03-29 16:08:52 -07:00
Eliza Weisman 6d897d70a3
client-policy: accept backends with empty `dispatcher` fields (#2352)
When a `backendRef` in an HTTPRoute references a valid Service name
which doesn't currently exist in the cluster, the policy controller
constructs a synthesized backend with a `failureInjector` filter, so
that traffic sent to the invalid backend will fail with a descriptive
error message, and any other backends in the route will still work
normally. Because the backend doesn't exist, there is no reasonable
value for the policy controller to set as the backend's `dispatcher`
field in the OutboundPolicy proto.

Unfortunately, however, the proxy currently rejects any OutboundPolicy
which has a backend without a populated `dispatcher` field. This means
that when an OutboundPolicy has one backend that has no `dispatcher`,
the proxy will synthesize an invalid policy that fails all traffic,
rather than one that only fails traffic sent to that backend.

This branch changes the proxy so that backends without a `dispatcher`
are no longer rejected by the client policy protobuf conversion code.
Instead, a new `Dispatcher::Fail` variant is used to represent a backend
which always fails requests with a configured error message, so that a
functional `ClientPolicy` can still be constructed when one or more
backends lack a dispatcher. When constructing a stack for a `Concrete`
target with a `Fail` dispatcher, the proxy builds a service that fails
all requests. In practice, these errors will not be observed when the
policy controller returns a backend for an invalid Service name, as the
`failureInjector` filter's error should be produced first, but
constructing a service is necessary for the stack to function correctly.

Closes linkerd/linkerd2#10620
2023-03-29 15:28:05 -07:00
dependabot[bot] 7b9b12173a
build(deps): bump tempfile from 3.4.0 to 3.5.0 (#2359)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/Stebalien/tempfile/releases)
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/NEWS)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 13:46:26 -07:00
dependabot[bot] 18b0a4f934
build(deps): bump actions/checkout from 3.3.0 to 3.5.0 (#2349)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.3.0 to 3.5.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](ac59398561...8f4b7f8486)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 13:45:59 -07:00
dependabot[bot] afb70ef970
build(deps): bump windows_aarch64_msvc from 0.42.1 to 0.42.2 (#2362)
Bumps [windows_aarch64_msvc](https://github.com/microsoft/windows-rs) from 0.42.1 to 0.42.2.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows_aarch64_msvc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 09:16:39 -07:00
dependabot[bot] edec462c8f
build(deps): bump indexmap from 1.9.2 to 1.9.3 (#2363)
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.9.2 to 1.9.3.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/bluss/indexmap/compare/1.9.2...1.9.3)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 09:16:12 -07:00
dependabot[bot] 911e361eeb
build(deps): bump ipnet from 2.7.1 to 2.7.2 (#2361)
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.7.1 to 2.7.2.
- [Release notes](https://github.com/krisprice/ipnet/releases)
- [Changelog](https://github.com/krisprice/ipnet/blob/master/RELEASES.md)
- [Commits](https://github.com/krisprice/ipnet/commits)

---
updated-dependencies:
- dependency-name: ipnet
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 09:12:04 -07:00
dependabot[bot] f7f49af609
build(deps): bump regex from 1.7.1 to 1.7.3 (#2360)
Bumps [regex](https://github.com/rust-lang/regex) from 1.7.1 to 1.7.3.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.7.1...1.7.3)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 09:11:34 -07:00
Eliza Weisman c904754159
add `NewClassifyGate` and `BroadcastClassification` middleware (#2353)
This branch introduces middleware for opening and closing a `Gate`
middleware based on HTTP response classification. The
`BroadcastClassification` service applies an HTTP response classifier to
each request, and sends the classification over a channel. The
`NewClassifyGate` middleware constructs stacks containing
`BroadcastClassification` and `Gate` middleware. In conjunction with a
_failure accrual policy_, these middleware allow response classification
results to determine whether a service stack is available, implementing
_request-level HTTP circuit breaking_.

Failure accrual policies are determined by the `ExtractParam`
implementation provided to the `NewClassifyGate` layer. This type must
provide a `classify::gate::Params` type containing a `mpsc::Sender` for
the response classification channel, and a `gate::Rx` that controls the
opening and closing of the `Gate` middleware. This means that the
`ExtractParam` implementation can spawn a task implementing an arbitrary
policy for opening and closing the gate based on classifications
received over the `mpsc::Receiver` end of the classification channel,
based on the target type the stack is constructed for.

This branch does not implement any failure accrual policies, nor does it
integrate the `NewClassifyGate` middleware with existing proxy stacks.
It simply adds these middleware. Subsequent branches will add the
circuit-breaking middleware to the proxy stack, implement failure accrual
policies, and configure failure accrual from individual stack targets.

This change was factored out from PR #2334 in order to merge
independently
2023-03-28 12:51:36 -07:00
dependabot[bot] 908803e3e3
build(deps): bump quote from 1.0.23 to 1.0.26 (#2336)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.23 to 1.0.26.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.23...1.0.26)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 12:50:58 -07:00
dependabot[bot] e96187d555
build(deps): bump windows_i686_msvc from 0.42.1 to 0.42.2 (#2338)
Bumps [windows_i686_msvc](https://github.com/microsoft/windows-rs) from 0.42.1 to 0.42.2.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows_i686_msvc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 12:44:32 -07:00
dependabot[bot] 03a986c573
build(deps): bump itoa from 1.0.5 to 1.0.6 (#2339)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.5 to 1.0.6.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.5...1.0.6)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 12:44:09 -07:00
dependabot[bot] 715bd269f4
build(deps): bump prettyplease from 0.1.24 to 0.1.25 (#2340)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.24 to 0.1.25.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.24...0.1.25)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 12:43:25 -07:00
dependabot[bot] 5596bb5184
build(deps): bump tj-actions/changed-files from 35.7.0 to 35.7.7 (#2355)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.7.0 to 35.7.7.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](bd376fbcfa...db5dd7c176)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 12:42:28 -07:00
dependabot[bot] de629598e7
build(deps): bump serde from 1.0.152 to 1.0.159 (#2356)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.152 to 1.0.159.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.152...v1.0.159)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 12:41:51 -07:00
Eliza Weisman 0814a154ba
client-policy: `RouteBackend`s use the backend's metadata (#2351)
Due to an oversight in the code for converting the proxy API
`OutboundPolicy` protobuf types into the proxy's internal
representations, `RouteBackend`s are currently constructed with the
_route_'s metadata, rather than the metadata for that individual
backend. This is incorrect, so this branch fixes that.

Because the functions for converting the protobuf types to
`RouteBackend`s and `RouteDistribution`s no longer need to have the
route's `Arc<Meta>` passed in, some of these functions have been changed
to `TryFrom` implementations.
2023-03-27 14:52:51 -07:00
dependabot[bot] 434302375b
build(deps): bump EmbarkStudios/cargo-deny-action from 1.4.0 to 1.5.0 (#2350)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](8a8607bd8e...8af37f5d0c)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-27 09:43:48 -07:00
Oliver Gould ecaaf39b46
Configure response classifiers from ClientPolicy routes (#2324)
Currently, the proxy's response classification can be configured by
ServiceProfiles. In order to implement circuit breaking using the
`OutboundPolicy` API, and for feature parity with ServiceProfiles, proxy
stacks configured by a `ClientPolicy` must also be able to configure
response classification.

This branch adds a configurable failure policy to the proxy's
`ClientPolicy` types, so that client policy route stacks can provide a
response classifier param to configure a classification layer. In
addition, this branch makes some internal changes to the response
classifier implementation, such as changing the response classifier
implementation to represent a classification using `Result` rather than
the `SuccessOrFailure` enum.

* 408457ad Carve out space in the policy API for a "failure policy"
* 2e165e05 classify: Replace SuccessOrFailure with Result
* 6af16e29 Update classifier to reuse clientpolicy response status/code types
* 60a61d96 Configure request classification from client policy routes
2023-03-23 11:31:53 -07:00
Oliver Gould 8146dc2d8f
gate: Support admitting a limited number of requests (#2342)
To implement circuit breakers, we want to use the gate to control
whether or not a service is available to callers. When a service is
coming out of a failed state, we may want to admit a limited number of
requests through before going back to an unfettered state.

To support this, this change updates the `Gate` service to be backed by
a `tokio::sync::watch` channel so that each side of the gate channel can
communicate state updates.

`gate::Tx::closed` is renamed to `gate::Tx::lost` to avoid ambiguity.
2023-03-23 10:44:01 -07:00
Eliza Weisman 103a4809a9
gateway: synthesize ClientPolicies when the controller returns `NotFound` (#2333)
Both outbound and gateway proxies now resolve client policies from the
OutboundPolicies API. When the outbound proxy attempts to discover a
policy and the policy controller returns NotFound, it synthesizes a
default policy from the discovered ServiceProfile. However, when the
gateway proxy receives a NotFound, it will currently fail the
connection, based on the assumption that only valid cluster DNS names
are gatewayed (and not arbitrary IPs that might be forwards).
Unfortunately, this is not quite true. Gateway proxies may attempt to
discover cluster DNS names that are Pod DNS names, rather than Service
DNS names, and the policy controller will return NotFound for those
names.

This branch therefore changes the gateway proxy to also synthesize
default ClientPolicies based on the ServiceProfile when receiving a
NotFound status. Some of the code for synthesizing a client policy
from a ServiceProfile that's currently used in the outbound proxy was
factored out so that it could be reused here.
2023-03-21 07:38:37 -07:00
Oliver Gould ebb0496063
outbound: Fix incorrect l5d-proxy-connection logs (#2344)
We've received reports of proxies inexplicibly emiting log lines
including "Received unmeshed response with l5d-proxy-connection set".
These messages may arise when the endpoint stack returns a synthesized
response.

Furthermore, we have a note in the code explaining that this connection
closure logic should not apply to load balanced requests, though it
currently is.

This change fixes both of these issues:

* The proxy_connection_close module is renamed to
  handle_proxy_error_headers.
* It is now only applied in the endpoint stack. It doesn't make any
  sense for it to be applied in the server stack, since we'll already
  have cleared any headers set by peers. Removing this module prevents
  the application of teardown logic on synthetic responses.
* `NewHandleProxyErrorHeaders` is now configured by a `Closable`
  parameter that determines whether teardown logic should be applied.
  This parameter is only enabled when forwarding to a single endpoint.
  No teardown logic is applied when load balancing.
* In a future change, we should stop emitting l5d-proxy-connection when
  synthesizing outbound responses.
2023-03-20 17:38:19 -07:00
Eliza Weisman 818c17c761
gateway: move discovery resolver into its own file (#2343)
This branch moves the `Gateway::discover` method from
`gateway/src/server.rs` into its own file. This is to prepare for future
changes that will add more discovery-related logic to the gateway proxy,
which made sense to put in its own module (see #2333 for details). In
addition, I renamed the `Gateway::discover` method to
`Gateway::resolver`, for consistency with the similar method on
`Outbound`.

No functional changes.
2023-03-17 10:14:05 -07:00
Eliza Weisman 76db76253b
outbound: fix `Balance::Dispatch` "authority" labels (#2332)
PR #2313 changed client policies with the load balancer dispatch type to
report the load balancer's destination address as the "authority" label,
rather than the numeric authority the policy was discovered for.
However, this change was accidentally undone when merging PR #2260,
which moved the code where the authority label is generated to a
different file.

This PR changes it back, so that the discovered concrete destination
address should still be reported as the "authority" metrics label.
2023-03-15 11:45:39 -07:00
Eliza Weisman 703782c2a9
outbound: refactor `discover::resolver` into a method (#2331)
This commit changes the `outbound::discover::resolver` function into a
method on `Outbound`. This way, the default queue and detect timeout
configuration can be accessed from `Outbound`'s config field in the
`resolver` method, rather than being passed in. This felt a little bit
cleaner to me.

No functional change.
2023-03-15 10:44:58 -07:00
dependabot[bot] 75207476d5
build(deps): bump windows_aarch64_gnullvm from 0.42.1 to 0.42.2 (#2330)
Bumps [windows_aarch64_gnullvm](https://github.com/microsoft/windows-rs) from 0.42.1 to 0.42.2.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows_aarch64_gnullvm
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-15 09:25:20 -07:00
dependabot[bot] 0f2d69ea1c
build(deps): bump unicode-bidi from 0.3.10 to 0.3.11 (#2329)
Bumps [unicode-bidi](https://github.com/servo/unicode-bidi) from 0.3.10 to 0.3.11.
- [Release notes](https://github.com/servo/unicode-bidi/releases)
- [Commits](https://github.com/servo/unicode-bidi/compare/v0.3.10...v0.3.11)

---
updated-dependencies:
- dependency-name: unicode-bidi
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-15 09:24:55 -07:00
dependabot[bot] b309bc5eb9
build(deps): bump hyper from 0.14.24 to 0.14.25 (#2328)
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.24 to 0.14.25.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.25/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.24...v0.14.25)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-15 09:24:34 -07:00
dependabot[bot] a2bc5550b9
build(deps): bump libc from 0.2.139 to 0.2.140 (#2327)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.139 to 0.2.140.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.139...0.2.140)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-15 09:24:12 -07:00
dependabot[bot] b8444d6da1
build(deps): bump derive_arbitrary from 1.2.3 to 1.3.0 (#2326)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.2.3 to 1.3.0.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.2.3...v1.3.0)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-15 09:23:50 -07:00
Eliza Weisman e04dffef05
gateway: discover client policies from the policy controller (#2315)
Depends on #2314.

Currently, the gateway stack does not resolve client policies, and only
uses service profiles for client-side policy discovery. This branch
updates the gateway proxy to also perform client policy discovery,
similarly to the outbound proxy.

Because all outbound stacks, including the one constructed by the
gateway, will now discover client policies, the client policy `Receiver`
in the `Discovery` type, which is currently an `Option`, can now be made
non-optional. This simplifies some code a little bit and removes some
`expect`s.
2023-03-14 14:23:31 -07:00
dependabot[bot] 7c2250fb18
build(deps): bump windows_x86_64_msvc from 0.42.1 to 0.42.2 (#2319)
Bumps [windows_x86_64_msvc](https://github.com/microsoft/windows-rs) from 0.42.1 to 0.42.2.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows_x86_64_msvc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-14 13:52:34 -07:00
dependabot[bot] 0d8ef0278e
build(deps): bump proc-macro2 from 1.0.51 to 1.0.52 (#2320)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.51 to 1.0.52.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.51...1.0.52)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-14 13:52:19 -07:00
Oliver Gould 2dba6a8dd9
outbound: Apply filters to outbound requests (#2260)
The inbound proxy supports HTTPRoute filters, but support for these filters
has not been implemented in the outbound proxy.

This change updates the outbound proxy to support HTTP and GRPC request
filters for outbound routes and route backends.
2023-03-14 13:15:44 -07:00
Eliza Weisman 8be2927c07
test: add mock client policy resolver (#2314)
Currently, `linkerd-app-outbound`'s stack tests construct a discovery
service for `push_discover` which only discovers service profiles, and
does not resolve client policies. This works fine currently, as
`Discovery` can be constructed with only a profile receiver, as the
client policy receiver is optional.

However, when we add client policy discovery to the gateway, we will be
able to make the policy receiver no longer optional, as a client policy
will always be discovered. In that case, these tests will no longer
compile. Therefore, this branch adds an implementation of a mock client
policy resolver in `linkerd-test`, and updates these stack tests to
actually use it.

This was factored out of the change that actually adds policy discovery
to the gateway, and is a prerequisite for that change.
2023-03-14 13:01:52 -07:00
dependabot[bot] 2a88a71c31
build(deps): bump tj-actions/changed-files from 35.6.4 to 35.7.0 (#2318)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.6.4 to 35.7.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](84ed30e2f4...bd376fbcfa)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-14 09:43:50 -07:00
dependabot[bot] 392224efae
build(deps): bump axum from 0.6.10 to 0.6.11 (#2321)
Bumps [axum](https://github.com/tokio-rs/axum) from 0.6.10 to 0.6.11.
- [Release notes](https://github.com/tokio-rs/axum/releases)
- [Changelog](https://github.com/tokio-rs/axum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/axum/compare/axum-v0.6.10...axum-v0.6.11)

---
updated-dependencies:
- dependency-name: axum
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-14 09:43:23 -07:00
dependabot[bot] fd3039fb94
build(deps): bump ryu from 1.0.12 to 1.0.13 (#2322)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.12 to 1.0.13.
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.12...1.0.13)

---
updated-dependencies:
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-14 09:43:01 -07:00
dependabot[bot] 149c9bd30c
build(deps): bump windows_x86_64_gnullvm from 0.42.1 to 0.42.2 (#2323)
Bumps [windows_x86_64_gnullvm](https://github.com/microsoft/windows-rs) from 0.42.1 to 0.42.2.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows_x86_64_gnullvm
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-14 09:42:29 -07:00
Oliver Gould 3bcaeeb3c4
outbound: Eagerly cancel synthesized profile task (#2317)
The outbound::discover module spawns a task to watch profiles for
updates, but this task does not stop when the associated receiver is
dropped.

This changes the task to exit when the policy channel is closed.
2023-03-13 16:33:47 -07:00
Oliver Gould 5aea9485f7
outbound: Simplify discovery debug logging (#2316)
* Reduce verbosity of per-request route debug logging
* Increase profile resolution logging to debug
2023-03-13 16:14:28 -07:00
dependabot[bot] 6f9a4abc84
build(deps): bump tj-actions/changed-files from 35.6.1 to 35.6.4 (#2309)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.6.1 to 35.6.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](04124efe75...84ed30e2f4)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-13 16:04:44 -07:00
Oliver Gould a856dbdcfd
outbound: Report concrete authorities for policies (#2313)
The new policy router currently reports a numeric authority when using
policy routes. In some cases, we have a named concrete address for the
load balancer. In the vast majority of cases, this address is the same
as the logical service's.

For now, let's use concrete addresses for telemetry. This will help
minimize regressions while we figure how to move telemetry forward.
2023-03-11 19:37:57 -08:00
Oliver Gould c4e6cfe2fd
just: Fix docker tag formatting (#2312)
The justfile does not properly escape tags with multiple slashes.

This change updates the sed command to use a global replace.
2023-03-11 17:39:35 -08:00
Eliza Weisman 3dec105d3a
outbound: Require ClientPolicy discovery (#2265)
To support Gateway API-style routes in the outbound proxy, we need to begin
discovering this route configuration from the control plane (via the new
`OutboundPolicies` API).

This change updates the proxy as follows:

1. Policy controller configuration is now required for the proxy.
   Previously, the policy API was optionally configured for the inbound
   proxy.
2. The sidecar and ingress proxies are updated to use client policies.
   Service profile configurations continue to be used when they include
   HTTP routes and/or traffic split. Otherwise, a client policy is used
   to route traffic.

Outbound policies are currently discovered for *all* outbound IP addresses. Over
time, the policy controller will assume responsibility to make *all* routing
decisions.  It does not yet serve responses for all cases, however, so some
fallback behavior exists to use endpoint metadata from profile discovery,
if it exists.

The multi-cluster gateway configuration does not yet use policies for
outbound routing. Furthermore, the proxy reports an IP logical address for
policy routes (instead of a named address, as is done with profiles). There
are no new metrics or labels introduced in this PR. Metrics changes will be made
in follow-up changes.
2023-03-11 14:40:59 -08:00
Eliza Weisman 3b915d0fb8
separate policy client config from `inbound::Config` (#2307)
Currently, configuration for the policy controller client is part of the
`linkerd_app_inbound` crate's `Config` struct. This is because only the
inbound proxy currently communicates with the policy controller.

In order to change the outbound side of the proxy to resolve client
policies from the new `OutboundPolicy` API, the outbound proxy will now
also need a policy controller client. Preferrably, both the client
configuration and the actual client connection(s) should be shared
between both halves of the proxy, similar to how the destination
controller client is shared by both the inbound and outbound proxies.

Therefore, this branch pulls the shared policy client configuration out
of the inbound config and onto the top-level `linkerd_app` crate's
`Config` struct. The shape of the `Inbound::build_policies` function is
changed somewhat, as it now takes a client service and wraps it with the
gRPC API client for the inbound policy API. This looks a bit different
from how the destination controller client is shared between the inbound
and outbound proxies, because in this case, the two halves of the proxy
are using different gRPC APIs served by the same controller, rather than
the same API.

Additionally, the policy controller address and name environment
variables are now required, and starting the proxy without them is a
hard error. In practice, these are always set, and running without a
policy controller was only used in proxy integration tests. PR #2288
changed the integration tests to run with a mock policy controller, so
running the proxy without a policy controller is no longer necessary.
Removing this mode simplifies the config-parsing code somewhat.

This change was factored out from PR #2265.
2023-03-09 15:31:25 -08:00
dependabot[bot] d230fed014
build(deps): bump mio from 0.8.5 to 0.8.6 (#2299)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.5 to 0.8.6.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.5...v0.8.6)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-08 08:51:46 -07:00
dependabot[bot] 3ed8924667
build(deps): bump thiserror from 1.0.38 to 1.0.39 (#2298)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.38 to 1.0.39.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.38...1.0.39)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-08 08:50:57 -07:00
dependabot[bot] b6c27993c3
build(deps): bump async-trait from 0.1.64 to 0.1.66 (#2297)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.64 to 0.1.66.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.64...0.1.66)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-08 08:50:26 -07:00
dependabot[bot] e6c92b21e3
build(deps): bump serde_json from 1.0.93 to 1.0.94 (#2296)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.93 to 1.0.94.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.93...v1.0.94)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-08 08:50:09 -07:00
dependabot[bot] 69dabf3a04
build(deps): bump rustix from 0.36.7 to 0.36.9 (#2295)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.36.7 to 0.36.9.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.36.7...v0.36.9)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-08 08:49:52 -07:00
Eliza Weisman b1e31440d7
outbound: change `push_discover` to take a `Service` (#2291)
Currently, the `push_discover` method in `linkerd_app_outbound` takes a
`GetProfile` implementation, which is used to discover ServiceProfiles.
In order to change this function to discover both ServiceProfiles and
OutboundPolicies, PR #2265 will change this function to take an
arbitrary `Service` that may discover ServiceProfiles, OutboundPolicies,
or both. In order to make reviewing the change adding client policy
discovery easier, the change to `push_discover` was factored out into
this PR.

Since `push_discover` now takes an arbitrary discovery service, and
since we only want the configured profile discovery allowlist to apply
to ServiceProfiles (and not to OutboundPolicies), this change also pulls
out the filtering of addresses not in the allowlist from a layer pushed
in `push_discover` into a middleware which is added to the profile
discovery `Service`.
2023-03-07 16:40:23 -08:00
Eliza Weisman 3c3578640b
integration: add test policy controller (#2288)
Currently, the proxy integration tests run without a policy controller,
and instead use environment variables to configure default inbound
server policies. However, we do not intend to add a similar environment
based defaulting mechanism for outbound client policies. Therefore, when
the proxy starts consuming the outbound client policy API, we will no
longer be able to run the integration tests without a policy controller.

This branch adds an implementation of a mock policy controller for the
integration tests. This was factored out from PR #2265, which implements
outbound policy discovery and therefore requires a policy controller.

Note that the mock policy controller added in #2265 serves both the
inbound and outbound APIs, while this PR implements only the inbound
API. This is because the a version of `linkerd2-proxy-api` that includes
the outbound policy API has not yet been released, and I wanted to be
able to merge this branch without waiting for a proxy API release.
However, the mock policy controller implementation here was taken
directly from #2265 with the outbound half removed. Some aspects of the
implementation may seem somewhat more complex than necessary to
implement only the inbound policy API, but I thought it was nicer to
have a smaller diff when the outbound half is added in the near future.

One small complexity here is that the inbound proxy will use default
policies when it has not yet resolved. This means there is a potential
for racy behavior in tests when a request is sent to an inbound proxy,
if it has not yet started a watch on the policy for a port (or is in the
process of starting that watch). This can result in flaky test failures:
for example, in metrics tests, the name of the policy can change between
requests if one request is handled with the default and the next request
is handled with one resolved from the mock policy controller, resulting
in two sets of labels rather than one. To avoid the test proxy flapping
between the default policy and one resolved from the mock policy
controller, I've also changed the proxy test harness so that any
configured inbound ports in the test are added to
`LINKERD2_PROXY_INBOUND_PORTS`, so that the proxy will eagerly resolve
them. The test harness now waits for the mock policy controller to tell
it that the proxy has started watches on those ports before actually
running the test code.
2023-03-07 16:17:24 -08:00
Eliza Weisman f047a09742
client-policy: add protobuf conversion (#2289)
This branch adds functions to the `linkerd-proxy-client-policy` crate
for converting the `linkerd2-proxy-api` outbound policy protobuf types
into the proxy's internal representations. These are not used in this
branch, but will be used in subsequent changes that actually wire up
outbound policy discovery.

This change was factored out from #2265, so that it can be reviewed
independently of the rest of the client policy discovery plumbing.

Note that this branch changes the `linkerd2-proxy-api` dependency to a
Git dep on the outbound policy branch (linkerd/linkerd2-proxy-api#165),
as the new APIs have not yet been published.
2023-03-07 16:17:05 -08:00
dependabot[bot] b3dfaedd50
build(deps): bump petgraph from 0.6.2 to 0.6.3 (#2285)
Bumps [petgraph](https://github.com/petgraph/petgraph) from 0.6.2 to 0.6.3.
- [Release notes](https://github.com/petgraph/petgraph/releases)
- [Changelog](https://github.com/petgraph/petgraph/blob/master/RELEASES.rst)
- [Commits](https://github.com/petgraph/petgraph/commits/0.6.3)

---
updated-dependencies:
- dependency-name: petgraph
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-07 13:32:43 -08:00
dependabot[bot] e610a4bb91
build(deps): bump tokio from 1.25.0 to 1.26.0 (#2286)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.25.0 to 1.26.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.25.0...tokio-1.26.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-07 13:32:28 -08:00
dependabot[bot] b5c4c7664a
build(deps): bump prettyplease from 0.1.23 to 0.1.24 (#2293)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.23 to 0.1.24.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.23...0.1.24)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-07 13:31:23 -08:00
Loong Dai cab14e9998
README: comment just-cargo and make it more clear (#2292)
Signed-off-by: Loong <loong.dai@intel.com>
2023-03-07 13:07:35 -08:00
dependabot[bot] cf84b86ce6
build(deps): bump socket2 from 0.4.7 to 0.4.9 (#2290)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.4.7 to 0.4.9.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/commits/v0.4.9)

---
updated-dependencies:
- dependency-name: socket2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-06 11:08:23 -08:00
Oliver Gould 1f9321ffa8
outbound: Decouple backend caching from request distribution (#2284)
The `BackendCache` module currently produces `NewDistribute` instances.
This does not allow any other layers to be insertedb between the
distribution decision and the caching decision.

To support per-route-backend filters, we need to separate these
modules.

This change updates `BackendCache` as `NewBackendCache` and adds a basic
service to extract targets from the cache.

`NewDistribute` is updated so that it builds new inner services instead
of using the cache directly. The distribution layers are moved up into
the route stack to prepare for additional filters being applied.
2023-03-01 15:24:02 -08:00
dependabot[bot] 1db476f0eb
build(deps): bump tj-actions/changed-files from 35.6.0 to 35.6.1 (#2280)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.6.0 to 35.6.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](3ee6abf610...04124efe75)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-01 07:38:45 -08:00
dependabot[bot] f662882fbf
build(deps): bump jobserver from 0.1.25 to 0.1.26 (#2281)
Bumps [jobserver](https://github.com/alexcrichton/jobserver-rs) from 0.1.25 to 0.1.26.
- [Release notes](https://github.com/alexcrichton/jobserver-rs/releases)
- [Commits](https://github.com/alexcrichton/jobserver-rs/compare/0.1.25...0.1.26)

---
updated-dependencies:
- dependency-name: jobserver
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-01 07:38:32 -08:00
dependabot[bot] d2ea96b81a
build(deps): bump async-stream from 0.3.3 to 0.3.4 (#2282)
Bumps [async-stream](https://github.com/tokio-rs/async-stream) from 0.3.3 to 0.3.4.
- [Release notes](https://github.com/tokio-rs/async-stream/releases)
- [Commits](https://github.com/tokio-rs/async-stream/compare/v0.3.3...v0.3.4)

---
updated-dependencies:
- dependency-name: async-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-01 07:38:14 -08:00
dependabot[bot] 120a2a216e
build(deps): bump slab from 0.4.7 to 0.4.8 (#2283)
Bumps [slab](https://github.com/tokio-rs/slab) from 0.4.7 to 0.4.8.
- [Release notes](https://github.com/tokio-rs/slab/releases)
- [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/slab/compare/v0.4.7...v0.4.8)

---
updated-dependencies:
- dependency-name: slab
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-01 07:31:48 -08:00
Oliver Gould c63af32efe
stack: Make `failfast::Gate` general purpose (#2279)
`failfast::Gate` is a stack middleware that supports changing its
readiness based on some external signal (the failfast state changing).
Nothing about the gate's behavior is specific to failfast, though; and
this type of gating is general useful on its own.

To setup further reuse, this change moves `stack::failfast::gate` to
`stack::gate`. The gate is now tested independently from failfast.
Failfast continues to maintain an (optional) `gate::Tx` so that it can
control a gate.
2023-02-28 16:35:13 -08:00
dependabot[bot] a1a8b0772c
build(deps): bump tokio-stream from 0.1.11 to 0.1.12 (#2276)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.11 to 0.1.12.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.11...tokio-stream-0.1.12)

---
updated-dependencies:
- dependency-name: tokio-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-28 09:47:02 -08:00
dependabot[bot] f450583e19
build(deps): bump tempfile from 3.3.0 to 3.4.0 (#2277)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/Stebalien/tempfile/releases)
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/NEWS)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-28 09:45:38 -08:00
dependabot[bot] fe0808165b
build(deps): bump h2 from 0.3.15 to 0.3.16 (#2278)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.15 to 0.3.16.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.15...v0.3.16)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-28 09:45:08 -08:00
Eliza Weisman 9619c642ff
allow `opaque_hidden_inferred_bound` warning on nightly (#2275)
Currently, our nightly builds are failing due to the new warning
`opaque_hidden_inferred_bound`, which triggers when an opaque type
(`impl Trait`) in an associated type position does not explicitly
include the associated type's trait bounds (e.g. returning a
`Service<Future = impl Send, ...>`) or similar.

Unfortunately, we cannot simply change our code to make the trait
bound's type explicit, as changing `impl Send` to `impl Future<...> +
Send` in this position results in a surprising error which I don't think
is correct:

```
error[E0277]: `impl std::marker::Send` is not a future
  --> linkerd/app/outbound/src/http/logical.rs:97:30
   |
97 |                     Future = impl Future<Output = Result<http::Response<http::BoxBody>, Error>> + Send,
   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `impl std::marker::Send` is not a future
   |
   = help: the trait `futures::Future` is not implemented for `impl std::marker::Send`
   = note: impl std::marker::Send must be a future or must implement `IntoFuture` to be awaited
   = note: required for `stack::map_err::ResponseFuture<(), impl std::marker::Send>` to implement `futures::Future`

For more information about this error, try `rustc --explain E0277`.
```

See
https://github.com/linkerd/linkerd2-proxy/pull/2268#issuecomment-1446738668
as well as the upstream Rust issue rust-lang/rust#107729, for details.

This should probably be reported on the Rust issue tracker, since a
warning that's (apparently) impossible to fix seems not great. However,
for now, we can simply allow this warning for our nightly builds.

This should fix CI.
2023-02-27 10:43:10 -08:00
Oliver Gould 94c44349a7
ci: Add a linkerd install workflow (#2268)
We don't currently test that proxy changes are at least usable in a
basic Linkerd installation. This adds a CI workflow to test all Linkerd
code changes against a real k8s cluster with the control plane from the
most recent edge release.
2023-02-27 10:37:44 -08:00
dependabot[bot] 31276e5db6
build(deps): bump prost-build from 0.11.6 to 0.11.8 (#2273)
Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.11.6 to 0.11.8.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.6...v0.11.8)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-27 10:36:21 -08:00
dependabot[bot] f42bdf32e7
build(deps): bump tj-actions/changed-files from 35.5.6 to 35.6.0 (#2271)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.5.6 to 35.6.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](23e3c4300c...3ee6abf610)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-27 10:35:50 -08:00
dependabot[bot] fd53948c80
build(deps): bump tokio-util from 0.7.4 to 0.7.7 (#2272)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.4 to 0.7.7.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.4...tokio-util-0.7.7)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-27 10:35:36 -08:00
dependabot[bot] a757c47eda
build(deps): bump syn from 1.0.107 to 1.0.109 (#2274)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.107 to 1.0.109.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.107...1.0.109)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-27 10:35:24 -08:00
Oliver Gould 29542cf4d1
dev: override CXX for rust-analyzer (#2270) 2023-02-26 17:56:10 -08:00
Oliver Gould 3c6c633b40
Bump v38 to v39 (#2269)
Fix the C++ compiler configuration
2023-02-26 12:56:59 -08:00
Oliver Gould 2e4fe8fb00
Revert inbound policy discovery changes (#2267)
The changes--specifically those in 93b06e69--prevent control plane
boot-strapping: the identity controller is unable to serve requests
because its proxy can't contact the destination pod for policy because
the destination pod doesn't have identity yet.

Ultimately, we probably want to change Linkerd's control plane
deployment topology to avoid these bootstrapping issues. In the
meantime, we'll need to revisit our approach to these changes.

* Revert 89ee318e inbound: Introduce a `policy::LookupAddr` type (#2264)
* Revert 93b06e69 inbound: Remove default policies (#2204)
* Revert c186d88a inbound: connections wait for ServerPolicy discovery (#2186)
2023-02-24 17:55:14 -08:00
dependabot[bot] 7948f13e1f
build(deps): bump tinyvec_macros from 0.1.0 to 0.1.1 (#2262)
Bumps [tinyvec_macros](https://github.com/Soveu/tinyvec_macros) from 0.1.0 to 0.1.1.
- [Release notes](https://github.com/Soveu/tinyvec_macros/releases)
- [Commits](https://github.com/Soveu/tinyvec_macros/commits)

---
updated-dependencies:
- dependency-name: tinyvec_macros
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-24 08:03:48 -08:00
dependabot[bot] f6d03afa62
build(deps): bump proc-macro2 from 1.0.50 to 1.0.51 (#2261)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.50 to 1.0.51.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.50...1.0.51)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-24 08:03:31 -08:00
dependabot[bot] 0100ba6fa4
build(deps): bump futures from 0.3.25 to 0.3.26 (#2263)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.25 to 0.3.26.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.25...0.3.26)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-24 08:03:15 -08:00
Eliza Weisman 89ee318e0b
inbound: Introduce a `policy::LookupAddr` type (#2264)
Currently, the inbound crate's `GetPolicy` trait performs lookups on
`OrigDstAddr`s. This is not strictly correct: the `OrigDstAddr` newtype
is intended to specifically represent an address that was returned by a
`getsockopt(..., SO_ORIGINAL_DST, ...)` call. Various uses of `OrigDstAddr`,
especially in the inbound policy stack, overload `OrigDstAddr` for other
uses so that other addresses must be coerced into an `OrigDstAddr`.

To simplify the inbound proxy's use of address types:

- Policy types (e.g. `ServerPolicy`, `AllowPermit`, etc) now represent
  addresses as `ServerAddr` rather than `OrigDstAddr`.
- The `inbound::policy` module now defines a `LookupAddr` newtype, which
  is passed as an argument to `GetPolicy`.
- The inbound accept and direct stacks provide `ExtractParam` impls to
  the `policy::Discover` layer indicating how `LookupAddr`s are produced
  from targets in that stack. This makes the different behaviors between
  the normal accept stack and the direct stack more explicit at the
  callsite.
2023-02-24 08:03:00 -08:00
Eliza Weisman 93b06e6940
inbound: Remove default policies (#2204)
inbound: Remove default policies (#2204)

When an inbound proxy accepts a connection, it needs a policy for the
inbound port. If there is no known policy, then a default inbound policy
is provided from the proxy's configuration. This presents a few
problems:

* The server-configured policy may be more restrictive than the default
  policy. This could all unauthorized connections to race into a
  pod (when ports are not documented in the the pod spec).
* The server-configured protocol configuration may differ from the
  proxy's configuration.
* The way the proxy reads environment configuration for default
  policies is inefficient for large port ranges. See
  linkerd/linkerd2#9803

## Solution

To simplify the proxy's configuration surface area, we remove synthetic
default policy configurations so that all inbound policies are provided
by the policy controller. This means that the proxy will require either
a cached policy or a response from the policy controller before it can
accept a connection. Proxies always discover and retain cached policies
for all ports documented in `LINKERD2_PROXY_INBOUND_PORTS`. Other
policies are discovered dynamically and cached for the discovery
idle timeout.

This inbound proxy now requires a policy controller client configuration.
Tests are updated to use a mock policy controller service.

The following environment variables are no longer used:

* `LINKERD2_PROXY_INBOUND_PORTS_REQUIRE_IDENTITY`
* `LINKERD2_PROXY_INBOUND_PORTS_REQUIRE_TLS`
* `LINKERD2_PROXY_INBOUND_DEFAULT_POLICY`
* `LINKERD2_PROXY_POLICY_CLUSTER_NETWORKS

See also #2186
2023-02-23 18:11:40 -08:00
Eliza Weisman c186d88a11
inbound: connections wait for ServerPolicy discovery (#2186)
Currently, when the inbound proxy gets a connection to a port it has not
previously configured, it starts doing ServerPolicy discovery for that
port but then uses the default policy until the configuration is synced
from the control plane. This behavior is fairly complex to reason about
and surprising for users. Therefore, we would like to remove this
defaulting behavior from the inbound proxy.

This branch changes how the inbound proxy performs policy discovery.
Rather than spawning the lookup in a background task and using a default
policy until a policy is discovered, the inbound proxy will now wait
until the policy for a port is discovered before continuing to process a
connection on that port. In terms of the inbound stack, this means that
policy discovery is now a `MakeService` rather than a `NewService`. The
cache is still used when a policy discovery watch has already been
started.

This branch does not *completely* remove all default policy
configuration from the proxy. The default policy environment variables
are still used when the proxy is configured without a control plane
policy controller address. However, this mode will be removed in a
subsequent PR.
2023-02-23 13:32:30 -08:00
Oliver Gould f21228b853
outbound: Add a policy router (#2251)
To support per-request backend routing, this change adds a policy router
to the outbound stack. No configurations currently cause the policy
router to be used, but this change updates the configuration types to
support HTTPRoute routing.

Furthermore, filters configured on routes are not yet applied.
2023-02-22 10:47:46 -08:00
dependabot[bot] 2132dd5ce1
build(deps): bump clang-sys from 1.4.0 to 1.6.0 (#2259)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.4.0 to 1.6.0.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/commits)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-22 10:09:25 -08:00
dependabot[bot] 164eb8e6ac
build(deps): bump once_cell from 1.17.0 to 1.17.1 (#2258)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.17.0 to 1.17.1.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.17.0...v1.17.1)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-22 10:08:56 -08:00
dependabot[bot] 7ace76185e
build(deps): bump hyper from 0.14.23 to 0.14.24 (#2257)
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.23 to 0.14.24.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.24/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.23...v0.14.24)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-22 10:08:42 -08:00
dependabot[bot] b807a6b169
build(deps): bump tj-actions/changed-files from 35.5.5 to 35.5.6 (#2256)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.5.5 to 35.5.6.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](5a331a4999...23e3c4300c)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-22 10:08:15 -08:00
Oliver Gould 3709c39390
outbound: Introduce a new outbound-route watch type (#2250)
To support new outbound route types, this change adds an
`outbound::http::Routes` type that is an enum of available logical
router configurations. Accordingly, the Profile-specific routing
stack is moved to a new `http::logical::profile` sub-module.

This sets the stage to further adapt routing configurations.
2023-02-21 17:19:40 -08:00
Oliver Gould 1222ee60f7
Use `ExtractParam` in `http::NewHeaderFromTarget` (#2255)
To allow callers of `NewHeaderFromTarget` to provide bespoke param
implementations, this change updates the module to use `ExtractParam`
instead of `Param`.
2023-02-20 17:40:30 -08:00
dependabot[bot] 642bd3b0a0
build(deps): bump signal-hook-registry from 1.4.0 to 1.4.1 (#2254)
Bumps [signal-hook-registry](https://github.com/vorner/signal-hook) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/vorner/signal-hook/releases)
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vorner/signal-hook/compare/registry-v1.4.0...registry-v1.4.1)

---
updated-dependencies:
- dependency-name: signal-hook-registry
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-20 07:39:09 -08:00
dependabot[bot] f006e2c318
build(deps): bump fastrand from 1.8.0 to 1.9.0 (#2252)
Bumps [fastrand](https://github.com/smol-rs/fastrand) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/smol-rs/fastrand/releases)
- [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/fastrand/compare/v1.8.0...v1.9.0)

---
updated-dependencies:
- dependency-name: fastrand
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-20 07:38:15 -08:00
dependabot[bot] b2eadebf70
build(deps): bump http from 0.2.8 to 0.2.9 (#2253)
Bumps [http](https://github.com/hyperium/http) from 0.2.8 to 0.2.9.
- [Release notes](https://github.com/hyperium/http/releases)
- [Changelog](https://github.com/hyperium/http/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http/compare/v0.2.8...v0.2.9)

---
updated-dependencies:
- dependency-name: http
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-20 07:37:57 -08:00
Oliver Gould 6c579830a6
outbound: Decouple outbound HTTP server from logical target (#2249) 2023-02-19 20:39:01 -08:00
Oliver Gould 8be0f9b6cb
http: Improve timeout module (#2248)
* Add comparison impls for `ResponseTimeout`;
* Use `ExtractParam` to build `ResponseTimeout` values.
2023-02-18 12:21:13 -08:00
Oliver Gould df40a10e94
http: Replace `classify::CanClassify` with `Param` (#2247)
We have no need for a one-off trait for the response classificatino
module. This change removes the `CanClassify` trait and updates the
`NewClassify` module to take an `ExtractParam` for greater flexibility.
`app::core` is updated with type aliases for our current uses.
2023-02-18 11:36:54 -08:00
Eliza Weisman c2e6c03ed8
http: Use `ExtractParam` in `NewNormalizeUri` (#2245)
This change refactors `http::NormalizeUri` to take an `ExtractParam` for
extracting the default authority, rather than requiring `T:
Param<DefaultAuthority>`. This way, we can remove the wrapper target
type that's used only to temporarily add this `Param` impl.
2023-02-18 11:29:17 -08:00
dependabot[bot] 50b106b076
build(deps): bump actions/checkout from 3.2.0 to 3.3.0 (#2130)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](755da8c3cf...ac59398561)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-17 17:00:58 -08:00
dependabot[bot] 76b2feefb3
build(deps): bump anyhow from 1.0.68 to 1.0.69 (#2216)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.68 to 1.0.69.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.68...1.0.69)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-17 16:59:53 -08:00
Oliver Gould 0a965fc1a0
dev: Remove docker config mount (#2246) 2023-02-17 15:59:20 -08:00
dependabot[bot] 19c3b8c83e
build(deps): bump serde_json from 1.0.91 to 1.0.93 (#2217)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.91 to 1.0.93.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.91...v1.0.93)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-17 13:35:50 -08:00
dependabot[bot] bf64a2b585
build(deps): bump tj-actions/changed-files from 35.5.4 to 35.5.5 (#2242)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.5.4 to 35.5.5.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](74338865c1...5a331a4999)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-17 13:35:35 -08:00
dependabot[bot] 023f232842
build(deps): bump thread_local from 1.1.4 to 1.1.7 (#2243)
Bumps [thread_local](https://github.com/Amanieu/thread_local-rs) from 1.1.4 to 1.1.7.
- [Release notes](https://github.com/Amanieu/thread_local-rs/releases)
- [Commits](https://github.com/Amanieu/thread_local-rs/compare/1.1.4...1.1.7)

---
updated-dependencies:
- dependency-name: thread_local
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-17 13:35:22 -08:00
Eliza Weisman de97063b50
trace: never log access log spans to stdout (#2244)
Currently, `tracing` spans are used to record HTTP access log entries.
These spans are recorded at the `INFO` level, in order to allow the use
of fast-path filtering for the more verbose `DEBUG` and `TRACE` levels
when running with the default tracing filter configuration
(`linkerd=info`) --- if no events will ever be enabled at a given level,
`tracing` can skip them more efficiently than when events with some
targets are enabled at that level. The access log spans are recorded
with a separate `_access_log` target, so that the default `linkerd=info`
filter does not enable them.

However, when running with a custom filter configuration that enables
`info` for all targets, the access log spans will be enabled even if
access logging is disabled. This means that these spans will be recorded
when they may not be needed to generate an access log. They also make
logs significantly more verbose when `DEBUG` events are enabled (only
debug and higher events will occur in these spans), which can make the
logs harder to parse.

This branch changes the per-layer filter used by the stdout logging
layer to explicitly disable the `_access_log` trace target, regardless
of the rest of the filter configuration. This way, a custom filter
configuration that globally enables the `INFO` level will not enable the
access log spans, and the spans will not be included in stdout logs even
if access logging is enabled. Since the layer that actually generates
the access log has its own, separate per-layer filter, the access log
spans will still be enabled _for that layer_, if and only if access
logging is actually enabled.

A potential longer-term solution is to rewrite the access logging code
to not use `tracing`, as was originally proposed. At the time, we opted
to use `tracing` to generate the access log because it seemed desirable
to have a single set of diagnostics that can generate different outputs.
However, in practice, it's probably better to keep general-purpose
debugging logs and access logging separate, as they are separate
concerns. A purpose-built implementation of access logging could avoid
issues like this one, and would also probably be more efficient --- it
wouldn't need to allocate strings to represent access log spans, and
could instead just store structured data that's formatted directly to
the output. But, the filtering change solves the immediate problem.
2023-02-17 13:25:28 -08:00
Oliver Gould dcfc21c34d
gateway: Fix URI form for gatewayed HTTP/1 requests (#2241)
A recent change broke how gateways handle the URI of upgraded HTTP/1.1
requests. This problem was caused by normaling the URI twice (once in
the inbound HTTP server and once in the outbound HTTP server).

To fix this, the outbound HTTP server has been removed from the cached
stack so that it is not included in gatewayed services.

Furthermore, to test this, this change splits `push_http_client` from
the `Outbound::push_http_endpoint` stack and `push_http_tcp_server` from
the `Inbound::push_http_server` stack. This allows us to write tests
that mock HTTP-level services.
2023-02-17 11:01:18 -08:00
Oliver Gould ed394d91b7
outbound: Fix ingress-mode proxy (#2240)
In 91bbbd4, we added a `LoadShed` onto the ingress proxy. This causes
errors while discovery is pending.

This change removes the ingress `LoadShed` layer and documents the
back-pressure and error handling semantics of the ingress stack. This
change also adds a descriptive error wrapper onto the inbound server
stack.
2023-02-16 18:23:30 -08:00
dependabot[bot] 2c91038887
build(deps): bump jemalloc-sys (#2229)
Bumps [jemalloc-sys](https://github.com/tikv/jemallocator) from 0.5.2+5.3.0-patched to 0.5.3+5.3.0-patched.
- [Release notes](https://github.com/tikv/jemallocator/releases)
- [Changelog](https://github.com/tikv/jemallocator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tikv/jemallocator/compare/tikv-jemalloc-sys-0.5.2...tikv-jemalloc-sys-0.5.3)

---
updated-dependencies:
- dependency-name: jemalloc-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-16 08:02:56 -08:00
dependabot[bot] faf64c9bed
build(deps): bump tj-actions/changed-files from 35.5.1 to 35.5.4 (#2239)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.5.1 to 35.5.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](210cc839c2...74338865c1)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-16 08:37:48 -07:00
Oliver Gould bd610264a4
Add client-policy types (#2236)
This change introduces the client policy types that will be used to
configure outbound proxies. These types are analogous to those used for
server policy in inbound proxies. They support integration with the
Kubernetes Gateway API.

These types are relatively sketchy at the moment. They will change as
they are integrated into the outbound proxy.
2023-02-15 13:50:42 -08:00
Oliver Gould 91bbbd4a2b
outbound: Refactor stack target types (#2210)
To support a new configuration API, we want to update the outbound stack
to compose the following stacks:

* Routing discovery;
* Protocol switching;
* Protocol-specific logical routing;
* Concrete forwarding / load balancing;
* Endpoint dispatching.

To do this, we update the existing stacks so that:

* each stack accepts generic input targets (with enumerated `Param`
  requirements); and
* each module defines all necessary internal target types, including
  those passed to inner stacks.

This decouples stack configuration from the specifics of discovery:
tests can satisfy stack parameters without having to stub out all of the
discovery types and we are setup to change discovery implementation
details moving forward.

This requires updating the gateway and ingress stacks in addition to the
(default) sidecar stack.

Generally, we prefer duplicating similar target types to coupling
modules. In followup changes, we can introduce macros to reduce `Param`
boilerplate if necessary.

Changes include:

* A new `Gateway` builder type (analogous to `Inbound` and `Outbound`);
* A new `Gateway::server` stack handles discovery and protocol
  switching;
* Service cacheing is performed for the http and opaq stacks (to
  preserve load balancer state, etc) using only the information needed
  for those stacks;
* Concrete stacks provide the only data-plane queue. This enables
  outer stacks to be cloneable. This also means that the concrete stacks
  are the only stacks with stack metrics;
* The `switch_logical` module is removed;
* The `http::detect` module is moved into the `protocol` stack, which
  now supports discovery-hinted protocols to bypass detection.
* The `logical` and `endpoint` modules are removed in favor of
  protocol-specific modules.
2023-02-15 13:49:10 -08:00
Eliza Weisman 922d9dd925
integration: add test for direct HTTP connections (#2234)
This branch adds a new integration test for direct connections
transporting hinted HTTP/2. This was factored out from #2209. I did
*not* add the test that actually reproduces linkerd/linkerd2#9888 in
this PR, as it would fail.
2023-02-15 10:09:59 -08:00
Oliver Gould caf242c39b
Rename linkerd-server-policy to linkerd-proxy-server-policy (#2235)
Sets up for a new client-policy crate.
2023-02-15 08:11:49 -08:00
Eliza Weisman 69a7f1a63a
integration: add destination update builders (#2232)
Currently, updates sent by the mock destination controller used in
integration tests are constructed by a number of free functions with
names like `destination_add_tls` and `destination_add_h2_hinted` and so
on. These functions determine different aspects of the generated
destination updates, such as protocol hints, labels, and TLS identity.
This works acceptably for the current integration tests. However, in
order to add new tests, it may be desirable to add additional
destination configurations. For example, for testing the handling of
various protocol hints on direct connections, it's necessary to set both
a protocol hint *and* a TLS identity (direct connections require TLS).
The current approach has separate functions for constructing updates
with a protocol hint and updates with TLS.

In order to make the construction of test destinations more flexible,
this PR replaces the current approach with a builder. This way, the
logic for constructing updates with different attributes can be composed
more easily, without having to implement separate constructors for the
entire matrix of (protocol hint, TLS identity, addr labels, addr set
labels) combinations.

This was factored out of PR #2209 so that the test framework changes can
be merged separately.
2023-02-14 19:20:47 -08:00
Oliver Gould 3b64159035
outbound: Improve discovery cache test (#2233)
The discovery stack no longer caches its inner stacks. Instead, it
caches discovery resolutions. The modules tests were not updated to
reflect this difference.

This change updates the cache test to measure discovery lookups and not
service creation.
2023-02-14 15:00:04 -08:00
Oliver Gould c07e638c9e
test: Disable tap::rejects_incorrect_identity_when_identity_is_expected (#2231)
The `tap::rejects_incorrect_identity_when_identity_is_expected` test
passes incorrectly. This change updates the test to assert the expected
condition; and then the test is skipped (like the other tap integration
tests). These tests all need discovery configuration to operate as
intended.

This change also updates the devcontainer.json spec with an increased
memory limit. This is necessary to run tests.
2023-02-14 13:15:59 -08:00
Oliver Gould a765433422
gateway: Split 'http' and 'opaq' modules (#2230)
To setup for upcoming stack refactoring, this change organizes the
gateway crate into `http` and `opaq` modules.
2023-02-14 11:46:35 -08:00
Oliver Gould 29d28e79e9
outbound: Split sidecar and ingress stack modules (#2227)
In preparation for new target types, this change splits the ingress and
proxy stack builders into ingress and sidecar modules, respectively.
2023-02-13 21:27:09 -08:00
Oliver Gould 5769989ee2
outbound: Lint stack target types (#2226)
To support new discovery types, we want to changing how stacks are
composed so that target types are domain-specific and configuration is
instrumented via target wrappers.

This change sets up stack changes as follows:

* `Layers::push_flatten_new` is a utility for flatten "cascaded"
  `NewService` types by providing a target for child `NewService` impls.
* Target/Param constraints and impls are made uniform.
* In tests, we provide new test-specific target types.
* Configuration types are made ready to be stored in a cache.
2023-02-13 20:03:00 -08:00
Eliza Weisman 4d31e6d8ff
Update `linkerd2-proxy-api` to v0.8.0 (#2223)
v0.8.0 of `linkerd2-proxy-api` adds a `ProtocolHint::Opaque` variant to
the Destination API to indicate that an endpoint will not perform
application-level processing. This branch updates the proxy to depend on
v0.8.0. Currently, the `Opaque` hint does not change the proxy's
behavior; this will be added in a follow-up branch.
2023-02-13 17:25:44 -08:00
Oliver Gould 89e49a6991
outbound: Split out separate 'opaq' modules (#2224)
We differentiate "opaque" and "tcp" stacks because some TCP stacks may
also apply for HTTP traffic. We shorten this in code as "opaq" because
it's unambiguous and the same length as "http"

* Add an `outbound::opaq` module for opaque stacks. ("opaq").
* Rename `push_tcp_{logical,concrete,forward}` to `push_opaq_*`
* Rename `OpaqueTransport` to `TaggedTransport` (Closes #2212).
2023-02-13 15:05:51 -08:00
Oliver Gould aa931b20f1
ci: Fix quotation in list-crates (#2225) 2023-02-13 14:41:40 -08:00
Oliver Gould 775fe53464
Use a cascading stack with protocol detection (#2221)
The protocol detection stack does not easily allow for its inner stack
to hold any per-target state because it commingles the (async) detection
result with the original target.

This change updates the detection module to use a cascading inner stack
so that the caller may determine how to use these targets. All
implementations lift the original targets to preserve the prior
behavior.
2023-02-13 12:45:05 -08:00
Oliver Gould 3198a93952
ci: Fix check-each workflow (#2222)
The check-each workflow times out while listing crates. This change
increases the timeout for the failing job and removes the
`list-changed-crates` action in favor of a direct invocation of the
shell script.
2023-02-13 12:44:20 -08:00
dependabot[bot] a332ec2b08
build(deps): bump heck from 0.4.0 to 0.4.1 (#2215)
Bumps [heck](https://github.com/withoutboats/heck) from 0.4.0 to 0.4.1.
- [Release notes](https://github.com/withoutboats/heck/releases)
- [Changelog](https://github.com/withoutboats/heck/blob/master/CHANGELOG.md)
- [Commits](https://github.com/withoutboats/heck/commits)

---
updated-dependencies:
- dependency-name: heck
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-13 10:00:50 -08:00
Eliza Weisman 9fc2e1745e
downgrade `miniz_oxide` from yanked 0.6.4 to 0.6.2 (#2219)
Versions 0.6.4 and 0.6.3 of the `miniz_oxide` crate have been yanked
from crates.io, due to an accidental MSRV violation (see
Frommi/miniz_oxide#135). `miniz_oxide` is a dependency of `flate2`,
which is used by `linkerd-app-integration` for testing gzip metrics
compression.

Because the lockfile currently contains a yanked version of
`miniz_oxide`, our `cargo deny` checks are failing on CI. This PR
downgrades the `miniz_oxide` dependency to 0.6.2, which is not yanked.
This should fix CI.
2023-02-10 09:11:55 -08:00
Oliver Gould 5240c9fb9e
Simplify the `Resolve` trait alias (#2218)
`Resolve` trait references typically include many additional type
constraints. This change moves this boilerplate into the trait alias so
it need not be repeated.
2023-02-09 08:14:22 -08:00
Matei David feb4ec994e
Add traceparent header parsing for w3c tracecontext (#2179)
Support OpenTracing context propagation. Proxy will now participate in traces that are started with the `w3c` traceparent header, and will emit spans if the request should be sampled. Previously supported format (`b3`) can still be used, provided no other tracing headers are present on the request. When parsing trace headers, the proxy will now attempt to parse a `w3c` header first, and if not present, will attempt to parse `b3`.

Signed-off-by: Matei David <matei@buoyant.io>
2023-02-09 10:07:43 +00:00
Oliver Gould 0ce21db891
Disable broken tests (#2214)
We have a previously-flakey test that now fails consistently. Disable
it.
2023-02-08 22:01:03 -08:00
Oliver Gould c88be00417
Split outbound test modules into files (#2213)
Several outbound modules include embedded stack tests. This change moves
these submodules into distinct files.
2023-02-08 21:52:52 -08:00
dependabot[bot] 14e0a51236
build(deps): bump async-trait from 0.1.63 to 0.1.64 (#2205)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.63 to 0.1.64.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.63...0.1.64)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-08 09:14:25 -08:00
dependabot[bot] e5ff7f0ddc
build(deps): bump miniz_oxide from 0.6.2 to 0.6.4 (#2207)
Bumps [miniz_oxide](https://github.com/Frommi/miniz_oxide) from 0.6.2 to 0.6.4.
- [Release notes](https://github.com/Frommi/miniz_oxide/releases)
- [Changelog](https://github.com/Frommi/miniz_oxide/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Frommi/miniz_oxide/compare/0.6.2...0.6.4)

---
updated-dependencies:
- dependency-name: miniz_oxide
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-08 09:14:07 -08:00
dependabot[bot] 477863c599
build(deps): bump tokio from 1.24.2 to 1.25.0 (#2206)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.24.2 to 1.25.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/commits/tokio-1.25.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-08 09:12:20 -08:00
dependabot[bot] e893640a66
build(deps): bump tj-actions/changed-files from 35.4.4 to 35.5.1 (#2211)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.4.4 to 35.5.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](57d9664f8e...210cc839c2)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-07 09:03:00 -07:00
dependabot[bot] c8cbf7f76e
build(deps): bump cc from 1.0.78 to 1.0.79 (#2203)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.78 to 1.0.79.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.78...1.0.79)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-01 15:36:11 -08:00
dependabot[bot] 420168ead4
build(deps): bump bytes from 1.3.0 to 1.4.0 (#2202)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.3.0...v1.4.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-01 14:00:20 -08:00
dependabot[bot] 5e42d1f021
build(deps): bump either from 1.8.0 to 1.8.1 (#2192)
Bumps [either](https://github.com/bluss/either) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/bluss/either/releases)
- [Commits](https://github.com/bluss/either/compare/1.8.0...1.8.1)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-01 13:59:27 -08:00
Oliver Gould 5a406512b5
http: Remove `Clone` requirement in servers (#2200)
The HTTP server currently shares an inner HTTP service across all
connections, requiring that the inner service is `Clone` (and therefore
buffered).

Furthermore, the HTTP server instruments requests with a `ClientHandle`
so that the inner service can signal connection teardown. This
client-specific context would, ideally, be available as the stack is
constructed and not only when processing requests.

To remove the `Clone` requirement, this change updates `ServerHttp` to
create a new inner service for each connection. It is then left up to
the inner stack to determine whether is provided via cloning or
otherwise.

This change does **not** change the shape of any existing stacks.
Instead, we add a `Stack::unlift_new` utility (the opposite of
`Stack::lift_new`). "Unlift" seems less ambiguous than "drop".
2023-02-01 08:04:29 -08:00
dependabot[bot] 7f3cc35b17
build(deps): bump arbitrary from 1.2.2 to 1.2.3 (#2191)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/commits/v1.2.3)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 11:12:41 -08:00
dependabot[bot] 08f95f38c9
build(deps): bump libfuzzer-sys from 0.4.5 to 0.4.6 (#2193)
Bumps [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer) from 0.4.5 to 0.4.6.
- [Release notes](https://github.com/rust-fuzz/libfuzzer/releases)
- [Changelog](https://github.com/rust-fuzz/libfuzzer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/libfuzzer/compare/0.4.5...0.4.6)

---
updated-dependencies:
- dependency-name: libfuzzer-sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 09:48:52 -08:00
Oliver Gould 66e9f08a1d
gateway: Unify discovery for HTTP & opaque stacks (#2198)
In its normal sidecar configuration, the outbound stack does discovery
for each target ip:port. The result of this discovery will influences
protocol detection, etc.

In the gateway configuration, however, discovery is pushed into each
distinct stack so that lookups for HTTP services are deferred until
we've terminated the connection and wired it into the per-request
outbound stack.

This difference was primarily motivated by a limitation of the way that
discovery information is cached: because the outermost target includes
per-client metadata, we can't cache a discovery stack based on that
target type. #2195 removes this limitation so that we can update the
gateway stack to look more like a typical outbound stack (which will
allow for easier code reuse as new discovery types are introduced).

This change:

1. Splits the gateway stack into smaller functions for readability.
2. Extracts discovery from the HTTP and opaque stacks.
3. Renames gateway types for clarity.
2023-01-30 19:25:02 -08:00
Oliver Gould 7d3102cddf
core: Rename Stack utilities for clarity (#2199)
`Stack::push_request_filter` may apply to either `Service` or
`NewService` stacks. The use of "request" makes it sound like it only
applies to services. This change renames it to `Stack::push_filter`.

`Stack::push_idle_cache` is renamed to `Stack::push_new_idle_cached` to
reflect that the stack is a `NewService`.
2023-01-30 14:51:18 -08:00
Oliver Gould 57df368e5e
Cache discovery results independently of proxy stacks (#2195)
The current discovery module resolves profiles from the control plane
and injects the response into the inner stack. So, in order to cache
this result, the entire stack must be cached. This prevents us from
interacting with discovery in any stack that includes
higher-cardinality, peer-specific metadata. This limitation is
unnecessary and cumbersome to work around.

This change adds an `app::core::NewCachedDiscover` module that
internally manages resolutions independently of the proxy stack.

This change does **not** remove any other existing caches, though it's
expected that several of these caches are no longer necessary.

Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2023-01-30 13:11:26 -08:00
Oliver Gould 17ce52e177
Add `NewQueueWithoutTimeout` (#2196)
While most of our data-path queues need some sort of failfast behavior,
the queues used to request & synchronize discovery information do not
need to enforce timeouts locally.

This change updates the `stack::queue` module with a new
`NewQueueWithoutTimeout` type that does not go into failfast.

This change introduces new param types for capacity and timeout
configuration. The `QueueConfig` type is moved back into the
`app::core::config` module. Furthermore, all config field names are
updated to replace "buffer" with "queue".
2023-01-30 12:30:00 -08:00
Oliver Gould ce30064465
Rename MakeThunk to NewThunk (#2197)
We don't use `MakeThunk` as a `MakeService` anywhere, so it's clearer to
call it `NewThunk`.

This change also adds a `ThunkClone` service that clones a single
response for each call.
2023-01-28 15:52:58 -08:00
dependabot[bot] c4e22757ba
build(deps): bump matches from 0.1.9 to 0.1.10 (#2189)
Bumps [matches](https://github.com/SimonSapin/rust-std-candidates) from 0.1.9 to 0.1.10.
- [Release notes](https://github.com/SimonSapin/rust-std-candidates/releases)
- [Commits](https://github.com/SimonSapin/rust-std-candidates/commits)

---
updated-dependencies:
- dependency-name: matches
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-26 09:01:56 -07:00
dependabot[bot] b33d9047f4
build(deps): bump ahash from 0.8.2 to 0.8.3 (#2188)
Bumps [ahash](https://github.com/tkaitchuck/ahash) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/tkaitchuck/ahash/releases)
- [Commits](https://github.com/tkaitchuck/ahash/compare/v0.8.2...v0.8.3)

---
updated-dependencies:
- dependency-name: ahash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-26 09:01:37 -07:00
dependabot[bot] 3eb48873a0
build(deps): bump rustls from 0.20.7 to 0.20.8 (#2187)
Bumps [rustls](https://github.com/rustls/rustls) from 0.20.7 to 0.20.8.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.20.7...v/0.20.8)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-26 09:01:20 -07:00
Eliza Weisman 55ba563b11
add target metadata to error contexts (#2162)
In order to improve the proxy's debuggability, it's desirable that the
errors logged by the proxy and/or returned to HTTP clients include
relevant information about where in the proxy that error occurred.
Currently, buffer layers are constructed with a string "name" parameter
that describes which part of the stack is behind that buffer, so that
the fail-fast errors returned by those buffers can contain the stack
layer's name. While this provides some useful context, it isn't a
complete solution, as this context is only added to fail-fast errors,
and not other errors such as I/O errors, Additionally, these names only
indicate where in the stack the error occurred, and don't provide
metadata describing *which instance* of that stack layer produced the
error --- e.g., there is no context describing the client address,
logical address, concrete address, or endpoint (as appropriate) that
produced the error.

Instead, we should annotate *all* errors with the following information:

- The name of the stack layer where the error occurred
- Target metadata including the logical, concrete, and endpoint
  addresses (as appropriate)

This branch uses the `AnnotateError` middleware added in PR #2158 to add
layers to the proxy which annotate errors with metadata extracted from targets.
Furthermore, this branch removes the existing name parameter from buffer
layers, and replaces them with the `AnnotateError` middleware, which is
used to add target metadata *and* a string name describing the stack
layer to all errors. Additionally, the various `HttpRescue`
implementations have been changed slightly, so that when a specific
cause is found for an error, the entire error chain is still formatted
in the HTTP response `l5d-error` header, rather than _just_ the cause.
This ensures that all context added to an error is included in the
formatted message, rather than just the root cause (which lacks target
metadata).
2023-01-25 16:20:45 -08:00
dependabot[bot] d97aaa6e32
build(deps): bump linkerd/dev from 38 to 39 (#2175)
Bumps [linkerd/dev](https://github.com/linkerd/dev) from 38 to 39.
- [Release notes](https://github.com/linkerd/dev/releases)
- [Commits](https://github.com/linkerd/dev/compare/v38...v39)

---
updated-dependencies:
- dependency-name: linkerd/dev
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-25 14:03:42 -08:00
dependabot[bot] 890b52798f
build(deps): bump unicode-bidi from 0.3.8 to 0.3.10 (#2183)
Bumps [unicode-bidi](https://github.com/servo/unicode-bidi) from 0.3.8 to 0.3.10.
- [Release notes](https://github.com/servo/unicode-bidi/releases)
- [Commits](https://github.com/servo/unicode-bidi/commits/v0.3.10)

---
updated-dependencies:
- dependency-name: unicode-bidi
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-25 14:03:16 -08:00
dependabot[bot] e1f5340002
build(deps): bump derive_arbitrary from 1.2.2 to 1.2.3 (#2184)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/commits/v1.2.3)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-25 14:02:34 -08:00
dependabot[bot] f786383f06
build(deps): bump which from 4.3.0 to 4.4.0 (#2185)
Bumps [which](https://github.com/harryfei/which-rs) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/harryfei/which-rs/releases)
- [Commits](https://github.com/harryfei/which-rs/compare/4.3.0...4.4.0)

---
updated-dependencies:
- dependency-name: which
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-25 14:02:10 -08:00
Oliver Gould e377726943
Update HTTP error responder to log version info (#2182)
The HTTP error responder already knows whether a request is considered
HTTP/1, HTTP/2, or gRPC.

This change updates these log messages to include the relevant protocol
information for each failed request.

Furthermore, this change updates the `http::Version` enum to implement
`Debug` with full HTTP version strings like "HTTP/1" and "HTTP/2". We
then remove the version for debug spans, as it's needlessly verbose for
most uses. When debugging, we can identify the version based on specific
events in a span. It need not exist on every event on the span.
2023-01-24 13:39:12 -08:00
Zahari Dichev a6f992998d
Add the `meshtls-boring-fips` feature flag (#2168)
The `boring` crate exposes a `fips` feature flag, but this feature
was not exposed by the `linkerd-meshtls-boring`. This change makes
it theoretically possible to build the proxy in this mode. This feature
is NOT tested in CI due to the fussiness of the required build
environment and longer-term maintenance concerns.

Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
2023-01-24 12:11:19 -08:00
dependabot[bot] 9a5be91de1
build(deps): bump tokio from 1.24.1 to 1.24.2 (#2178)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.24.1 to 1.24.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/commits)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-24 09:45:42 -07:00
dependabot[bot] 2ef28e80c4
build(deps): bump async-trait from 0.1.61 to 0.1.63 (#2177)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.61 to 0.1.63.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.61...0.1.63)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-24 09:45:24 -07:00
dependabot[bot] aebee32cbe
build(deps): bump windows_aarch64_msvc from 0.42.0 to 0.42.1 (#2176)
Bumps windows_aarch64_msvc from 0.42.0 to 0.42.1.

---
updated-dependencies:
- dependency-name: windows_aarch64_msvc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-24 09:45:04 -07:00
Oliver Gould bf88671592
stack: Unify AnnotateError and MapErr (#2180)
This change updates the `map_err` stack module, adding a `NewMapErr`
type that obtains an error mapper (implementing the `WrapErr` trait)
from targets.
2023-01-23 17:05:48 -08:00
Oliver Gould 2a1c6a9957
Simplify profile discovery (#2170)
The profile discovery module--especially on the outbound side--requires
some structural changes to begin adding more logic to it.

1. The outbound::discover module is simplified. It is no longer specific
   to sockets in the accept stack and may be used for other request
   types. Its cache, buffer, and stack metrics are no longer coupled to
   the discovery stack.
2. The `profiles::Discovery` module determines whether discovery is
   allowed (via a predicate). This has logic has been moved into the
   calling stack explicitly so that the discovery module always performs
   discovery as requested.
3. The `profiles::Discovery` module now wraps a two-tiered `NewService`,
   the first of which takes the original target value and the second of
   which takes the profile resolution.
   * Stack manipulation layers are added to preserve the original
     behavior of passing tuples.
4. The `GetProfile` trait has been simplified by specifying a request
   type.
2023-01-23 16:12:50 -08:00
Eliza Weisman 5434242f1f
configure buffers from target `Param`s (#2173)
Buffer services in the proxy are constructed with a queue capacity and a
failfast timeout. Currently, these parameters are configured based on
the proxy's config structs (parsed from environment variables), and each
buffer `Layer` is created with a fixed buffer configuration depending on
which stack it is used in, so all buffers constructed by that stack will
have the same configuration. In the future, we would like to allow these
parameters to be configured per-target by the control plane.

In order to support configuring buffer parameters dynamically, this
branch introduces a `NewQueue` type, which implements `NewService` and
produces `Buffer` + `FailFast` services configured using a `QueueConfig`
`Param` extracted from the target. This will allow target types to
implement `Param<QueueConfig>` to dynamically configure the buffer
parameters.

In order to continue supporting the current state of the world (i.e.,
fixed buffer parameters) without adding them to every target type,
`NewQueue`'s `NewService` implementation is generic over an
`ExtractParam` implementation to control how the `QueueConfig` params
are extracted from targets. Convenience constructors are provided for
`()` as the `ExtractParam` type, expecting that `T: Param<QueueConfig>`,
and for `CloneParam` as the `ExtractParam` type, to clone the same set
of params every time a buffer is constructed. Currently, all `NewQueue`
layers constructed in the proxy use `CloneParam`, to continue
implementing the existing fixed configuration behavior.

Co-authored-by: Oliver Gould <ver@buoyant.io>
2023-01-20 22:41:31 -08:00
dependabot[bot] 7206bcec93
build(deps): bump windows_x86_64_msvc from 0.42.0 to 0.42.1 (#2164)
Bumps [windows_x86_64_msvc](https://github.com/microsoft/windows-rs) from 0.42.0 to 0.42.1.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows_x86_64_msvc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 11:56:30 -08:00
dependabot[bot] 9ddb752e0c
build(deps): bump tj-actions/changed-files from 35.4.1 to 35.4.4 (#2172)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.4.1 to 35.4.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](487675b843...57d9664f8e)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 11:15:10 -08:00
dependabot[bot] bcb2648cdb
build(deps): bump proc-macro2 from 1.0.49 to 1.0.50 (#2165)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.49 to 1.0.50.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.49...1.0.50)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 11:13:40 -08:00
dependabot[bot] 9ace06cf05
build(deps): bump bumpalo from 3.11.1 to 3.12.0 (#2166)
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.11.1 to 3.12.0.
- [Release notes](https://github.com/fitzgen/bumpalo/releases)
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.11.1...3.12.0)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 11:13:15 -08:00
Eliza Weisman 09cdcdf9fd
orig_proto: don't set `connection: close` on errors (#2171)
When the inbound proxy's `ClientRescue` layer sees a client connection
error for a connection initiated for an HTTP/1 request, it will add a
`connection: close` header to the synthesized error response. The
`ClientRescue` layer is not currently aware of whether an HTTP/1 request
was recieved from an upstream proxy as part of an orig-proto upgrade or
not. If the request _is_ part of an orig-proto upgrade, the server side
of the inbound proxy is an HTTP/2 server. When Hyper's HTTP/2 server
sees a response with a `connection: close` header, it emits a warning,
because `connection` headers are illegal in HTTP/2.

The inbound proxy *does* strip any headers set by the server that are
illegal in HTTP/2 when performing an orig-proto downgrade. However, this
stripping occurs only when handling a response received from the server
peer, and *not* on synthesized error responses generated by the proxy.
Therefore, if a connection-level error occurs on a downgraded request,
the inbound proxy will log an illegal header warning. This can be
confusing to users, as this is not the actual root cause of the error
(see linkerd/linkerd2#10090).

This branch changes the `ErrorRespond` middleware to only add
`connection: close` to synthesized HTTP/1 responses that are *not* part
of an orig-proto downgrade. This is accomplished by adding a request
extension which is set in the `orig_proto::Downgrade` layer indicating
that a request was downgraded to the original protocol. The 
`connection: close` header is now only added if the downgrade marker
extension is not present, and the warning is now no longer logged.

Fixes linkerd/linkerd2#10090
2023-01-20 09:07:33 -08:00
dependabot[bot] 08b77610d3
build(deps): bump tj-actions/changed-files from 35.3.1 to 35.4.1 (#2153)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.3.1 to 35.4.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](c2296c1b04...487675b843)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-17 16:14:37 -08:00
Oliver Gould 6da7fd6e24
Fix proxy-core dependencies (#2163) 2023-01-17 16:03:13 -08:00
Eliza Weisman 2c8ba221a2
stack: add `AnnotateError` middleware (#2158)
This branch introduces a new `AnnotateError` middleware in
`linkerd-stack`, for adding context to errors returned by a wrapped
`Service`.

The `annotate_error` module contains a new trait, `ErrorContext`, which
is implemented by types that provide context to `Error`s by wrapping
them with a new `Error` type, and the `AnnotateError` middleware itself.
The middleware consists of a `NewService` which extracts a `Param`
implementing `ErrorContext` and produces a `Service`, which wraps any
errors returned by the inner `Service` using that `ErrorContext`.

Additionally, `NewAnnotateError` may be constructed with an
`ExtractParam` implementation that configures how an `ErrorContext`
implementation is produced from a target type, when the `Param`s
themselves do not implement `ErrorContext`. Finally, a pre-made
implementation of `ErrorContext`, called `FromTarget`, that produces new
errors when the error type implements `From<(&T, Error)>` is provided.
In this case, the error type can implement `From` with the appropriate
target type, and the `annotate_error::layer_from_target` constructor can
be used, without requiring an `ExtractParam` implementation to be
written for each stack.

This change was extracted from PR #2154.
2023-01-13 15:22:00 -08:00
dependabot[bot] 916256dc58
build(deps): bump prost-build from 0.11.5 to 0.11.6 (#2149)
Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.11.5 to 0.11.6.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.5...v0.11.6)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-12 11:54:24 -08:00
dependabot[bot] c82b2900bb
build(deps): bump prost from 0.11.5 to 0.11.6 (#2148)
Bumps [prost](https://github.com/tokio-rs/prost) from 0.11.5 to 0.11.6.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.5...v0.11.6)

---
updated-dependencies:
- dependency-name: prost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-12 11:54:09 -08:00
dependabot[bot] bceb1112ec
build(deps): bump prost-types from 0.11.5 to 0.11.6 (#2147)
Bumps [prost-types](https://github.com/tokio-rs/prost) from 0.11.5 to 0.11.6.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.5...v0.11.6)

---
updated-dependencies:
- dependency-name: prost-types
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-12 11:53:53 -08:00
Oliver Gould 6d2abbcf26
Parameterize the load balancer stack (#2142)
The load balancer/discovery modules in the concrete stacks use
hardcoded ewma parameters.

In preparation for making these parameters discoverable via the
API, this change modifies the balancer to accept this configuration
as a target param.

Furthermore, this change cleans up the balancer API to simplify the
way that we convert Resolve resolutions to Discover streams for
the balancer: the discovery buffer is spawned immediately instead
of using a MakeService. In practice, we flatten the 'make' future
into the discovery stream in the readycache, anyway; so there's no
functional difference.

This change removes the discovery watchdog timeout. We've never
seen it triggered in practice.
2023-01-10 14:47:32 -08:00
dependabot[bot] 8dad0af021
build(deps): bump tokio from 1.24.0 to 1.24.1 (#2144)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.24.0 to 1.24.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.24.0...tokio-1.24.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-10 08:01:45 -08:00
dependabot[bot] f262fc94fb
build(deps): bump regex from 1.7.0 to 1.7.1 (#2145)
Bumps [regex](https://github.com/rust-lang/regex) from 1.7.0 to 1.7.1.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.7.0...1.7.1)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-10 07:49:46 -08:00
dependabot[bot] d5bf15516b
build(deps): bump try-lock from 0.2.3 to 0.2.4 (#2139)
Bumps [try-lock](https://github.com/seanmonstar/try-lock) from 0.2.3 to 0.2.4.
- [Release notes](https://github.com/seanmonstar/try-lock/releases)
- [Commits](https://github.com/seanmonstar/try-lock/compare/v0.2.3...v0.2.4)

---
updated-dependencies:
- dependency-name: try-lock
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 12:22:23 -08:00
Oliver Gould 4fb0d14c90
Disable musl in release build (#2143)
Our cross-compiled musl builds do not currently compile (OOM). To
unblock releases, this change disables these builds for now.
2023-01-09 12:21:26 -08:00
Oliver Gould dd9372dad1
Update routers to support per-request backend distributions (#2095)
The outbound logical stacks use a single `profiles::split` for all
requests. Therefore, request routing can't influence a request's backend
selection.

This change replaces the service-profile-specific router and split
implementations in favor of the newer, more general router (577ad52) and
distribute (47678e6) modules. Unlike the service-profile-router, the
generic router is lazy and only creates route services as a matching
request is found.

Buffers are moved into the concrete stack so that balancers may be
shared by more than one route.

This change also updates trace contexts so that we include
logical/endpoint metadata as early as possible.

Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2023-01-09 10:02:16 -08:00
dependabot[bot] 86feff9d65
build(deps): bump actions/upload-artifact from 3.1.1 to 3.1.2 (#2137)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](83fd05a356...0b7f8abb15)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 09:56:58 -08:00
dependabot[bot] 6978a35697
build(deps): bump async-trait from 0.1.60 to 0.1.61 (#2138)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.60 to 0.1.61.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.60...0.1.61)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 09:56:45 -08:00
dependabot[bot] 3fff4290d4
build(deps): bump glob from 0.3.0 to 0.3.1 (#2140)
Bumps [glob](https://github.com/rust-lang/glob) from 0.3.0 to 0.3.1.
- [Release notes](https://github.com/rust-lang/glob/releases)
- [Commits](https://github.com/rust-lang/glob/compare/0.3.0...0.3.1)

---
updated-dependencies:
- dependency-name: glob
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 09:23:57 -08:00
dependabot[bot] 01a8c84066
build(deps): bump ipnet from 2.7.0 to 2.7.1 (#2141)
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.7.0 to 2.7.1.
- [Release notes](https://github.com/krisprice/ipnet/releases)
- [Changelog](https://github.com/krisprice/ipnet/blob/master/RELEASES.md)
- [Commits](https://github.com/krisprice/ipnet/commits)

---
updated-dependencies:
- dependency-name: ipnet
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 09:23:39 -08:00
Eliza Weisman c56ac5664a
outbound: separate TCP logical and concrete stacks (#2136)
This branch refactors the outbound proxy to have separate
`push_tcp_logical` and `push_tcp_concrete` methods, rather than building
both stacks in `push_tcp_logical`. This makes the TCP outbound proxy
more consistent with how the HTTP outbound proxy is built (as it has
separate methods for building the logical and concrete stacks).

No functional changes, just moving code around.
2023-01-06 16:15:03 -08:00
Oliver Gould 5498b36d7c
Implement `Hash` for configuration types (#2135)
We want to use our configuration types as hash keys in some places. To
do so, we need to implement `Hash`.
2023-01-06 14:19:19 -08:00
Oliver Gould 04172054b5
stack: Fix `NewSpawnWatch::layer` type signature (#2134)
The spawn watch layer helper wasn't actually usable. This has been
fixed.

This change also fixes stack's tokio feature flags (needed for watch).
2023-01-06 13:57:27 -08:00
Oliver Gould 577ad5285a
Support router-scoped caches (#2128)
`stack::NewRouter` reuses its inner stack for all `Router` instances.
This makes it difficult to implement a cache that is scoped just to the
router (and not shared across all routers).

This change:

* Removes the `linkerd_stack::router` module;
* Adds the `linkerd-router` crate;
* Adds an `ahash` cache implementation to the router crate with a
  convenience layer;
* The `RecognizeRoute` is now called `SelectRoute`;
* `Router` is now called `OneshotRoute`;
* `NewOneshotRoute` now can use an `ExtractParam` to acquire a
   `SelectRoute`; and
* A `NewCloneService` module is added to support lifting a stack
  to be shared across routes (i.e. to preserve the prior behavior).
2023-01-06 12:28:15 -08:00
dependabot[bot] c153d4b9a0
build(deps): bump prettyplease from 0.1.22 to 0.1.23 (#2133)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.22 to 0.1.23.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.22...0.1.23)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-06 08:22:10 -08:00
dependabot[bot] a2e866e9a0
build(deps): bump tokio from 1.23.1 to 1.24.0 (#2132)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.23.1 to 1.24.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.23.1...tokio-1.24.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-06 08:21:58 -08:00
dependabot[bot] 2b06e850af
build(deps): bump actions/download-artifact from 3.0.1 to 3.0.2 (#2131)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](9782bd6a98...9bc31d5ccc)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-06 08:21:46 -08:00
Oliver Gould 153f99f23e
Make `Profile::clone` cheaper (#2127)
We may clone `Profile` structures when processing a watch. Currently,
the profile includes vectors that we need not copy every time we clone a
profile.

This change replaces these heap-allocated vectors (`Vec`) instances with
reference-counted slices (`Arc<[_]>`) so that `Profile::clone` calls
need not allocate.
2023-01-05 16:36:47 -08:00
Oliver Gould 91bfb62f4f
stack: Eliminate the `UpdateWatch` trait (#2123)
We've learned that there's no need for a specialized `UpdateWatch`
trait. Instead, this change uses a hierarchy of `NewService` instances.
The first `NewService` builds an inner stack for each watch, so that we
can isolate per-watch scope; and the second builds an inner stack each
time the watch updates.

The `NewSpawnWatch::layer_into` builder alters the update-level target
type by combining the watch-level and update-level target types.
2023-01-05 13:56:39 -08:00
Oliver Gould 47678e6cfb
distribute: Add a backend cache (#2122)
`NewDistribute` will be used to implement per-route traffic distribution
policies so that, for instance, each request route may use a different
traffic split. In this setup, we want each instance--re-constructed as
configuration changes--to reuse a common set of concrete services so
that load balancer state need not be lost when a policy changes.

This change adds a `distribute::BackendCache` module that produces a
`NewDistribute` for an updated, cached set of backends.
2023-01-05 12:19:01 -08:00
dependabot[bot] b5e1b85274
build(deps): bump tj-actions/changed-files from 35.1.0 to 35.3.1 (#2124)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35.1.0 to 35.3.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](0626c3f940...c2296c1b04)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-05 07:59:14 -08:00
dependabot[bot] 8c275827dd
build(deps): bump tokio from 1.23.0 to 1.23.1 (#2125)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.23.0 to 1.23.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.23.0...tokio-1.23.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-05 07:58:23 -08:00
Oliver Gould 491fd50a08
Make NameAddr cheaper to clone (#2121)
The `dns::Name` type holds a `String`. We currently use `NameAddr`s
throughout the proxy, cloning them frequently.

To reduce allocation overhead of these clones, this change updates
`NameAddr` to hold its inner `Name` by reference.
2023-01-04 19:20:27 -08:00
Oliver Gould 3d84a72823
Make all comment delimeters uniform (#2120)
Purely superficial.
2023-01-04 19:00:18 -08:00
Oliver Gould b1be983baf
Rename Stack::push_cache to push_idle_cache (#2119)
Follow-up from 5d0b2260 (#2118)
2023-01-04 18:46:12 -08:00
Oliver Gould 5d0b2260f0
Rename `linkerd-cache` to `linkerd-idle-cache` (#2118)
We have multiple types of caching middlewares. The `linkerd-cache`
middleware has the specific behavior that it implements idle eviction.
This change renames the module and types to reflect this distinction.
2023-01-04 16:40:54 -08:00
dependabot[bot] b29bd8d5be
build(deps): bump arbitrary from 1.2.0 to 1.2.2 (#2117)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.2.0 to 1.2.2.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/commits)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-04 10:22:02 -08:00
dependabot[bot] f0b4833fd7
build(deps): bump derive_arbitrary from 1.2.1 to 1.2.2 (#2116)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/commits)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-04 10:21:45 -08:00
Eliza Weisman e8fca29679
stack: add `Lazy` middleware (#2102)
This branch adds a `Lazy` service in `linkerd-stack`, which calls a
`NewService` to create an inner `Service` the first time it's polled to
readiness. The `Lazy` service can be cloned, sharing the inner service
with an `Arc<Mutex<...>>`, and the first clone to be polled will create
the inner service.
2023-01-03 08:35:59 -08:00
dependabot[bot] 89a8e74cc3
build(deps): bump DavidAnson/markdownlint-cli2-action (#2114)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/DavidAnson/markdownlint-cli2-action) from 8.0.0 to 9.0.0.
- [Release notes](https://github.com/DavidAnson/markdownlint-cli2-action/releases)
- [Commits](d57f8bd576...5b7c9f74fe)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 11:08:11 -05:00
dependabot[bot] e72c17edef
build(deps): bump serde_json from 1.0.89 to 1.0.91 (#2106)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.89 to 1.0.91.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.89...v1.0.91)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 11:06:46 -05:00
dependabot[bot] 08a6274b23
build(deps): bump once_cell from 1.16.0 to 1.17.0 (#2105)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.16.0 to 1.17.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.16.0...v1.17.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 11:06:30 -05:00
dependabot[bot] 69f9af170a
build(deps): bump prettyplease from 0.1.21 to 0.1.22 (#2104)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.21 to 0.1.22.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.21...0.1.22)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-30 09:57:44 -08:00
dependabot[bot] a16e7e985b
build(deps): bump prost-build from 0.11.4 to 0.11.5 (#2087)
* build(deps): bump prost-build from 0.11.4 to 0.11.5

Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.11.4 to 0.11.5.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.4...v0.11.5)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* regen protos

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2022-12-29 15:38:18 -08:00
Eliza Weisman f46c6b2534
stack: Add `SpawnWatch` middleware (#2101)
This branch adds an implementation of a middleware that watches a
`watch::Receiver` of targets and builds a new service when the watch is
updated. The current state of the inner service is broadcast over a
second watch to any clones of the `SpawnWatch` service.
2022-12-29 15:28:03 -08:00
dependabot[bot] 2a62763441
build(deps): bump serde from 1.0.150 to 1.0.152 (#2097)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.150 to 1.0.152.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.150...v1.0.152)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-29 09:25:00 -08:00
dependabot[bot] de8593cbbd
build(deps): bump libc from 0.2.138 to 0.2.139 (#2098)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.138 to 0.2.139.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.138...0.2.139)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-29 09:24:33 -08:00
dependabot[bot] e4b3813f7d
build(deps): bump prost-types from 0.11.2 to 0.11.5 (#2099)
Bumps [prost-types](https://github.com/tokio-rs/prost) from 0.11.2 to 0.11.5.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.2...v0.11.5)

---
updated-dependencies:
- dependency-name: prost-types
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-29 09:24:13 -08:00
Oliver Gould 316963f25c
Split `outbound::tcp::logical::tests` into a file (#2096)
The TCP logical stack tests are nearly twice a long as the TCP logical
stack. This change moves the tests module into a distinct file for
readability.
2022-12-28 11:02:47 -08:00
Eliza Weisman fd0bff1959
Propagate backpressure from buffers when in failfast (#2091)
When a buffer is in failfast, all requests are eagerly drained from the buffer
so that callers have no ability to detect that the buffer is unavailable.

This change adds a new type of failfast layer, `FailFast::layer_gated`, that
can be used to wrap buffers such that the buffer appears unavailable as soon as
failfast is activated.

This change also adds a new `LoadShed` layer that can be used to fail requests
when a buffer is at capacity. Moving this load shedding 'up' the stack will
allow the `Distribute` middleware to consider alternate backend services when
one service is in failfast.
2022-12-28 10:30:03 -08:00
dependabot[bot] 81e6e8c640
build(deps): bump prost from 0.11.3 to 0.11.5 (#2090)
Bumps [prost](https://github.com/tokio-rs/prost) from 0.11.3 to 0.11.5.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.3...v0.11.5)

---
updated-dependencies:
- dependency-name: prost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-28 10:03:05 -08:00
dependabot[bot] ee522fc7cb
build(deps): bump anyhow from 1.0.66 to 1.0.68 (#2089)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.66 to 1.0.68.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.66...1.0.68)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-28 10:02:31 -08:00
dependabot[bot] f8dc9376ea
build(deps): bump syn from 1.0.105 to 1.0.107 (#2088)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.105 to 1.0.107.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.105...1.0.107)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-28 10:02:12 -08:00
Oliver Gould a582ea012d
config: Decouple HTTP and TCP buffering config (#2078)
Proxies may buffer TCP connections while waiting for policy discovery
and may buffer HTTP requests while waiting for a shared resource (like a
load balancer).

Previously, a single configuration was used to configure both TCP and
HTTP buffers. This change decouples these configurations in preparation
for allowing balancer configuration to be configured by the control
plane.

Furthermore, this change updates the stack builder to always construct
buffers with failfast and spawnready to (1) ensure that all buffers
enforce the proper backpressure and load shedding semantics and (2) to
reduce boilerplate.

This change updates the proxy's environment configuration as follows:

* Removed `LINKERD2_PROXY_INBOUND_DISPATCH_TIMEOUT`
* Removed `LINKERD2_PROXY_OUTBOUND_DISPATCH_TIMEOUT`
* Added `LINKERD2_PROXY_INBOUND_DISCOVERY_IDLE_TIMEOUT`
* Added `LINKERD2_PROXY_OUTBOUND_DISCOVERY_IDLE_TIMEOUT`
* Removed `LINKERD2_PROXY_BUFFER_CAPACITY`
* Removed `LINKERD2_PROXY_INBOUND_ROUTER_MAX_IDLE_AGE`
* Removed `LINKERD2_PROXY_OUTBOUND_ROUTER_MAX_IDLE_AGE`
* Added `LINKERD2_PROXY_INBOUND_HTTP_QUEUE_CAPACITY`
* Added `LINKERD2_PROXY_INBOUND_HTTP_FAILFAST_TIMEOUT`
* Added `LINKERD2_PROXY_OUTBOUND_TCP_QUEUE_CAPACITY`
* Added `LINKERD2_PROXY_OUTBOUND_TCP_FAILFAST_TIMEOUT`
* Added `LINKERD2_PROXY_OUTBOUND_HTTP_QUEUE_CAPACITY`
* Added `LINKERD2_PROXY_OUTBOUND_HTTP_FAILFAST_TIMEOUT`
* Added `LINKERD2_PROXY_OUTBOUND_HTTP1_CONNECTION_POOL_IDLE_TIMEOUT`
2022-12-27 14:32:29 -08:00
Oliver Gould efaf3c202e
outbound: Split the concrete and logical stack builders (#2092)
Currently the `push_http_logical` commingles the concrete stack (load
balancers, etc) and the logical stack (routing). This change splits
these builders into separate functions.
2022-12-23 19:43:23 -08:00
Oliver Gould 0ef1f841cd
Introduce a 'distribute' stack module (#2085)
This change introduces a new, currently unused, stack module that
generalizes the functionality in `service_profiles::split` in
anticipation of upcoming request routing functionality.

Unlike `split` the `Distribute` service is designed to be used with
cloneable stacks. It does **not** handle dynamic updates. Updating
is to be handled centrally by rebuilding stacks rather than updating
them internally.

Furthermore, the distribute module now supports a variety of
distribution strategies over a shared set of inner services. This will
allow each route to change its load distribution strategy. The
strategies include:

* Empty: causes requests the route to be unavailable
* First Available: selects the first available inner service, i.e. to
  implement failover.
* Random Available: randomly selects over a weighted set of inner
  services. Unavailable services are ignored.
2022-12-23 11:30:51 -08:00
dependabot[bot] 6daa9f5082
build(deps): bump itoa from 1.0.4 to 1.0.5 (#2084)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.4...1.0.5)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-22 11:07:55 -05:00
dependabot[bot] 74c6604adb
build(deps): bump num_cpus from 1.14.0 to 1.15.0 (#2083)
Bumps [num_cpus](https://github.com/seanmonstar/num_cpus) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/seanmonstar/num_cpus/releases)
- [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.14.0...v1.15.0)

---
updated-dependencies:
- dependency-name: num_cpus
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-22 11:07:40 -05:00
dependabot[bot] 10143057fa
build(deps): bump proc-macro2 from 1.0.47 to 1.0.49 (#2082)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.47 to 1.0.49.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.47...1.0.49)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-22 11:07:25 -05:00
dependabot[bot] 4b143f09ce
build(deps): bump quote from 1.0.20 to 1.0.23 (#2081)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.20 to 1.0.23.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.20...1.0.23)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-22 11:07:13 -05:00
dependabot[bot] d6aa8d7849
build(deps): bump tj-actions/changed-files from 34.6.1 to 35.1.0 (#2077)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.6.1 to 35.1.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](3b6c057cd8...0626c3f940)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 12:17:51 -05:00
dependabot[bot] b7c6a2295e
build(deps): bump thiserror from 1.0.37 to 1.0.38 (#2075)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.37 to 1.0.38.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.37...1.0.38)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 12:17:30 -05:00
dependabot[bot] 1ce74e49d6
build(deps): bump async-trait from 0.1.59 to 0.1.60 (#2074)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.59 to 0.1.60.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.59...0.1.60)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 12:17:17 -05:00
dependabot[bot] 37542e7133
build(deps): bump ryu from 1.0.10 to 1.0.12 (#2073)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.10 to 1.0.12.
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.10...1.0.12)

---
updated-dependencies:
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 12:17:03 -05:00
dependabot[bot] e1c187149d
build(deps): bump unicode-ident from 1.0.5 to 1.0.6 (#2072)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.5 to 1.0.6.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.5...1.0.6)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 12:16:47 -05:00
dependabot[bot] 727f23e20d
build(deps): bump actions/checkout from 3.1.0 to 3.2.0 (#2064)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](93ea575cb5...755da8c3cf)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-16 07:39:50 -08:00
dependabot[bot] 432d205809
build(deps): bump cc from 1.0.77 to 1.0.78 (#2069)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.77 to 1.0.78.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.77...1.0.78)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-15 08:48:57 -07:00
dependabot[bot] 56994df04d
build(deps): bump tj-actions/changed-files from 34.5.3 to 34.6.1 (#2068)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.5.3 to 34.6.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](74dc2e8a78...3b6c057cd8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-15 08:48:40 -07:00
dependabot[bot] 71fbdf93a5
build(deps): bump ipnet from 2.5.1 to 2.7.0 (#2066)
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.5.1 to 2.7.0.
- [Release notes](https://github.com/krisprice/ipnet/releases)
- [Changelog](https://github.com/krisprice/ipnet/blob/master/RELEASES.md)
- [Commits](https://github.com/krisprice/ipnet/commits/2.7.0)

---
updated-dependencies:
- dependency-name: ipnet
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 07:24:22 -08:00
Oliver Gould adf06c492d
release: Produce static binaries (#2057)
This change adds release targets for static binaries (using musl).
Expected checksec outputs are split per platform, to account
for cross-compiled MUSL binaries.

With this change, we retain debug symbols in an separate file. So
they can be loaded in a debugger.

This change bumps the devcontainer to v38 to include just-cargo fixes.
2022-12-12 16:10:11 -08:00
dependabot[bot] 194ca211b5
build(deps): bump prost-build from 0.11.3 to 0.11.4 (#2063)
* build(deps): bump prost-build from 0.11.3 to 0.11.4

Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.11.3 to 0.11.4.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.3...v0.11.4)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* regenerate protos

* regen transport header protos

* whoops apparently i regenerated the transport-header protos 'wrong'

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2022-12-12 13:28:14 -08:00
dependabot[bot] 7d5678c205
build(deps): bump serde from 1.0.149 to 1.0.150 (#2062)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.149 to 1.0.150.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.149...v1.0.150)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 07:47:06 -07:00
dependabot[bot] f27be7f53d
build(deps): bump derive_arbitrary from 1.2.0 to 1.2.1 (#2061)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/commits)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 07:46:49 -07:00
dependabot[bot] 8cf68263c5
build(deps): bump tokio from 1.22.0 to 1.23.0 (#2060)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.22.0 to 1.23.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.22.0...tokio-1.23.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 07:46:34 -07:00
dependabot[bot] 9d85e1cd15
build(deps): bump tj-actions/changed-files from 34.5.1 to 34.5.3 (#2059)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.5.1 to 34.5.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](baaf598b46...74dc2e8a78)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 07:46:18 -07:00
dependabot[bot] acdaac0d35
build(deps): bump linkerd/dev from 37 to 38 (#2058)
Bumps [linkerd/dev](https://github.com/linkerd/dev) from 37 to 38.
- [Release notes](https://github.com/linkerd/dev/releases)
- [Commits](https://github.com/linkerd/dev/compare/v37...v38)

---
updated-dependencies:
- dependency-name: linkerd/dev
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 07:46:02 -07:00
dependabot[bot] d36e3a75ef
build(deps): bump cc from 1.0.73 to 1.0.77 (#2053)
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.73 to 1.0.77.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.73...1.0.77)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 09:16:08 -07:00
dependabot[bot] 85f6ec9328
build(deps): bump serde from 1.0.148 to 1.0.149 (#2054)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.148 to 1.0.149.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.148...v1.0.149)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 09:15:50 -07:00
dependabot[bot] 009c5c64ea
build(deps): bump prost from 0.11.2 to 0.11.3 (#2055)
Bumps [prost](https://github.com/tokio-rs/prost) from 0.11.2 to 0.11.3.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.2...v0.11.3)

---
updated-dependencies:
- dependency-name: prost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 09:15:34 -07:00
dependabot[bot] 635c2651e0
build(deps): bump syn from 1.0.103 to 1.0.105 (#2056)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.103 to 1.0.105.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.103...1.0.105)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 09:15:18 -07:00
dependabot[bot] 0e47acf31e
build(deps): bump itertools from 0.10.3 to 0.10.5 (#2049)
Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.10.3 to 0.10.5.
- [Release notes](https://github.com/rust-itertools/itertools/releases)
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/commits)

---
updated-dependencies:
- dependency-name: itertools
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-08 08:29:23 -07:00
Oliver Gould f9f02999fa
dev: v37 (#2048)
Reduce build boilerplate with `just-*` utils.
2022-12-08 07:19:44 -08:00
dependabot[bot] 6098a9dd9a
build(deps): bump tonic from 0.8.2 to 0.8.3 (#2052)
Bumps [tonic](https://github.com/hyperium/tonic) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.8.2...v0.8.3)

---
updated-dependencies:
- dependency-name: tonic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-08 07:12:57 -08:00
dependabot[bot] 5afb885449
build(deps): bump flate2 from 1.0.24 to 1.0.25 (#2051)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.24 to 1.0.25.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/commits/1.0.25)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-08 07:12:41 -08:00
dependabot[bot] 683bd41bee
build(deps): bump serde_json from 1.0.85 to 1.0.89 (#2045)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.85 to 1.0.89.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.85...v1.0.89)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-07 10:23:55 -07:00
dependabot[bot] 1a4e34cf5f
build(deps): bump tokio-macros from 1.8.0 to 1.8.2 (#2047)
Bumps [tokio-macros](https://github.com/tokio-rs/tokio) from 1.8.0 to 1.8.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-macros-1.8.0...tokio-macros-1.8.2)

---
updated-dependencies:
- dependency-name: tokio-macros
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-07 09:10:18 -07:00
dependabot[bot] 0a2c956d8d
build(deps): bump data-encoding from 2.3.2 to 2.3.3 (#2046)
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/ia0/data-encoding/releases)
- [Commits](https://github.com/ia0/data-encoding/commits)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-07 09:09:45 -07:00
dependabot[bot] 7bce8709e8
build(deps): bump regex-syntax from 0.6.27 to 0.6.28 (#2044)
Bumps [regex-syntax](https://github.com/rust-lang/regex) from 0.6.27 to 0.6.28.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/commits)

---
updated-dependencies:
- dependency-name: regex-syntax
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-07 09:09:27 -07:00
Oliver Gould 5f0384ed97
just: Fix justfile command silencing (#2016)
`@-` suppresses logging and ignores the command's exit code. We only want to
use `@` so that logging is suppressed but exit codes are fatal.

This change also fixes the list-changed-crates action to return an empty list when
no files have changed.
2022-12-06 12:23:35 -08:00
dependabot[bot] 933e0651a3
build(deps): bump boring-sys from 2.0.0 to 2.1.0 (#1948)
Bumps [boring-sys](https://github.com/cloudflare/boring) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/boring/commits/v2.1.0)

---
updated-dependencies:
- dependency-name: boring-sys
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-06 10:53:00 -07:00
dependabot[bot] e20dbe63ad
build(deps): bump jemalloc-sys (#2043)
Bumps [jemalloc-sys](https://github.com/tikv/jemallocator) from 0.5.1+5.3.0-patched to 0.5.2+5.3.0-patched.
- [Release notes](https://github.com/tikv/jemallocator/releases)
- [Changelog](https://github.com/tikv/jemallocator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tikv/jemallocator/compare/tikv-jemalloc-sys-0.5.1...tikv-jemalloc-sys-0.5.2)

---
updated-dependencies:
- dependency-name: jemalloc-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-06 09:09:51 -08:00
dependabot[bot] 8d631a7f20
build(deps): bump aho-corasick from 0.7.19 to 0.7.20 (#2042)
Bumps [aho-corasick](https://github.com/BurntSushi/aho-corasick) from 0.7.19 to 0.7.20.
- [Release notes](https://github.com/BurntSushi/aho-corasick/releases)
- [Commits](https://github.com/BurntSushi/aho-corasick/compare/0.7.19...0.7.20)

---
updated-dependencies:
- dependency-name: aho-corasick
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-06 09:09:27 -08:00
dependabot[bot] 39e2ff7d40
build(deps): bump indexmap from 1.9.1 to 1.9.2 (#2041)
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.9.1 to 1.9.2.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/bluss/indexmap/compare/1.9.1...1.9.2)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-06 09:09:07 -08:00
dependabot[bot] 6bf090aece
build(deps): bump tj-actions/changed-files from 34.5.0 to 34.5.1 (#2040)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.5.0 to 34.5.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](8a4cc4fbd6...baaf598b46)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-06 09:08:37 -08:00
dependabot[bot] 3b5e43f0aa
build(deps): bump libc from 0.2.137 to 0.2.138 (#2038)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.137 to 0.2.138.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.137...0.2.138)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-05 09:45:37 -07:00
dependabot[bot] 6eb4400c33
build(deps): bump async-trait from 0.1.58 to 0.1.59 (#2037)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.58 to 0.1.59.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.58...0.1.59)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-05 09:45:22 -07:00
dependabot[bot] 13cece7c6a
build(deps): bump boring from 2.0.0 to 2.1.0 (#2036)
Bumps [boring](https://github.com/cloudflare/boring) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/boring/commits/v2.1.0)

---
updated-dependencies:
- dependency-name: boring
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-05 09:45:08 -07:00
dependabot[bot] 09eba28d86
build(deps): bump libloading from 0.7.3 to 0.7.4 (#2033)
Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.7.3 to 0.7.4.
- [Release notes](https://github.com/nagisa/rust_libloading/releases)
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.7.3...0.7.4)

---
updated-dependencies:
- dependency-name: libloading
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-02 08:07:37 -07:00
dependabot[bot] 2e8cd459b3
build(deps): bump parking_lot_core from 0.9.4 to 0.9.5 (#2032)
Bumps [parking_lot_core](https://github.com/Amanieu/parking_lot) from 0.9.4 to 0.9.5.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/core-0.9.4...core-0.9.5)

---
updated-dependencies:
- dependency-name: parking_lot_core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-02 08:07:23 -07:00
dependabot[bot] e314021f03
build(deps): bump tonic-build from 0.8.2 to 0.8.4 (#2031)
Bumps [tonic-build](https://github.com/hyperium/tonic) from 0.8.2 to 0.8.4.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.8.2...v0.8.4)

---
updated-dependencies:
- dependency-name: tonic-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-02 08:07:09 -07:00
dependabot[bot] cf0128d647
build(deps): bump softprops/action-gh-release from 0.1.14 to 0.1.15 (#2030)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 0.1.14 to 0.1.15.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](1e07f43987...de2c0eb89a)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-02 08:06:55 -07:00
dependabot[bot] d180851329
build(deps): bump mio from 0.8.4 to 0.8.5 (#2028)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.4 to 0.8.5.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.4...v0.8.5)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-01 08:56:48 -07:00
dependabot[bot] 598294dff2
build(deps): bump bytes from 1.2.1 to 1.3.0 (#2027)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/commits)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-01 08:56:30 -07:00
dependabot[bot] 3a3b631391
build(deps): bump tracing from 0.1.36 to 0.1.37 (#2026)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.36 to 0.1.37.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.36...tracing-0.1.37)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-01 08:56:15 -07:00
dependabot[bot] ef18947c36
build(deps): bump serde from 1.0.147 to 1.0.148 (#2025)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.147 to 1.0.148.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.147...v1.0.148)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-30 12:00:34 -07:00
dependabot[bot] 1b696e99fc
build(deps): bump once_cell from 1.14.0 to 1.16.0 (#2023)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.14.0 to 1.16.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.14.0...v1.16.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-30 12:00:19 -07:00
dependabot[bot] 4ce2d2f052
build(deps): bump DavidAnson/markdownlint-cli2-action (#2022)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/DavidAnson/markdownlint-cli2-action) from 7.0.0 to 8.0.0.
- [Release notes](https://github.com/DavidAnson/markdownlint-cli2-action/releases)
- [Commits](e3969ef4ed...d57f8bd576)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-30 12:00:04 -07:00
dependabot[bot] 91a7460859
build(deps): bump tokio-boring from 2.1.4 to 2.1.5 (#2024)
Bumps [tokio-boring](https://github.com/cloudflare/boring) from 2.1.4 to 2.1.5.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/boring/commits)

---
updated-dependencies:
- dependency-name: tokio-boring
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-30 10:47:15 -08:00
dependabot[bot] a622a43210
build(deps): bump futures from 0.3.24 to 0.3.25 (#2019)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.24 to 0.3.25.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.24...0.3.25)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-29 14:17:24 -07:00
dependabot[bot] 2f4e47e9b2
build(deps): bump prost-build from 0.11.1 to 0.11.3 (#2018)
* build(deps): bump prost-build from 0.11.1 to 0.11.3

Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.11.1 to 0.11.3.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/prost-build-0.11.1...v0.11.3)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* regen protos to fix formatting diff

* also regen opencensus protos

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2022-11-29 14:08:28 -07:00
dependabot[bot] 03694c9771
build(deps): bump tokio from 1.21.2 to 1.22.0 (#2020)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.21.2 to 1.22.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.21.2...tokio-1.22.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-29 12:43:15 -08:00
Eliza Weisman e5f25ed283
meshtls-rustls: fix clippy `.ok().expect()` lints in tests (#2017)
This fixes a new Clippy lint for uses of `.ok().expect("...")` on
`Result`s that could just be replaced with `.expect("...")`. This
pattern shows up in a couple of the meshtls-rustls tests, and the Clippy
lint was causing CI to fail.
2022-11-29 12:42:40 -08:00
dependabot[bot] 79846c98da
build(deps): bump prost-types from 0.11.1 to 0.11.2 (#2014)
Bumps [prost-types](https://github.com/tokio-rs/prost) from 0.11.1 to 0.11.2.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/prost-types-0.11.1...v0.11.2)

---
updated-dependencies:
- dependency-name: prost-types
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-28 13:13:12 -05:00
dependabot[bot] ddf053af39
build(deps): bump ipnet from 2.5.0 to 2.5.1 (#2015)
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.5.0 to 2.5.1.
- [Release notes](https://github.com/krisprice/ipnet/releases)
- [Changelog](https://github.com/krisprice/ipnet/blob/master/RELEASES.md)
- [Commits](https://github.com/krisprice/ipnet/commits)

---
updated-dependencies:
- dependency-name: ipnet
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-28 12:54:35 -05:00
dependabot[bot] 6f59393812
build(deps): bump clang-sys from 1.3.3 to 1.4.0 (#2013)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.3.3 to 1.4.0.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/commits/v1.4.0)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-28 12:53:42 -05:00
dependabot[bot] a34598a23b
build(deps): bump tj-actions/changed-files from 34.4.4 to 34.5.0 (#2012)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.4.4 to 34.5.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](8a7336fb6f...8a4cc4fbd6)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-28 12:53:29 -05:00
dependabot[bot] 9adb5c3f5a
build(deps): bump anyhow from 1.0.65 to 1.0.66 (#2011)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.65 to 1.0.66.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.65...1.0.66)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-23 09:58:56 -05:00
dependabot[bot] e5de22f2cb
build(deps): bump base64 from 0.13.0 to 0.13.1 (#2010)
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.13.0 to 0.13.1.
- [Release notes](https://github.com/marshallpierce/rust-base64/releases)
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.13.0...v0.13.1)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-23 09:58:42 -05:00
dependabot[bot] 7094e56453
build(deps): bump getrandom from 0.2.7 to 0.2.8 (#2009)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.7 to 0.2.8.
- [Release notes](https://github.com/rust-random/getrandom/releases)
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.7...v0.2.8)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-23 09:58:28 -05:00
dependabot[bot] eb4adb0fb7
build(deps): bump async-trait from 0.1.57 to 0.1.58 (#2008)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.57 to 0.1.58.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.57...0.1.58)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-22 11:00:09 -05:00
dependabot[bot] 75033788e0
build(deps): bump prost from 0.11.0 to 0.11.2 (#2007)
Bumps [prost](https://github.com/tokio-rs/prost) from 0.11.0 to 0.11.2.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.11.0...v0.11.2)

---
updated-dependencies:
- dependency-name: prost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-22 10:59:53 -05:00
dependabot[bot] f7fba8a50d
build(deps): bump ppv-lite86 from 0.2.16 to 0.2.17 (#2006)
Bumps [ppv-lite86](https://github.com/cryptocorrosion/cryptocorrosion) from 0.2.16 to 0.2.17.
- [Release notes](https://github.com/cryptocorrosion/cryptocorrosion/releases)
- [Commits](https://github.com/cryptocorrosion/cryptocorrosion/commits)

---
updated-dependencies:
- dependency-name: ppv-lite86
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-22 10:59:36 -05:00
dependabot[bot] ff8b91fdfb
build(deps): bump tj-actions/changed-files from 34.4.2 to 34.4.4 (#2005)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.4.2 to 34.4.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](ef0a29048c...8a7336fb6f)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-21 10:28:49 -06:00
dependabot[bot] 28b8986d2e
build(deps): bump derive_arbitrary from 1.1.6 to 1.2.0 (#2004)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.1.6 to 1.2.0.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.1.6...v1.2.0)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-21 10:28:30 -06:00
dependabot[bot] f9107ae806
build(deps): bump rand_core from 0.6.3 to 0.6.4 (#2003)
Bumps [rand_core](https://github.com/rust-random/rand) from 0.6.3 to 0.6.4.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/rand_core-0.6.3...0.6.4)

---
updated-dependencies:
- dependency-name: rand_core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-21 10:28:14 -06:00
dependabot[bot] 6ced3baaf7
build(deps): bump tonic from 0.8.1 to 0.8.2 (#2002)
Bumps [tonic](https://github.com/hyperium/tonic) from 0.8.1 to 0.8.2.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.8.1...v0.8.2)

---
updated-dependencies:
- dependency-name: tonic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-21 10:27:59 -06:00
dependabot[bot] bfcccd0e68
build(deps): bump EmbarkStudios/cargo-deny-action from 1.3.2 to 1.4.0 (#2000)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.3.2 to 1.4.0.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](7257a18a9c...8a8607bd8e)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-21 10:27:41 -06:00
dependabot[bot] 64337ea45b
build(deps): bump serde from 1.0.144 to 1.0.147 (#1997)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.144 to 1.0.147.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.144...v1.0.147)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-17 08:52:41 -08:00
dependabot[bot] 6214b1819c
build(deps): bump tracing-subscriber from 0.3.15 to 0.3.16 (#1998)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.15 to 0.3.16.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.15...tracing-subscriber-0.3.16)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-17 08:51:45 -08:00
dependabot[bot] 17c34472c2
build(deps): bump hdrhistogram from 7.5.1 to 7.5.2 (#1999)
Bumps [hdrhistogram](https://github.com/HdrHistogram/HdrHistogram_rust) from 7.5.1 to 7.5.2.
- [Release notes](https://github.com/HdrHistogram/HdrHistogram_rust/releases)
- [Changelog](https://github.com/HdrHistogram/HdrHistogram_rust/blob/main/CHANGELOG.md)
- [Commits](https://github.com/HdrHistogram/HdrHistogram_rust/compare/v7.5.1...v7.5.2)

---
updated-dependencies:
- dependency-name: hdrhistogram
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-17 08:50:57 -08:00
dependabot[bot] 1c28a39290
build(deps): bump parking_lot_core from 0.9.3 to 0.9.4 (#1996)
Bumps [parking_lot_core](https://github.com/Amanieu/parking_lot) from 0.9.3 to 0.9.4.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/core-0.9.3...core-0.9.4)

---
updated-dependencies:
- dependency-name: parking_lot_core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-16 09:07:51 -07:00
dependabot[bot] 2919141336
build(deps): bump libc from 0.2.132 to 0.2.137 (#1995)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.132 to 0.2.137.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.132...0.2.137)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-16 09:07:34 -07:00
dependabot[bot] e5a9608c89
build(deps): bump cmake from 0.1.48 to 0.1.49 (#1994)
Bumps [cmake](https://github.com/rust-lang/cmake-rs) from 0.1.48 to 0.1.49.
- [Release notes](https://github.com/rust-lang/cmake-rs/releases)
- [Commits](https://github.com/rust-lang/cmake-rs/compare/0.1.48...0.1.49)

---
updated-dependencies:
- dependency-name: cmake
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-16 09:07:20 -07:00
dependabot[bot] e9d23149e9
build(deps): bump tj-actions/changed-files from 34.4.0 to 34.4.2 (#1993)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.4.0 to 34.4.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](94e6fba8d8...ef0a29048c)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-16 09:07:05 -07:00
dependabot[bot] 901023db2a
build(deps): bump regex from 1.6.0 to 1.7.0 (#1991)
Bumps [regex](https://github.com/rust-lang/regex) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.6.0...1.7.0)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-15 10:52:25 -07:00
dependabot[bot] 8d220ae564
build(deps): bump tokio from 1.21.0 to 1.21.2 (#1990)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.21.0 to 1.21.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.21.0...tokio-1.21.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-15 10:52:06 -07:00
dependabot[bot] 63c80460ca
build(deps): bump itoa from 1.0.2 to 1.0.4 (#1989)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.2 to 1.0.4.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.2...1.0.4)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-15 10:51:52 -07:00
dependabot[bot] 99095d0f81
build(deps): bump thiserror from 1.0.34 to 1.0.37 (#1988)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.34 to 1.0.37.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.34...1.0.37)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-14 09:10:05 -07:00
dependabot[bot] 7c9bf5da0d
build(deps): bump tower-layer from 0.3.1 to 0.3.2 (#1987)
Bumps [tower-layer](https://github.com/tower-rs/tower) from 0.3.1 to 0.3.2.
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-layer-0.3.1...tower-layer-0.3.2)

---
updated-dependencies:
- dependency-name: tower-layer
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-14 09:09:46 -07:00
dependabot[bot] 1e136ba933
build(deps): bump tj-actions/changed-files from 34.3.4 to 34.4.0 (#1986)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.3.4 to 34.4.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](3dbb79f467...94e6fba8d8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-14 09:09:30 -07:00
dependabot[bot] 2a16b762d7
build(deps): bump unicode-ident from 1.0.1 to 1.0.5 (#1964)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.1 to 1.0.5.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.1...1.0.5)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-14 09:09:15 -07:00
Kevin Leimkuhler a1f1d3bbdc
Allow Unicode-dfs-2016 for unicode-ident (#1973)
The other unicode packages don't use this license, so an exception should be
okay. This could also just be moved to licenses.allow.

Fixes #1964 checks.

Signed-off-by: Kevin Leimkuhler <kleimkuhler@icloud.com>
2022-11-11 17:38:55 -07:00
dependabot[bot] 4e1720430f
build(deps): bump num_cpus from 1.13.1 to 1.14.0 (#1985)
Bumps [num_cpus](https://github.com/seanmonstar/num_cpus) from 1.13.1 to 1.14.0.
- [Release notes](https://github.com/seanmonstar/num_cpus/releases)
- [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.13.1...v1.14.0)

---
updated-dependencies:
- dependency-name: num_cpus
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-11 10:58:05 -07:00
dependabot[bot] 6d38700742
build(deps): bump arbitrary from 1.1.7 to 1.2.0 (#1984)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.1.7 to 1.2.0.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.1.7...v1.2.0)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-11 10:57:50 -07:00
Oliver Gould 65e1afd4f5
Bump hyper & h2 (#1983)
Hyper v0.3.15 fixes a potential deadlock in HTTP/2 clients. For some
reason this wasn't automatically picked up by depenabot.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-11-10 12:37:52 -08:00
dependabot[bot] 7e2d9f5924
build(deps): bump smallvec from 1.9.0 to 1.10.0 (#1982)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-10 08:19:33 -07:00
dependabot[bot] 77b8e672a8
build(deps): bump syn from 1.0.99 to 1.0.103 (#1981)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.99 to 1.0.103.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.99...1.0.103)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-10 08:19:18 -07:00
dependabot[bot] 9cdb3c13af
build(deps): bump tonic-build from 0.8.0 to 0.8.2 (#1980)
Bumps [tonic-build](https://github.com/hyperium/tonic) from 0.8.0 to 0.8.2.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.8.0...v0.8.2)

---
updated-dependencies:
- dependency-name: tonic-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-09 14:49:57 -07:00
dependabot[bot] ea09711096
build(deps): bump rustls from 0.20.6 to 0.20.7 (#1979)
Bumps [rustls](https://github.com/rustls/rustls) from 0.20.6 to 0.20.7.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.20.6...v/0.20.7)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-09 14:49:43 -07:00
dependabot[bot] 4dba59b335
build(deps): bump tj-actions/changed-files from 34.3.2 to 34.3.4 (#1978)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.3.2 to 34.3.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](72d3bb8b33...3dbb79f467)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-09 14:49:28 -07:00
dependabot[bot] efc8bc2824
build(deps): bump tj-actions/changed-files from 34.1.1 to 34.3.2 (#1975)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 34.1.1 to 34.3.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](d0e44775cd...72d3bb8b33)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-08 08:26:56 -07:00
dependabot[bot] b10577c2e4
build(deps): bump extractions/setup-just from 1.4.0 to 1.5.0 (#1974)
Bumps [extractions/setup-just](https://github.com/extractions/setup-just) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/extractions/setup-just/releases)
- [Commits](aa5d15c144...95b912dc5d)

---
updated-dependencies:
- dependency-name: extractions/setup-just
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-08 08:26:38 -07:00
dependabot[bot] 647828c6a2
build(deps): bump unicode-normalization from 0.1.21 to 0.1.22 (#1977)
Bumps [unicode-normalization](https://github.com/unicode-rs/unicode-normalization) from 0.1.21 to 0.1.22.
- [Release notes](https://github.com/unicode-rs/unicode-normalization/releases)
- [Commits](https://github.com/unicode-rs/unicode-normalization/commits/v0.1.22)

---
updated-dependencies:
- dependency-name: unicode-normalization
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-08 08:26:20 -07:00
dependabot[bot] 0abc672210
build(deps): bump lock_api from 0.4.8 to 0.4.9 (#1976)
Bumps [lock_api](https://github.com/Amanieu/parking_lot) from 0.4.8 to 0.4.9.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/lock_api-0.4.8...lock_api-0.4.9)

---
updated-dependencies:
- dependency-name: lock_api
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-08 08:26:04 -07:00
dependabot[bot] 5201473280
build(deps): bump tj-actions/changed-files from 32.1.2 to 34.1.1 (#1972)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 32.1.2 to 34.1.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](1d6e210c97...d0e44775cd)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-04 11:29:13 -06:00
dependabot[bot] 456ac74f90
build(deps): bump actions/upload-artifact from 3.1.0 to 3.1.1 (#1966)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](3cea537223...83fd05a356)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-04 11:28:53 -06:00
dependabot[bot] 4e31350d7e
build(deps): bump actions/checkout from 3.0.2 to 3.1.0 (#1968)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.2 to 3.1.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3.0.2...93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-04 11:28:37 -06:00
dependabot[bot] 14b32131cc
build(deps): bump bumpalo from 3.11.0 to 3.11.1 (#1965)
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.11.0 to 3.11.1.
- [Release notes](https://github.com/fitzgen/bumpalo/releases)
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.11.0...3.11.1)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-04 11:28:19 -06:00
dependabot[bot] e116f190c6
build(deps): bump prettyplease from 0.1.19 to 0.1.21 (#1963)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.19 to 0.1.21.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.19...0.1.21)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-04 11:02:57 -06:00
dependabot[bot] d912d530ce
build(deps): bump actions/download-artifact from 3.0.0 to 3.0.1 (#1962)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](fb598a63ae...9782bd6a98)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-04 11:02:38 -06:00
Oliver Gould aca78892fc
dev: Update to dev:v32 with Rust 1.64 (#1961)
Use the new `dev:v32-rust-cross` image variant to support releases.

This change removes the checksec.sh helper script, moving that logic
into the justfile.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-10-21 10:21:12 -07:00
dependabot[bot] 01a75e8580
build(deps): bump anyhow from 1.0.64 to 1.0.65 (#1955)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.64 to 1.0.65.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.64...1.0.65)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-20 22:09:30 -07:00
dependabot[bot] 2024d0bac7
build(deps): bump libfuzzer-sys from 0.4.3 to 0.4.5 (#1960)
Bumps [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer) from 0.4.3 to 0.4.5.
- [Release notes](https://github.com/rust-fuzz/libfuzzer/releases)
- [Changelog](https://github.com/rust-fuzz/libfuzzer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/libfuzzer/compare/0.4.3...0.4.5)

---
updated-dependencies:
- dependency-name: libfuzzer-sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-20 22:09:10 -07:00
dependabot[bot] a2f4c8e2f4
build(deps): bump tokio-stream from 0.1.9 to 0.1.11 (#1954)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.9 to 0.1.11.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.9...tokio-stream-0.1.11)

---
updated-dependencies:
- dependency-name: tokio-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-20 22:08:09 -07:00
dependabot[bot] 31e80aa309
build(deps): bump tj-actions/changed-files from 32.0.0 to 32.1.2 (#1958)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 32.0.0 to 32.1.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](270645280a...1d6e210c97)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-18 09:06:51 -06:00
dependabot[bot] 92f679abe4
build(deps): bump tj-actions/changed-files from 29.0.9 to 32.0.0 (#1952)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 29.0.9 to 32.0.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](f7a56405a8...270645280a)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-12 12:44:51 -06:00
dependabot[bot] f2c1fa49ba
build(deps): bump arbitrary from 1.1.4 to 1.1.7 (#1953)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.1.4 to 1.1.7.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.1.4...v1.1.7)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-12 09:58:14 -06:00
dependabot[bot] fac12c0b66
build(deps): bump actions/checkout from 3.0.2 to 3.1.0 (#1951)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.2 to 3.1.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](2541b1294d...93ea575cb5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-12 09:52:38 -06:00
dependabot[bot] 1d7e2f78bb
build(deps): bump form_urlencoded from 1.0.1 to 1.1.0 (#1940)
Bumps [form_urlencoded](https://github.com/servo/rust-url) from 1.0.1 to 1.1.0.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/commits)

---
updated-dependencies:
- dependency-name: form_urlencoded
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-28 12:00:24 -07:00
Oliver Gould 511b3e3eb5
Fix inbound server label ambiguity (#1947)
As the proxy discovers policies, it refers to the source of the policy
configuration. This comes in two flavors: "default" (synthetic)
resources and resources that actually exist in the cluster.

When the proxy reads routes and authorization, the control plane uses
protobuf types to differentiate these states; but server resources are
described by a generic label map. When the proxy reads this label map,
it doesn't properly detect when default/synthetic resources are used and
it _always_ indicates that the resource is real.

This can lead to duplicate metrics when, for instance, the proxy
initially uses a default server and then obtains a default configuration
by discovery.

This change fixes this situation in two ways:

1. We now properly detect and differentiate default server
   configurations.
2. We update the hash and comparisons functions for the `Meta` type so
   that an improperly construct resource matches a default (i.e. when
   inserted into a label map).

Fixes linkerd/linkerd2#9502

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-09-28 11:18:49 -07:00
dependabot[bot] 1166f08b75
build(deps): bump codecov/codecov-action from 3.1.0 to 3.1.1 (#1945)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](81cd2dc814...d9f34f8cd5)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-20 14:34:15 +02:00
dependabot[bot] 9ffed14e0c
build(deps): bump tj-actions/changed-files from 29.0.7 to 29.0.9 (#1944)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 29.0.7 to 29.0.9.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](602081b5d9...f7a56405a8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-20 14:33:57 +02:00
dependabot[bot] 74ef574b13
build(deps): bump tj-actions/changed-files from 29.0.4 to 29.0.7 (#1943)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 29.0.4 to 29.0.7.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](c41b715259...602081b5d9)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-19 16:28:19 +02:00
dependabot[bot] 1cd7981fed
build(deps): bump which from 4.2.5 to 4.3.0 (#1938)
Bumps [which](https://github.com/harryfei/which-rs) from 4.2.5 to 4.3.0.
- [Release notes](https://github.com/harryfei/which-rs/releases)
- [Commits](https://github.com/harryfei/which-rs/compare/4.2.5...4.3.0)

---
updated-dependencies:
- dependency-name: which
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-10 10:03:30 -07:00
dependabot[bot] 41b0a84e88
build(deps): bump socket2 from 0.4.4 to 0.4.7 (#1937)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.4.4 to 0.4.7.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/commits)

---
updated-dependencies:
- dependency-name: socket2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-10 10:03:13 -07:00
dependabot[bot] 7136049dbd
build(deps): bump percent-encoding from 2.1.0 to 2.2.0 (#1933)
Bumps [percent-encoding](https://github.com/servo/rust-url) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/percent-encoding-v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: percent-encoding
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-10 10:02:31 -07:00
dependabot[bot] bc03b63c1b
build(deps): bump url from 2.2.2 to 2.3.0 (#1932)
Bumps [url](https://github.com/servo/rust-url) from 2.2.2 to 2.3.0.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.2.2...v2.3.0)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-10 09:36:21 -07:00
dependabot[bot] 36af2e1667
build(deps): bump tokio-util from 0.7.3 to 0.7.4 (#1936)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.3 to 0.7.4.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.3...tokio-util-0.7.4)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-10 09:36:04 -07:00
dependabot[bot] 09b43c9ef9
build(deps): bump trust-dns-resolver from 0.21.2 to 0.22.0 (#1925)
Bumps [trust-dns-resolver](https://github.com/bluejekyll/trust-dns) from 0.21.2 to 0.22.0.
- [Release notes](https://github.com/bluejekyll/trust-dns/releases)
- [Changelog](https://github.com/bluejekyll/trust-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bluejekyll/trust-dns/compare/v0.21.2...v0.22.0)

---
updated-dependencies:
- dependency-name: trust-dns-resolver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-09 11:53:45 -07:00
Oliver Gould c6ba98b7d1
inbound: Restrict the HTTP/1 idle timeout (#1931)
The inbound proxy may hold idle inbound connections to the application
open for (by default) 20s. This can be problematic when a server sets a
lesser idle timeout and that idle timeout matches some poll interval
(like a Kubernetes probe or metrics scrape).

This change reduces the HTTP/1 connection pool idle timeout to 3s. This
should be short enough to avoid this problem in many cases but it is
also large enough that connection pooling can help busy services.

In the future, this configuration should be made dynamic via the inbound
policy API.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-09-08 17:20:54 -07:00
dependabot[bot] c77778fc91
build(deps): bump httparse from 1.7.1 to 1.8.0 (#1927)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.7.1 to 1.8.0.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.7.1...v1.8.0)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-08 13:01:41 -07:00
dependabot[bot] 6abc0ccddc
build(deps): bump tonic from 0.8.0 to 0.8.1 (#1928)
Bumps [tonic](https://github.com/hyperium/tonic) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.8.0...v0.8.1)

---
updated-dependencies:
- dependency-name: tonic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-08 13:01:26 -07:00
dependabot[bot] ae442297b9
build(deps): bump miniz_oxide from 0.5.3 to 0.5.4 (#1929)
Bumps [miniz_oxide](https://github.com/Frommi/miniz_oxide) from 0.5.3 to 0.5.4.
- [Release notes](https://github.com/Frommi/miniz_oxide/releases)
- [Changelog](https://github.com/Frommi/miniz_oxide/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Frommi/miniz_oxide/commits)

---
updated-dependencies:
- dependency-name: miniz_oxide
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-08 13:01:05 -07:00
dependabot[bot] bf4fca5db9
build(deps): bump tj-actions/changed-files from 29.0.3 to 29.0.4 (#1930)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 29.0.3 to 29.0.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](60f4aabced...c41b715259)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-08 12:59:47 -07:00
dependabot[bot] 1273a35d9c
build(deps): bump once_cell from 1.13.1 to 1.14.0 (#1926)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.13.1 to 1.14.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.13.1...v1.14.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 14:04:08 -07:00
dependabot[bot] 7ec737aa29
build(deps): bump aho-corasick from 0.7.18 to 0.7.19 (#1924)
Bumps [aho-corasick](https://github.com/BurntSushi/aho-corasick) from 0.7.18 to 0.7.19.
- [Release notes](https://github.com/BurntSushi/aho-corasick/releases)
- [Commits](https://github.com/BurntSushi/aho-corasick/compare/0.7.18...0.7.19)

---
updated-dependencies:
- dependency-name: aho-corasick
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 14:02:39 -07:00
dependabot[bot] ea52049491
build(deps): bump prettyplease from 0.1.18 to 0.1.19 (#1923)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.18 to 0.1.19.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.18...0.1.19)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 14:02:31 -07:00
dependabot[bot] 1d578a99c0
build(deps): bump arbitrary from 1.1.3 to 1.1.4 (#1921)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.1.3...v1.1.4)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 09:39:28 -06:00
dependabot[bot] 18040fc788
build(deps): bump thiserror from 1.0.32 to 1.0.34 (#1920)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.32 to 1.0.34.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.32...1.0.34)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 09:39:08 -06:00
dependabot[bot] 9ecbb6fcb0
build(deps): bump derive_arbitrary from 1.1.3 to 1.1.4 (#1919)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.1.3...v1.1.4)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 09:38:52 -06:00
dependabot[bot] aad5a441a1
build(deps): bump serde_json from 1.0.83 to 1.0.85 (#1906)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.83 to 1.0.85.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.83...v1.0.85)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 09:38:35 -06:00
dependabot[bot] 2c8700fd76
build(deps): bump anyhow from 1.0.62 to 1.0.64 (#1917)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.62 to 1.0.64.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.62...1.0.64)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 09:38:12 -06:00
dependabot[bot] 276b73674e
build(deps): bump tokio from 1.20.1 to 1.21.0 (#1918)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.20.1 to 1.21.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.20.1...tokio-1.21.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 08:25:33 -07:00
dependabot[bot] ab060865b7
build(deps): bump either from 1.7.0 to 1.8.0 (#1903)
Bumps [either](https://github.com/bluss/either) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/bluss/either/releases)
- [Commits](https://github.com/bluss/either/compare/1.7.0...1.8.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 07:59:36 -07:00
dependabot[bot] 50539d5c64
build(deps): bump bumpalo from 3.10.0 to 3.11.0 (#1904)
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/fitzgen/bumpalo/releases)
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.10.0...3.11.0)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 07:59:04 -07:00
dependabot[bot] c0c25f09a2
build(deps): bump serde from 1.0.143 to 1.0.144 (#1907)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.143 to 1.0.144.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.143...v1.0.144)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 07:58:29 -07:00
dependabot[bot] 2643cb4231
build(deps): bump futures from 0.3.23 to 0.3.24 (#1913)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.23 to 0.3.24.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.23...0.3.24)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-07 07:58:11 -07:00
罗泽轩 92158b79e7
chore(dns): clean up outdated comment (#1915)
See https://github.com/linkerd/linkerd2/discussions/9227
Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2022-09-07 07:54:18 -07:00
Oliver Gould e53e1a9eb6
dev: Update devcontainer to v30 (#1909)
* Fix yarn installation
* Add Rust MUSL toolchain
* Replace `json5-to-json` with friendlier `j5j`
* Add `step` CLI

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-09-07 07:51:10 -07:00
dependabot[bot] 285d415322
build(deps): bump tj-actions/changed-files from 29.0.2 to 29.0.3 (#1916)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 29.0.2 to 29.0.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](82edb42dc4...60f4aabced)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-06 08:47:53 -06:00
dependabot[bot] a9e211c20c
build(deps): bump lock_api from 0.4.7 to 0.4.8 (#1912)
Bumps [lock_api](https://github.com/Amanieu/parking_lot) from 0.4.7 to 0.4.8.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/lock_api-0.4.7...lock_api-0.4.8)

---
updated-dependencies:
- dependency-name: lock_api
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-29 10:36:59 -06:00
dependabot[bot] 8084f04ba9
build(deps): bump tj-actions/changed-files from 29.0.1 to 29.0.2 (#1911)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 29.0.1 to 29.0.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](18edda7475...82edb42dc4)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-29 10:36:41 -06:00
dependabot[bot] add346f4e3
build(deps): bump tj-actions/changed-files from 26.1 to 29.0.1 (#1910)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 26.1 to 29.0.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](58ae566dc6...18edda7475)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-26 10:23:57 -06:00
Oliver Gould 77b9875490
Update to Rust 1.63 (#1900)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-17 16:26:48 -07:00
dependabot[bot] 2a19f2e71f
build(deps): bump libc from 0.2.131 to 0.2.132 (#1896)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.131 to 0.2.132.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.131...0.2.132)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-17 07:21:55 -07:00
dependabot[bot] e32306e0f5
build(deps): bump anyhow from 1.0.61 to 1.0.62 (#1899)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.61 to 1.0.62.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.61...1.0.62)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-17 07:21:42 -07:00
dependabot[bot] 8c26f2b1bf
build(deps): bump once_cell from 1.13.0 to 1.13.1 (#1898)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.13.0 to 1.13.1.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.13.0...v1.13.1)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-17 07:21:30 -07:00
dependabot[bot] 55e197c8d4
build(deps): bump h2 from 0.3.13 to 0.3.14 (#1897)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.13 to 0.3.14.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.13...v0.3.14)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-17 07:21:20 -07:00
Oliver Gould ab8aac3cf9
dev: Use a common action-dev-check (#1895)
This change updates to the v28 devcontainer, which includes an extracted
`action-dev-check` script that replaces the inlined just recipe. This
change also renames some recipes (like action-lint, md-lint, and
sh-lint) to be uniform with the recipes in other repos.

Signed-off-by: Oliver Gould <ver@buoyant.io>

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-17 07:18:42 -07:00
dependabot[bot] c253a0304b
build(deps): bump pin-project from 1.0.11 to 1.0.12 (#1894)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.0.11...v1.0.12)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-16 22:05:20 -07:00
Oliver Gould 3f6a12be53
ci: Validate that rust-toolchain matches devcontainer (#1893)
Add a job to the `rust-toolchain` workflow that compares the
`rust-toolchain` file to the output of `cargo --version` in the
devcontainer.

Signed-off-by: Oliver Gould <ver@buoyant.io>

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-15 15:15:23 -07:00
Oliver Gould c0f5bcb301
dev: Update markdowlint-cli2 to 5.0.1 (#1892)
* Update devcontainer to v26
* Add a `just markdownlint` recipe
* Add a `shellcheck` workflow
* Address lints

Signed-off-by: Oliver Gould <ver@buoyant.io>

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-15 13:42:18 -07:00
dependabot[bot] ef39d86621
build(deps): bump futures from 0.3.21 to 0.3.23 (#1891)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.21 to 0.3.23.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.21...0.3.23)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-15 12:05:48 -07:00
dependabot[bot] 3ae756d614
build(deps): bump hdrhistogram from 7.5.0 to 7.5.1 (#1890)
Bumps [hdrhistogram](https://github.com/HdrHistogram/HdrHistogram_rust) from 7.5.0 to 7.5.1.
- [Release notes](https://github.com/HdrHistogram/HdrHistogram_rust/releases)
- [Changelog](https://github.com/HdrHistogram/HdrHistogram_rust/blob/master/CHANGELOG.md)
- [Commits](https://github.com/HdrHistogram/HdrHistogram_rust/compare/v7.5.0...v7.5.1)

---
updated-dependencies:
- dependency-name: hdrhistogram
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-15 12:01:24 -07:00
dependabot[bot] 36a989289f
build(deps): bump tj-actions/changed-files from 25 to 26.1 (#1888)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 25 to 26.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](36e65a1165...58ae566dc6)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-15 12:00:40 -07:00
dependabot[bot] 7edf684806
build(deps): bump libc from 0.2.129 to 0.2.131 (#1887)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.129 to 0.2.131.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/commits)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-15 12:00:27 -07:00
dependabot[bot] 6d13361ffd
build(deps): bump anyhow from 1.0.60 to 1.0.61 (#1886)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.60 to 1.0.61.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.60...1.0.61)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-15 12:00:16 -07:00
Oliver Gould 681d9e6ee9
dev: Use the kokakiwi.vscode-just (#1885)
`skellock.just` is unmaintained and has syntax highlighting bugs.
`kokakiwi.vscode-just` fixes those bugs!

Signed-off-by: Oliver Gould <ver@buoyant.io>

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-10 12:16:10 -07:00
dependabot[bot] 580ba284db
build(deps): bump libc from 0.2.127 to 0.2.129 (#1884)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.127 to 0.2.129.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.127...0.2.129)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-10 08:17:56 -07:00
dependabot[bot] 20bfadf3ef
build(deps): bump tj-actions/changed-files from 24.1 to 25 (#1882)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 24.1 to 25.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](bf6ddb7db6...36e65a1165)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-09 07:29:55 -07:00
dependabot[bot] 30f27100a4
build(deps): bump serde from 1.0.142 to 1.0.143 (#1883)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.142 to 1.0.143.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.142...v1.0.143)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-09 07:27:33 -07:00
dependabot[bot] fcbc556b61
build(deps): bump anyhow from 1.0.59 to 1.0.60 (#1880)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.59 to 1.0.60.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.59...1.0.60)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-08 13:04:43 -07:00
Oliver Gould 59113205d7
dev: Update to fix protobuf includes (#1881)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-08 12:46:25 -07:00
Oliver Gould a384956b7b
tls: Avoid holding a large buffer across await (#1879)
The TLS detection code holds a ~512B buffer when peeking on a socket to
parse an SNI value from a client connection. This is done to avoid a
heap allocation--this optimization is probably premature.

Per a conversation with @carllerche, holding data across an `await` is a
painful anti-pattern that can have severe performance impacts, since the
generated `Future` ends up holding all of this data (on the stack).
Instead, our default behavior should be to use a heap-allocated data
structure for any data that crosses an async `await`.

This change eliminates the stack-allocated buffer in our TLS server in
favor of a heap-allocated buffer.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-08-05 16:23:13 -07:00
Eliza Weisman c1ece81ccf
admin: add `/env.json` endpoint (#1867)
We have a need to see the current environment variables for running
Linkerd proxies: while a pod spec includes most of the proxy's
environment variables, this environment may include references that are
not rendered until the container actually starts.

For example:
```yaml
      - name: _pod_sa
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.serviceAccountName
      - name: LINKERD2_PROXY_IDENTITY_DIR
        value: /var/run/linkerd/identity/end-entity
      - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS
        valueFrom:
          configMapKeyRef:
            key: ca-bundle.crt
            name: linkerd-identity-trust-roots
```

There's no reliable, non-racey way to know which value a pod is actually
running with except to have the proxy expose its environment values.

See linkerd/linkerd2#9067 for details.

This branch implements the proposal described in [this comment][1]: we
add an `/env.json` endpoint to the proxy's admin server that responds to
GET requests with a JSON object representing that proxy's environment
variables. If the request has query parameters, the response will only
contain the value of the environment variables with those names (or JSON
`null`s if a requested env var name is unset).

Closes linkerd/linkerd2#9067

[1]: https://github.com/linkerd/linkerd2/issues/9067#issuecomment-1204280075
2022-08-05 15:37:44 -07:00
Eliza Weisman f336b2a9d3
chore: update `tonic`, `prost`, and `proxy-api` (#1868)
This branch updates `tonic` (and `tonic-build`) to v0.8, `prost` (and
`prost-types`) to v0.11, and `linkerd2-proxy-api` to v0.7.

Unfortunately, the current approach of regenerating protobuf generated
code in tests does not work in cases where there's a breaking change in
`tonic` that breaks compatibility with protos compiled by the previous
version. The crate itself needs to be compiled before its tests are
compiled, and if the crate doesn't build, the tests won't run.

Therefore, I've also added a little script in a crate *outside* the
`opencensus-proto` crate that can be run to manually rebuild the
generated code, for cases like this.

Closes #1873

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-08-05 10:00:40 -07:00
dependabot[bot] 691d66b1d6
build(deps): bump serde from 1.0.141 to 1.0.142 (#1878)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.141 to 1.0.142.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.141...v1.0.142)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-05 10:46:22 -06:00
dependabot[bot] 19f57c4e90
build(deps): bump libc from 0.2.126 to 0.2.127 (#1874)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.126 to 0.2.127.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.126...0.2.127)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-05 10:30:27 -06:00
dependabot[bot] 09ab4c2eba
build(deps): bump syn from 1.0.98 to 1.0.99 (#1872)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.98 to 1.0.99.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.98...1.0.99)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-05 10:30:03 -06:00
dependabot[bot] f7598b4c7a
build(deps): bump thiserror from 1.0.31 to 1.0.32 (#1871)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.31 to 1.0.32.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.31...1.0.32)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-05 10:29:43 -06:00
dependabot[bot] da9c3f8893
build(deps): bump rustls-pemfile from 1.0.0 to 1.0.1 (#1875)
Bumps [rustls-pemfile](https://github.com/rustls/pemfile) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/rustls/pemfile/releases)
- [Commits](https://github.com/rustls/pemfile/commits)

---
updated-dependencies:
- dependency-name: rustls-pemfile
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-05 09:10:28 -07:00
dependabot[bot] b424b2c132
build(deps): bump tj-actions/changed-files from 24 to 24.1 (#1869)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 24 to 24.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](6c44eb8294...bf6ddb7db6)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-04 10:25:23 -07:00
dependabot[bot] decaa57fa3
build(deps): bump serde_json from 1.0.82 to 1.0.83 (#1870)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.82 to 1.0.83.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.82...v1.0.83)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-04 10:24:38 -07:00
dependabot[bot] cfb4d640c9
build(deps): bump prettyplease from 0.1.17 to 0.1.18 (#1863)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.17 to 0.1.18.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.17...0.1.18)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-03 07:37:45 -07:00
dependabot[bot] 7af09c64c4
build(deps): bump proc-macro2 from 1.0.42 to 1.0.43 (#1862)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.42 to 1.0.43.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.42...1.0.43)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-03 07:37:35 -07:00
dependabot[bot] c5a5381986
build(deps): bump serde from 1.0.140 to 1.0.141 (#1858)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.140 to 1.0.141.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.140...v1.0.141)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-03 07:37:22 -07:00
dependabot[bot] 13d2736b0f
build(deps): bump async-trait from 0.1.56 to 0.1.57 (#1857)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.56 to 0.1.57.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.56...0.1.57)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-01 10:41:42 -07:00
dependabot[bot] a49016fe84
build(deps): bump bytes from 1.2.0 to 1.2.1 (#1854)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/commits)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-01 10:53:22 -04:00
dependabot[bot] c77e71db93
build(deps): bump tracing from 0.1.35 to 0.1.36 (#1851)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.35 to 0.1.36.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.35...tracing-0.1.36)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-01 10:52:58 -04:00
dependabot[bot] 9ea8620f1c
build(deps): bump anyhow from 1.0.58 to 1.0.59 (#1850)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.58 to 1.0.59.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.58...1.0.59)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-01 10:52:43 -04:00
Oliver Gould e0f0169eaa
dev: Reuse the linkerd dev container (#1834)
The proxy repo maintains a nearly identical devcontainer configuration
to that used in the main linkerd2 repo (minus some Go tooling). This
means that we have to pull the same sets of tools redundantly, and that
it's easy for the tool versions to diverge needlessly.

This change updates the proxy to use the published linkerd dev, adding
a rust nightly toolchain for cargo-fuzz (which is only used in this repo
currently) on creation.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-07-29 11:54:31 -07:00
dependabot[bot] fe410f4f58
build(deps): bump prettyplease from 0.1.16 to 0.1.17 (#1848)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.16 to 0.1.17.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.16...0.1.17)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-28 07:16:06 -07:00
Oliver Gould ddbd152eba
dependabot: Skip dependencies for irrelevant platforms (#1849)
Also, update dependabot to submit PRs for docker container base images.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-07-28 07:15:47 -07:00
dependabot[bot] 910b55fb28
build(deps): bump tokio from 1.20.0 to 1.20.1 (#1845)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.20.0 to 1.20.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.20.0...tokio-1.20.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-28 06:52:54 -07:00
dependabot[bot] c649c2a31f
build(deps): bump proc-macro2 from 1.0.41 to 1.0.42 (#1843)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.41 to 1.0.42.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.41...1.0.42)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-28 06:52:38 -07:00
dependabot[bot] 429233343b
build(deps): bump fastrand from 1.7.0 to 1.8.0 (#1841)
Bumps [fastrand](https://github.com/smol-rs/fastrand) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/smol-rs/fastrand/releases)
- [Changelog](https://github.com/smol-rs/fastrand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/fastrand/compare/v1.7.0...v1.8.0)

---
updated-dependencies:
- dependency-name: fastrand
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-25 08:46:49 -06:00
dependabot[bot] 496171c680
build(deps): bump proc-macro2 from 1.0.40 to 1.0.41 (#1840)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.40 to 1.0.41.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.40...1.0.41)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-25 08:46:20 -06:00
dependabot[bot] 0664ce81a0
build(deps): bump redox_syscall from 0.2.13 to 0.2.15 (#1839)
Bumps redox_syscall from 0.2.13 to 0.2.15.

---
updated-dependencies:
- dependency-name: redox_syscall
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-25 08:45:46 -06:00
dependabot[bot] cf713010a2
build(deps): bump DavidAnson/markdownlint-cli2-action from 5.1.0 to 6 (#1838)
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/DavidAnson/markdownlint-cli2-action) from 5.1.0 to 6.
- [Release notes](https://github.com/DavidAnson/markdownlint-cli2-action/releases)
- [Commits](744f913a12...d199b6e1b8)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-25 08:45:19 -06:00
dependabot[bot] 0327f3afbf
build(deps): bump tj-actions/changed-files from 23.2 to 24 (#1837)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 23.2 to 24.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](b2ee165d6b...6c44eb8294)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-22 11:19:00 -07:00
Eliza Weisman 3504f89a62
http: log a warning when a CONNECT response has the wrong version (#1827)
* http: log a warning when a CONNECT response has the wrong version

The issue linkerd/linkerd2#6035 describes a situation where Linkerd
rejects HTTP/1.1 CONNECT requests because the remote (non-Linkerd)
forward proxy returns a successful response that erroneously has the
wrong HTTP version (HTTP/1.0). Since the CONNECT method does not exist
in the HTTP/1.0 protocol, Linkerd does not treat this response as a
CONNECT.

It turns out that in the accursed Real World, some HTTP forward proxies
actually do return the wrong protocol version when successfully handling
CONNECT requests. We don't want to remove the check that the protocol
version is correct, because it could lead to us incorrectly treating
responses to CONNECTs as establishing a tunnel when they don't actually
do that. However, in order to make it easier for future users who
encounter issues where other proxies return wrong HTTP versions for
CONNECT responses, it might be nice to log a warning, so that users can
determine *why* their CONNECT requests aren't working.

This branch changes the proxy to log a warning if a successful response
to a CONNECT request had the wrong HTTP version. We won't log the
warning if the response is not a success or if the request was not a
CONNECT, so it should only cover this specific case.

* format version with debug

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-07-21 10:00:31 -07:00
dependabot[bot] d417e63b30
build(deps): bump tracing-subscriber from 0.3.11 to 0.3.15 (#1836)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.11 to 0.3.15.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.11...tracing-subscriber-0.3.15)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-21 07:53:34 -07:00
dependabot[bot] c8f56572f2
build(deps): bump serde from 1.0.139 to 1.0.140 (#1835)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.139 to 1.0.140.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.139...v1.0.140)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-21 07:15:32 -07:00
dependabot[bot] 0288b9c998
build(deps): bump bytes from 1.1.0 to 1.2.0 (#1832)
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 13:04:53 -07:00
dependabot[bot] c1eadca9f8
build(deps): bump EmbarkStudios/cargo-deny-action from 1.3.1 to 1.3.2 (#1831)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](30ecad1d58...7257a18a9c)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 12:10:32 -07:00
dependabot[bot] 163fc89d5b
build(deps): bump slab from 0.4.6 to 0.4.7 (#1833)
Bumps [slab](https://github.com/tokio-rs/slab) from 0.4.6 to 0.4.7.
- [Release notes](https://github.com/tokio-rs/slab/releases)
- [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/slab/compare/v0.4.6...v0.4.7)

---
updated-dependencies:
- dependency-name: slab
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 12:10:21 -07:00
dependabot[bot] 4d6fd75e9a
build(deps): bump tj-actions/changed-files from 23.1 to 23.2 (#1828)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 23.1 to 23.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](34a865a2b2...b2ee165d6b)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-19 06:46:21 -07:00
dependabot[bot] 1fed533e78
build(deps): bump olix0r/cargo-action-fmt (#1829)
Bumps [olix0r/cargo-action-fmt](https://github.com/olix0r/cargo-action-fmt) from ee1ef42932e44794821dab57ef1bf7a73df8b21f to 1.0.2. This release includes the previously tagged commit.
- [Release notes](https://github.com/olix0r/cargo-action-fmt/releases)
- [Commits](ee1ef42932...ed3530f073)

---
updated-dependencies:
- dependency-name: olix0r/cargo-action-fmt
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-19 06:45:27 -07:00
dependabot[bot] aca1622a36
build(deps): bump tokio from 1.19.2 to 1.20.0 (#1823)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.19.2 to 1.20.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.19.2...tokio-1.20.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-18 13:57:07 -07:00
dependabot[bot] 1c5c3da741
build(deps): bump hashbrown from 0.12.2 to 0.12.3 (#1825)
Bumps [hashbrown](https://github.com/rust-lang/hashbrown) from 0.12.2 to 0.12.3.
- [Release notes](https://github.com/rust-lang/hashbrown/releases)
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/hashbrown/compare/v0.12.2...v0.12.3)

---
updated-dependencies:
- dependency-name: hashbrown
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-18 13:56:38 -07:00
Oliver Gould f2fb0c4d19
Configure inbound HTTP routes via gRPC (#1814)
The policy controller serves inbound server configuration. Recent
changes have updated the inbound proxy to support applying HTTP
route-specific policies, but only a single default route configuration
was used.

This change updates the proxy to use a (not yet released) new proxy API
version that includes HTTP routes in server responses. This change adds
protobuf conversions from these types to the proxy's HTTP route types.

If the proxy receives a router filter of an unknown type (i.e., because
the controller is running a later version of the API that includes new
types), then the proxy will FAIL all requests on that route with an
internal server error. It's considered safer to fail hard in this case,
rather than to silently ignore a configured policy that could
potentially be security-sensitive.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-07-13 17:36:07 -07:00
Oliver Gould c61644659b
Revert "build(deps): bump tracing-subscriber from 0.3.11 to 0.3.14 (#1806)" (#1822)
This reverts commit 7ecdd7840f. Upgrading
tracing-subscriber breaks logging in the proxy.

On `cargo run` on main:

```
    Finished dev [unoptimized] target(s) in 43.90s
     Running `target/debug/linkerd2-proxy`
Invalid configuration: no destination service configured
```

Versus `cargo run` with this change reverted:

```
    Finished dev [unoptimized] target(s) in 52.61s
     Running `target/debug/linkerd2-proxy`
[     0.007639s] ERROR ThreadId(01) linkerd_app::env: LINKERD2_PROXY_IDENTITY_SVC_ADDR and LINKERD2_PROXY_IDENTITY_SVC_NAME must be set.
[     0.007680s] ERROR ThreadId(01) linkerd_app::env: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS must be set.
[     0.007687s] ERROR ThreadId(01) linkerd_app::env: LINKERD2_PROXY_IDENTITY_DIR must be set.
[     0.007692s] ERROR ThreadId(01) linkerd_app::env: LINKERD2_PROXY_IDENTITY_LOCAL_NAME must be set.
[     0.007697s] ERROR ThreadId(01) linkerd_app::env: LINKERD2_PROXY_IDENTITY_TOKEN_FILE must be set.
[     0.007787s]  INFO ThreadId(01) linkerd_app::env: `LINKERD2_PROXY_INBOUND_IPS` allowlist not configured, allowing all target addresses
[     0.007850s]  INFO ThreadId(01) linkerd_app::env: LINKERD2_PROXY_POLICY_CLUSTER_NETWORKS not set; cluster-scoped modes are unsupported
[     0.007868s]  WARN ThreadId(01) linkerd_app::env: LINKERD2_PROXY_INBOUND_DEFAULT_POLICY was not set; using `all-unauthenticated`
Invalid configuration: no destination service configured
```

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-07-13 13:42:22 -07:00
dependabot[bot] 1a39b3db85
build(deps): bump prettyplease from 0.1.15 to 0.1.16 (#1821)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.15 to 0.1.16.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.15...0.1.16)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-12 14:00:07 -07:00
dependabot[bot] a333194b14
build(deps): bump hashbrown from 0.12.1 to 0.12.2 (#1818)
Bumps [hashbrown](https://github.com/rust-lang/hashbrown) from 0.12.1 to 0.12.2.
- [Release notes](https://github.com/rust-lang/hashbrown/releases)
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/hashbrown/compare/v0.12.1...v0.12.2)

---
updated-dependencies:
- dependency-name: hashbrown
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-11 13:47:20 -07:00
dependabot[bot] d99fa88c70
build(deps): bump serde from 1.0.138 to 1.0.139 (#1819)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.138 to 1.0.139.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.138...v1.0.139)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-11 13:47:12 -07:00
Oliver Gould a7dcf29516
dev: Update dev tooling (#1820)
* Update Rust to v1.62, with new lints
* Update k3d to v5.4.4
* Update just to 1.2.0
* Update kubectl to v1.24.2
* Update cargo-nextest to v0.9.24

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-07-11 09:51:58 -07:00
Eliza Weisman a80a245452
add shutdown grace period timeout for graceful shutdowns (#1815)
When a proxy receives a SIGTERM or the shutdown admin endpoint is
called, a graceful shutdown is triggered. This causes the proxy to stop
accepting new connections, wait until all currently open connections
have closed, and then terminate. This means that proxies can potentially
be kept alive indefinitely even after a shutdown has been signalled, if
any open connections do not close (or if a connection closes but the
proxy fails to notice it has closed; see linkerd/linkerd2#8033).

In order to ensure that the proxy terminates when a shutdown is
signalled even if some connections fail to close, this branch introduces
a grace period timeout to the shutdown process. When a graceful shutdown
is initiated, the proxy will still wait to drain open connections, as it
did previously, but if the drain does not complete within the shutdown
grace period, the proxy will terminate "gracelessly".

To configure the shutdown grace period, this PR adds a new
`LINKERD2_PROXY_SHUTDOWN_GRACE_PERIOD` environment variable which can be
set by the proxy injector. The duration is parsed the same way all other
configuration durations are parsed. The default grace period is 2
minutes.

Note that currently, there will always be a timeout, even if the
environment variable is not set, as it defaults to 2 minutes. If we
really want to have a way to ensure a proxy will always wait
indefinitely for a drain to complete, we can change the default, or add
a way to explicitly disable the grace period through configuration...but
I thought it was probably fine to just pick a fairly generous grace
period by default, and always have a timeout.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-07-09 11:27:17 -07:00
dependabot[bot] a7bc55b6c4
build(deps): bump hyper from 0.14.19 to 0.14.20 (#1816)
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.19 to 0.14.20.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.20/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.19...v0.14.20)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-08 16:23:23 -07:00
dependabot[bot] 16bc5fdd2e build(deps): bump once_cell from 1.12.0 to 1.13.0
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.12.0 to 1.13.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.12.0...v1.13.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 10:45:19 -07:00
dependabot[bot] 6361a76a96 build(deps): bump regex from 1.5.6 to 1.6.0
Bumps [regex](https://github.com/rust-lang/regex) from 1.5.6 to 1.6.0.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.5.6...1.6.0)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 10:45:05 -07:00
dependabot[bot] 912b41f998
build(deps): bump serde from 1.0.137 to 1.0.138 (#1810)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.137 to 1.0.138.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.137...v1.0.138)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 09:36:07 -07:00
dependabot[bot] 7c9b4fd507
build(deps): bump fixedbitset from 0.4.1 to 0.4.2 (#1809)
Bumps [fixedbitset](https://github.com/petgraph/fixedbitset) from 0.4.1 to 0.4.2.
- [Release notes](https://github.com/petgraph/fixedbitset/releases)
- [Commits](https://github.com/petgraph/fixedbitset/commits)

---
updated-dependencies:
- dependency-name: fixedbitset
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 09:35:54 -07:00
dependabot[bot] 5b6513a157
build(deps): bump unicode-normalization from 0.1.20 to 0.1.21 (#1808)
Bumps [unicode-normalization](https://github.com/unicode-rs/unicode-normalization) from 0.1.20 to 0.1.21.
- [Release notes](https://github.com/unicode-rs/unicode-normalization/releases)
- [Commits](https://github.com/unicode-rs/unicode-normalization/commits)

---
updated-dependencies:
- dependency-name: unicode-normalization
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 09:35:43 -07:00
dependabot[bot] 96f1fe24af
build(deps): bump pin-project from 1.0.10 to 1.0.11 (#1807)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.0.10 to 1.0.11.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.0.10...v1.0.11)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 09:35:33 -07:00
dependabot[bot] 7ecdd7840f
build(deps): bump tracing-subscriber from 0.3.11 to 0.3.14 (#1806)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.11 to 0.3.14.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.11...tracing-subscriber-0.3.14)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 09:35:20 -07:00
Oliver Gould f1461ed3f5
Add HTTP and gRPC route failure-injection filters (#1805)
The control plane may choose to inject failures for a route. It may
cause all requests to fail, or only a random subset of requests to fail.

This change adds HTTP and gRPC route filters that can cause error
responses for inbound requests.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-07-01 16:22:18 -07:00
Oliver Gould 2c265f74c1
Add an HTTP route redirect filter (#1799)
The Gateway API requires that `HTTPRoute` implementations support a
[redirection filter][gwapi].

This change adds a filter implementation to the `http-route` crate.
Inbound server policies are updated to apply this filter on HTTP routes.
When a request is redirected, the policy layer returns an error and the
error crate is responsible for turning that error into an HTTP response.

This change fixes path matching so that trailing slashes do not impact
prefix matching.

[gwapi]: 541e9fc2b3/apis/v1beta1/httproute_types.go (L772-L821)

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-07-01 14:05:20 -07:00
dependabot[bot] 0052e992fc
build(deps): bump either from 1.6.1 to 1.7.0 (#1798)
Bumps [either](https://github.com/bluss/either) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/bluss/either/releases)
- [Commits](https://github.com/bluss/either/compare/1.6.1...1.7.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-30 10:56:01 -07:00
dependabot[bot] 490ec5a6e4
build(deps): bump serde_json from 1.0.81 to 1.0.82 (#1797)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.81 to 1.0.82.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.81...v1.0.82)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-30 10:55:51 -07:00
dependabot[bot] 297a67a278
build(deps): bump smallvec from 1.8.1 to 1.9.0 (#1795)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.8.1 to 1.9.0.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.8.1...v1.9.0)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-30 10:55:41 -07:00
罗泽轩 7735e74e57
docs: update justfile man page link (#1794)
Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2022-06-29 22:19:55 -07:00
Oliver Gould 043f084ac2
inbound: Add a header-modification route filter (#1793)
The Gateway API defines a [header-rewriting filter](gwapi) that may be
attached to HTTP routes. This change updates the HTTP route types to
support a list of filters. The inbound proxy supports only the
header modifier filter. Additional filters will be added in follow-up
changes (see #1788 for an example of these additional filters).

[gwapi]: https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.HTTPRequestHeaderFilter

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-28 15:29:56 -07:00
Oliver Gould 3b7769d4ee
Introduce per-route authorization policies (#1781)
This change adds per-route authorization policies to the inbound proxy.
This change does NOT introduce an API client to configure these
policies. That will be added in follow-up changes, as will richer
per-route configurations.

This change:

* Modifies the inbound policy `Protocol` type so that each protocol
  variant includes policy configuration. TCP protocols now include
  authorization policies (moved from the `Server` type).
* Implements an HTTP policy router that determines the route for each
  request and applies its authorization policy.
* Fails requests for which no route matches with a `404 Not Found`
  response. A new metric, `inbound_http_route_not_found_total`, is
  introduced to count occurrences of this error.
* Includes a default route for all inbound HTTP communication, using the
  server's authorization policies.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-27 16:46:56 -07:00
dependabot[bot] e5044a2b54
build(deps): bump jemalloc-sys from 0.5.0+5.3.0 to 0.5.1+5.3.0-patched (#1792)
Bumps [jemalloc-sys](https://github.com/tikv/jemallocator) from 0.5.0+5.3.0 to 0.5.1+5.3.0-patched.
- [Release notes](https://github.com/tikv/jemallocator/releases)
- [Changelog](https://github.com/tikv/jemallocator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tikv/jemallocator/commits)

---
updated-dependencies:
- dependency-name: jemalloc-sys
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-27 09:00:27 -07:00
dependabot[bot] ba19437e73
build(deps): bump smallvec from 1.8.0 to 1.8.1 (#1791)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-27 08:59:57 -07:00
dependabot[bot] 564d83fdd7
build(deps): bump linked-hash-map from 0.5.4 to 0.5.6 (#1790)
Bumps [linked-hash-map](https://github.com/contain-rs/linked-hash-map) from 0.5.4 to 0.5.6.
- [Release notes](https://github.com/contain-rs/linked-hash-map/releases)
- [Commits](https://github.com/contain-rs/linked-hash-map/commits/v0.5.6)

---
updated-dependencies:
- dependency-name: linked-hash-map
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-27 08:59:33 -07:00
dependabot[bot] 974182e4bd
build(deps): bump unicode-normalization from 0.1.19 to 0.1.20 (#1789)
Bumps [unicode-normalization](https://github.com/unicode-rs/unicode-normalization) from 0.1.19 to 0.1.20.
- [Release notes](https://github.com/unicode-rs/unicode-normalization/releases)
- [Commits](https://github.com/unicode-rs/unicode-normalization/commits/v0.1.20)

---
updated-dependencies:
- dependency-name: unicode-normalization
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-27 08:59:11 -07:00
Oliver Gould 19fd12ed2f
Add HTTP route matchers to support the Gateway API (#1787)
This change adds a standalone utility crate that will support matching
routes for the Gateway API's HTTP route types. This crate is not yet
used. In followup changes:

* filter types will be added to support header-rewriting, HTTP
  redirection, and error injection filters;
* the inbound proxy will be updated to support route-oriented
  authorization policies; and
* the inbound policy API client will be updated to configure inbound
  server routes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-24 18:06:19 -07:00
Oliver Gould 1ee3253c1e
inbound: Cleanup in preparation for route policies #1781 (#1786)
Before making changes that support inbound HTTP route authorization
policies, this change makes some cosmetic changes that will help
minimize the changes needed for new funcationality.

No funtional changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-24 12:01:30 -07:00
Oliver Gould e51a9533d6
inbound: Record TCP metrics for forwarded TLS connections (#1785)
The inbound TLS detection stack may forward non-mesh-TLS connections to
the application without recording TCP metrics. This change adds metrics
for these connections.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-24 11:25:07 -07:00
dependabot[bot] daf9fab0f4
build(deps): bump arbitrary from 1.1.2 to 1.1.3 (#1784)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.1.2...v1.1.3)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-24 09:19:55 -07:00
dependabot[bot] 240042accd
build(deps): bump derive_arbitrary from 1.1.2 to 1.1.3 (#1783)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/v1.1.2...v1.1.3)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-24 09:19:41 -07:00
dependabot[bot] e74f0c08bb
build(deps): bump tj-actions/changed-files from 23 to 23.1 (#1782)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 23 to 23.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](fb1fe28aa9...34a865a2b2)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-24 09:19:26 -07:00
Oliver Gould 142c3f39ed
inbound: Record policy metrics for opaque-transport connections (#1780)
When the inbound receives a "direct" inbound connection--a connection
that targets the proxy's inbound port--it uses the "opaque transport"
wrapper to discover the actual destination port for the connection. In
this case, the direct stack does a one-off authorization check instead
of using the proper TCP policy layer, which means that these connections
don't get the proper authorization metrics.

This change updates the direct TCP stack to use the TcpPolicy middleware
to enforce authorization. It also removes the authorization checking
utilities from the public `AllowPolicy` type so that all authorizations
must go through the metrics-tracking middlewares. The `policy` tests are
moved under the `policy::tcp` module so they have access to these
functions.

The TCP accept stack no longer performs eager authorization denials when
a default-deny policy is used, as these failures bypassed the metrics
code also.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-23 19:51:30 -07:00
Eliza Weisman 7f817b5741
retry gRPC requests are immediately terminated by trailers (#1706)
Currently, gRPC responses are classified for metrics based on the value
of the `grpc-status` header in either the initial `HEADERS` frame *or*
in the `TRAILERS` frame that terminates the response body. However, this
is *not* the case for retries. Because we don't want to buffer the
entire response body before forwarding it to the client (introducing
latency, and potentially breaking client behavior in the case of
long-running streams), we make retry decisions for gRPC based only on
`grpc-status` in the initial `HEADERS` frame.

Unfortunately, some gRPC implementations (such as Akka) will send the
`grpc-status` header in a `TRAILERS` frame even when the body is empty
(see linkerd/linkerd2#7701). In that case, Linkerd won't retry the
request, even though it wouldn't actually have to wait to buffer a long
body before making a retry decision.

This branch resolves this issue by changing the retry implementation so
that the proxy will wait for a single additional frame after the first
`HEADERS` frame before making a retry decision. If the next frame is a
`TRAILERS` frame that terminates the response stream, we can include the
value of the `grpc-status` in that `TRAILERS` frame in the retry
decision. Otherwise, if the next frame is a `DATA` frame, we buffer only
a single frame, give up on trying to retry, and forward that frame to
the client, followed by the rest of the body.

Unfortunately, this change is a bit complicated, as it was necessary to
introduce the ability for retries to modify the response body as well as
the request body. This then implies that we need to be able to erase
response body types as well, when they may differ based on whether or
not retries are enabled for a route. I tried a number of different ways
of structuring this change, such as passing an additional `Layer` into
the `Retry` service that wraps the service constructed for retries, but
this was kind of a mess. Ultimately, I felt like the cleanest way of
doing this was changing the `linkerd_retry::PrepareRequest` trait to a
`PrepareRetry` trait that can also modify response bodies.

I'm open to suggestions for a nicer way of structuing this change. I
also considered the alternative of giving up on `tower::retry` entirely
and writing our own retry service from scratch, but I wanted to try to
avoid that if it was possible.

Depends on #1705 and #1726.

Fixes linkerd/linkerd2#7701.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-06-22 15:08:21 -07:00
Oliver Gould d013345095
Rename HTTPRoutePermit to HttpRoutePermit (#1779) 2022-06-22 14:08:14 -07:00
Oliver Gould a32f1b02cd
inbound: Add route authorization labels (#1774)
This change adds `route_{kind,group,name}` labels for inbound HTTP
authorization metrics. In this first implementation, a default route is
used for all metrics. In followup changes these labels will vary based
on control plane responses; and they will be wired into additional
inbound HTTP metrics.

Distinct error and permit types are introduced so that TCP-only
types are differentiated.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-22 12:19:44 -07:00
Oliver Gould 89daa841b2
http-retry: Move the ReplayBody type into a module (#1778)
In preparation for #1706, this change moves the `http_retry::ReplayBody`
type into a distinct module. This helps to make a cleaner diff in the
aforementioned PR.

No functional changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-22 09:08:52 -07:00
Oliver Gould 10e9747d2a
integration: Cleanup test server (#1777)
In preparation for #1706, this change cleans up the type signatures used
by the integration test server.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-22 08:47:52 -07:00
dependabot[bot] 026485a5c2
build(deps): bump indexmap from 1.9.0 to 1.9.1 (#1776)
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/bluss/indexmap/compare/1.9.0...1.9.1)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-22 07:24:04 -07:00
dependabot[bot] d9aa556a00
build(deps): bump prettyplease from 0.1.14 to 0.1.15 (#1775)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.14 to 0.1.15.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.14...0.1.15)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-22 07:23:54 -07:00
Oliver Gould 1fc213529f
ci: Split fuzzer logic into a script (#1773)
The fuzzer CI embeds a somewhat complicated script. This change splits
it into a distinct file so that it can be shellchecked, etc.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-21 19:56:02 -07:00
Oliver Gould 470732eaa5
inbound: Rename policy-enforcement layers (#1772)
The `AuthorizeHttp` and `AuthorizeTcp` layers don't necessarily only
enforce authorization. This change renames to, for instance,
`HttpPolicy` and `TcpPolicy` and eliminates the `authorize` submodule
structure.

No functional changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-21 18:45:19 -07:00
Oliver Gould 8194c5ed2f
Reorganize `server-policy` to set up for routes (#1771)
Before adding route policies, this change reorganizes the
`server-policy` crate:

* The `Meta` struct is made an enum with `Default` and `Resource`
  variants;
* The `proto` module is split up into various smaller per-module `proto`
  modules. These modules serve only to support feature-gated converters
  that validate Protobuf types.
* The `Authorization` type is made hashable and cheaply cloneable.
* The `ProxyProtocol` type no longer implements `Copy`, in anticipation
  of holding additional protocol-specific data.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-21 16:03:42 -07:00
Oliver Gould 4ebb6ff2de
dev: Update memory contraints (#1770)
I see OOM kills when trying to build/test the proxy (my guess is
rust-analyzer has gotten more memory-hungry). This change updates the
devcontainer memory constraint to 12GB, which seems to work.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-21 11:04:54 -07:00
Oliver Gould 2201530eaf
deny: Remove tokio-util from exceptions (#1769)
The tokio-util exception is no longer needed, as all dependencies have
been updated to use v0.7.

This change also updates the *deps* CI workflow to run whenever
deny.toml changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-21 08:38:06 -07:00
dependabot[bot] 8f62bc28df
build(deps): bump quote from 1.0.19 to 1.0.20 (#1768)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.19 to 1.0.20.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.19...1.0.20)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-21 07:52:53 -07:00
Oliver Gould ff47f8d4fb
Dedupe discovery updates (#1759)
The proxy can receive redundant discovery updates. When this occurs, it
causes the balancer to churn, replacing an endpoint stack (and
therefore needlessly dropping a connection).

This change updates the discovery module to keep clones of the
discovered endpoint metadata, so that updated values can be compared to
eliminate duplicate updates.

Relates to linkerd/linkerd2#8677
2022-06-20 15:25:16 -07:00
Oliver Gould 82ce0ea9db
dev: Update build settings (#1765)
* Stop setting a default RUSTFLAGS so that warnings are allowed during dev.
* Support `features=all` to enable all features.
* Update test targets to use nextest if it is available.
* Add `clippy-dir` and `test-dir` directives that accept a path instead
  of a crate name.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-20 14:47:14 -07:00
dependabot[bot] 3009b9c5f5
build(deps): bump anyhow from 1.0.57 to 1.0.58 (#1767)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.57 to 1.0.58.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.57...1.0.58)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 09:21:40 -07:00
dependabot[bot] d08b27da69
build(deps): bump prettyplease from 0.1.12 to 0.1.14 (#1766)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.12 to 0.1.14.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.12...0.1.14)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 08:09:55 -07:00
dependabot[bot] 6ab685deac
build(deps): bump syn from 1.0.96 to 1.0.98 (#1764)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.96 to 1.0.98.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.96...1.0.98)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 08:09:10 -07:00
dependabot[bot] bafe3ac5e1
build(deps): bump proc-macro2 from 1.0.39 to 1.0.40 (#1763)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.39 to 1.0.40.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.39...1.0.40)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 08:08:47 -07:00
dependabot[bot] 19cf32d28a
build(deps): bump tower-service from 0.3.1 to 0.3.2 (#1762)
Bumps [tower-service](https://github.com/tower-rs/tower) from 0.3.1 to 0.3.2.
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-0.3.1...tower-service-0.3.2)

---
updated-dependencies:
- dependency-name: tower-service
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 08:08:34 -07:00
dependabot[bot] 7a17a94c31
build(deps): bump quote from 1.0.18 to 1.0.19 (#1761)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.18 to 1.0.19.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.18...1.0.19)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 08:08:21 -07:00
dependabot[bot] 046af0a73a
build(deps): bump mio from 0.8.3 to 0.8.4 (#1760)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.3 to 0.8.4.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.3...v0.8.4)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 07:54:23 -07:00
Eliza Weisman 16ec721dbc
update Tower to 0.4.13 to fix load balancer panic (#1758)
Tower [v0.4.13] includes a fix for a bug in the `tower::ready_cache`
module, tower-rs/tower#415. The `ready_cache` module is used internally
in Tower's load balancer. This bug resulted in panics in the proxy
(linkerd/linkerd2#8666, linkerd/linkerd2#6086) in cases where the
Destination service sends a very large number of service discovery
updates (see linkerd/linkerd2#8677).

This commit updates the proxy's dependency on `tower` to 0.4.13, to
ensure that this bugfix is picked up.

Fixes linkerd/linkerd2#8666
Fixes linkerd/linkerd2#6086

[v0.4.13]: https://github.com/tower-rs/tower/releases/tag/tower-0.4.13
2022-06-17 13:40:16 -07:00
dependabot[bot] fc43c2cfb7
build(deps): bump prettyplease from 0.1.11 to 0.1.12 (#1757)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.11 to 0.1.12.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.11...0.1.12)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-17 13:06:33 -07:00
dependabot[bot] 6942822ef8
build(deps): bump indexmap from 1.8.2 to 1.9.0 (#1756)
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.8.2 to 1.9.0.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/bluss/indexmap/compare/1.8.2...1.9.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-17 13:06:09 -07:00
dependabot[bot] 2d8a10f23b
build(deps): bump arbitrary from 1.1.0 to 1.1.2 (#1754)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.1.0 to 1.1.2.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/commits/v1.1.2)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-17 11:37:58 -07:00
dependabot[bot] 2605b71859
build(deps): bump web-sys from 0.3.57 to 0.3.58 (#1751)
Bumps [web-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.57 to 0.3.58.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/commits)

---
updated-dependencies:
- dependency-name: web-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-17 11:37:40 -07:00
dependabot[bot] 3f2f7ce84a
build(deps): bump wasm-bindgen from 0.2.80 to 0.2.81 (#1749)
Bumps [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) from 0.2.80 to 0.2.81.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/compare/0.2.80...0.2.81)

---
updated-dependencies:
- dependency-name: wasm-bindgen
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-17 11:37:29 -07:00
dependabot[bot] 2a09458ba8
build(deps): bump unicode-ident from 1.0.0 to 1.0.1 (#1747)
Bumps [unicode-ident](https://github.com/dtolnay/unicode-ident) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/dtolnay/unicode-ident/releases)
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.0...1.0.1)

---
updated-dependencies:
- dependency-name: unicode-ident
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 14:19:51 -07:00
dependabot[bot] b940c2622b
build(deps): bump getrandom from 0.2.6 to 0.2.7 (#1746)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.6 to 0.2.7.
- [Release notes](https://github.com/rust-random/getrandom/releases)
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.6...v0.2.7)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-14 14:19:40 -07:00
dependabot[bot] 07582cc715
build(deps): bump tj-actions/changed-files from 22.2 to 23 (#1745)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 22.2 to 23.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](ae90a0b602...fb1fe28aa9)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-13 09:44:13 -06:00
dependabot[bot] 3141eda322
build(deps): bump tracing from 0.1.34 to 0.1.35 (#1744)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.34 to 0.1.35.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.34...tracing-0.1.35)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-09 13:45:59 -07:00
Oliver Gould f9e5b8da99
Rename target types from Route to ProfileRoute (#1743)
In anticipation of introducing new route types, this change renames
inbound and outbound `Route` target types to `ProfileRoute`.

No functional changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-08 21:37:40 -07:00
Oliver Gould 5c54860794
Rename `Route*` to `ProfileRoute*` (#1742)
In preparation for introducing additional route types to the proxy
(i.e., for the gateway API), this change renames existing route types to
more clearly be scoped to service profiles.

No functional changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-08 08:37:35 -07:00
Oliver Gould 5954cb29f5
Implement `Deref` for address newtypes (#1741)
We have several address-related newtypes that wrap `SocketAddr` types.
They currently implement `AsRef<SocketAddr>`, but this is a little
cumbersome in practice. This change replaces these `AsRef`
implementations with `Deref` so that we can, for instance, call `.ip()`
and `.port()` on these types directly without special handling.

No functional changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-07 10:18:16 -07:00
dependabot[bot] 593d5bdae5
build(deps): bump http from 0.2.7 to 0.2.8 (#1740)
Bumps [http](https://github.com/hyperium/http) from 0.2.7 to 0.2.8.
- [Release notes](https://github.com/hyperium/http/releases)
- [Changelog](https://github.com/hyperium/http/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http/compare/v0.2.7...v0.2.8)

---
updated-dependencies:
- dependency-name: http
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 09:50:57 -07:00
Oliver Gould 6cb47d053e
Move policy protobuf handling into the `server-policy` crate (#1739)
In preparation for additional policy types, this change moves policy
protobuf handling into the `server-policy` crate, gated by a `proto`
feature.

This change introduces proper error types that enumerate the ways that
protobuf message handling can go wrong.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-06 20:47:28 -07:00
dependabot[bot] c6182a061c
build(deps): bump tokio-util from 0.7.2 to 0.7.3 (#1735)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.2 to 0.7.3.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.2...tokio-util-0.7.3)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-06 20:36:11 -07:00
Oliver Gould 5859529bcf
Add 'group' labels to describe policy resources (#1738)
In preparation to introduce new route types to the policy API, this
change introduces a new `server_policy::Meta` type that includes a
`group` field so that we can explicitly differentiate between multiple
types of resources).

This change renames some types in anticipation of new types being
introduced:

* `Permit` is now `ServerPermit`
* `AuthzLabels` is now `ServerAuthzLabels`

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-06-06 20:07:47 -07:00
dependabot[bot] c77330680f
build(deps): bump tokio from 1.18.2 to 1.19.2 (#1737)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.18.2 to 1.19.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/commits)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-06 13:55:20 -07:00
dependabot[bot] 9d2b63ffb4
build(deps): bump tokio-macros from 1.7.0 to 1.8.0 (#1736)
Bumps [tokio-macros](https://github.com/tokio-rs/tokio) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-macros-1.7.0...tokio-macros-1.8.0)

---
updated-dependencies:
- dependency-name: tokio-macros
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-06 12:10:24 -07:00
dependabot[bot] a6cade0d08
build(deps): bump tokio-stream from 0.1.8 to 0.1.9 (#1733)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.8 to 0.1.9.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.8...tokio-stream-0.1.9)

---
updated-dependencies:
- dependency-name: tokio-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-06 12:09:41 -07:00
Eliza Weisman 00eca3990f
stack: add `ProxyService` for composing a `Proxy` with a `Service` (#1726)
This branch adds a `Proxy::into_service` method that composes a `Proxy`
with a `Service`, returning a new `Service` that calls the inner
`Service` through that `Proxy`.

This negates the need for `Proxy::proxy_oneshot`, so this also
closes #1725.

Currently, this is unused, but it will be used in PR #1706 (from which
this change was factored out).

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-06-03 12:07:57 -07:00
Eliza Weisman 09f3773679
test: don't generate discovery tests in a macro (#1711)
Currently, the service discovery integration tests are generated using a
giant macro that expands to all of the different tests. The macro is
used to run the tests with both HTTP/1 (with and without absolute URIs)
and HTTP/2 clients/servers. This approach has some downsides:

1. All of the test code is contained inside a macro. This means that
   `rustfmt` will not reformat it, and (in some cases) compilation
   errors can be unclear.
2. The macro-generated code is relatively inflexible. This makes it
   difficult to add new tests that need to do slightly different things.
3. Adding new configurations to the macro is complex. If we want to add
   some new thing that can also be passed in to change the generated
   code, we have to modify a bunch of macro match arms, which is
   annoying and time-consuming.

This PR changes these tests similarly to the way #1705 modified the
profiles integration tests. Rather than generating the tests themselves
inside the macro, we define version-agnostic test bodies in a
`cross_version` module, which accept the HTTP version configuration as
an argument. Now, a much simpler macro is used to just generate simple
test wrappers that call into the cross-version test definitions. This
means that none of the actual test code is inside of a macro expansion.

Depends on #1705

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-06-03 11:05:19 -07:00
Eliza Weisman e9610a1a8a
http-box: add `EraseResponse` middleware (#1723)
The `linkerd-http-box` crate currently contains `BoxRequest` and
`BoxResponse` middleware for boxing request/response bodies, and an
`EraseRequest` middleware for erasing the type of request bodies, for
use in a stack which must be able to serve *multiple* request body
types. However, there is no corresponding `EraseResponse` middleware.

This branch adds an `EraseResponse` middleware in `linkerd-http-box`.
This is necessary for PR #1706, but I factored this out into its own
branch as it's a fairly self-contained change.
2022-06-03 11:04:55 -07:00
dependabot[bot] 51d40e1475
build(deps): bump indexmap from 1.7.0 to 1.8.2 (#1732)
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.7.0 to 1.8.2.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Changelog](https://github.com/bluss/indexmap/blob/1.8.2/RELEASES.rst)
- [Commits](https://github.com/bluss/indexmap/compare/1.7.0...1.8.2)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 10:08:02 -07:00
dependabot[bot] 7f61acdf9d
build(deps): bump parking_lot from 0.12.0 to 0.12.1 (#1730)
Bumps [parking_lot](https://github.com/Amanieu/parking_lot) from 0.12.0 to 0.12.1.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/0.12.0...0.12.1)

---
updated-dependencies:
- dependency-name: parking_lot
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 10:07:48 -07:00
dependabot[bot] 8faa241710
build(deps): bump async-trait from 0.1.53 to 0.1.56 (#1729)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.53 to 0.1.56.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.53...0.1.56)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 10:05:18 -07:00
dependabot[bot] d8c3d93737
build(deps): bump bumpalo from 3.9.1 to 3.10.0 (#1728)
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.9.1 to 3.10.0.
- [Release notes](https://github.com/fitzgen/bumpalo/releases)
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/commits)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 10:05:06 -07:00
dependabot[bot] ec4940ecd2
build(deps): bump miniz_oxide from 0.5.1 to 0.5.3 (#1722)
Bumps [miniz_oxide](https://github.com/Frommi/miniz_oxide) from 0.5.1 to 0.5.3.
- [Release notes](https://github.com/Frommi/miniz_oxide/releases)
- [Changelog](https://github.com/Frommi/miniz_oxide/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Frommi/miniz_oxide/compare/0.5.1...0.5.3)

---
updated-dependencies:
- dependency-name: miniz_oxide
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 09:54:06 -07:00
dependabot[bot] 49a41d710d
build(deps): bump hyper from 0.14.18 to 0.14.19 (#1720)
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.18 to 0.14.19.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.18...v0.14.19)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 09:53:47 -07:00
dependabot[bot] 951e2811fc
build(deps): bump flate2 from 1.0.23 to 1.0.24 (#1719)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.23 to 1.0.24.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/commits)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 09:53:38 -07:00
dependabot[bot] 385b3d23c4
build(deps): bump clang-sys from 1.3.2 to 1.3.3 (#1718)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/commits)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 09:53:28 -07:00
dependabot[bot] a66a79eb96
build(deps): bump petgraph from 0.6.1 to 0.6.2 (#1717)
Bumps [petgraph](https://github.com/petgraph/petgraph) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/petgraph/petgraph/releases)
- [Changelog](https://github.com/petgraph/petgraph/blob/master/RELEASES.rst)
- [Commits](https://github.com/petgraph/petgraph/commits)

---
updated-dependencies:
- dependency-name: petgraph
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 09:53:20 -07:00
dependabot[bot] 5aa4556c17
build(deps): bump tj-actions/changed-files from 21 to 22.2 (#1727)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 21 to 22.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](0edfedf16d...ae90a0b602)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-03 09:52:55 -07:00
Eliza Weisman ee314cab9c
justfile: generate a default docker tag name (#1716)
Currently, when running `just docker`, the image is not given a
meaningful tag name by default. This commit changes the `justfile` so
that the default tag is something useful, rather than `''`. If no tag
name is provided from the command line, the Docker image will be given
the tag `localhost/linkerd/proxy:<branch>.<sha>`.

A `features` variable is also set which can be used to enable
alternate proxy features. 

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
Signed-off-by: Oliver Gould <ver@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2022-05-27 13:52:17 -07:00
dependabot[bot] ec2a119a49
build(deps): bump prettyplease from 0.1.10 to 0.1.11 (#1714)
* build(deps): bump prettyplease from 0.1.10 to 0.1.11

Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.10 to 0.1.11.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.10...0.1.11)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* regen opencensus protos

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2022-05-27 11:28:02 -07:00
Oliver Gould 4b47281a04
dev: Fix the `just docker` recipe (#1713)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-26 07:33:52 -07:00
dependabot[bot] 7fe1cc6ff1
build(deps): bump tj-actions/changed-files from 20.2 to 21 (#1712)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 20.2 to 21.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](205450238e...0edfedf16d)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-26 07:19:43 -07:00
Eliza Weisman 55bfdac5f6
test: replace `profile_test!` macro with builder (#1705)
Currently, the service profiles integration test uses a very complex
declarative macro to generate test bodies. This approach has some
downsides:

1. All of the test code is contained inside a macro. This means that
   `rustfmt` will not reformat it, and (in some cases) compilation
   errors can be unclear.
2. The macro-generated code is relatively inflexible. This makes it
   difficult to add new tests that need to do slightly different things.
3. Adding new configurations to the macro is complex. If we want to add
   some new thing that can also be passed in to change the generated
   code, we have to modify a bunch of macro match arms, which is
   annoying and time-consuming.

This branch rewrites the profiles integration tests to use a
builder-style design instead of a macro. This way, the repetitive
boilerplate necessary to set up the tests is still factored out, and can
still be overridden by passing in different parameters to the builder,
but instead of having a giant macro generate the test, the test itself
is just normal Rust code.

The builder spins up the test proxy and servers, and returns the test
client and metrics client to the test itself, and the test can now do
whatever it wants with them, rather than having to pass bits of test
code into a macro. This is much nicer, because the tests are just normal
tests now. Additionally, the builder can accept an arbitrary server
configuration, which will be necessary for some new tests I'm working on
in a separate branch.

I've also changed the profiles integration test so that most of the
tests are run with both HTTP/1 *and* HTTP/2 clients and servers. This is
still accomplished using macros, but now, the macro is much simpler. The
tests themselves are factored out into functions that take either an
HTTP/1 or HTTP/2 server, and all the macro does is generate wrapper
functions that call the actual test function with the appropriate server
version. This way, the actual test code is never inside of a macro
expansion.

I'd like to change more of the integration tests to work similarly to
these, removing other cases where a macro is used to generate test
boilerplate, and replacing it with a builder.  Also, and more importantly,
this change is necessary for some additional tests I'll be adding in a 
separate PR.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-05-25 12:00:52 -07:00
Oliver Gould e96b516b72
ci: Lint markdown files (#1707)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-25 11:46:19 -07:00
dependabot[bot] 217cf036e3
build(deps): bump prost-build from 0.10.3 to 0.10.4 (#1709)
Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.10.3 to 0.10.4.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.10.3...v0.10.4)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-25 08:28:16 -07:00
dependabot[bot] f3a4f8d91c
build(deps): bump prost from 0.10.3 to 0.10.4 (#1710)
Bumps [prost](https://github.com/tokio-rs/prost) from 0.10.3 to 0.10.4.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.10.3...v0.10.4)

---
updated-dependencies:
- dependency-name: prost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-25 07:35:31 -07:00
dependabot[bot] 4e2e4cda2d
build(deps): bump jemallocator from 0.3.2 to 0.5.0 (#1708)
Bumps [jemallocator](https://github.com/tikv/jemallocator) from 0.3.2 to 0.5.0.
- [Release notes](https://github.com/tikv/jemallocator/releases)
- [Changelog](https://github.com/tikv/jemallocator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tikv/jemallocator/commits)

---
updated-dependencies:
- dependency-name: jemallocator
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-25 07:35:03 -07:00
Oliver Gould 824ddc96ae
Update README to mention just and devcontainers (#1703) 2022-05-24 18:45:04 -07:00
Joakim Roubert fe04c8c446
Shellscript housekeeping (#1702)
- Single quotes instead of double quotes for static strings
- No quotes are needed for variable assignments
- Use shellscript built-in functionality instead of dirname

Signed-off-by: Joakim Roubert <joakim.roubert@axis.com>
2022-05-24 07:28:36 -07:00
dependabot[bot] cb3785bb8d
build(deps): bump tj-actions/changed-files from 20.1 to 20.2 (#1700)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 20.1 to 20.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](944a8b8909...205450238e)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-24 06:58:32 -07:00
dependabot[bot] 7c388cf067
build(deps): bump once_cell from 1.11.0 to 1.12.0 (#1701)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.11.0...v1.12.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-24 06:58:21 -07:00
Oliver Gould 6c261a7f2c
dev: Replace `Makefile` with `justfile` (#1691)
Other projects in the ecosystem (like kube-rs) are ditching Make's
obtuse syntax for a newer tool called [`just`][just].

This change removes our `Makefile` with a simpler `justfile`. The
release workflow is updated to use `just`. We also remove our local
`package` action, as it's not reused.

While doing this, a new version of the devcontainer has been published
with `just`, `cargo-nextest`, and various dependency updates.

[just]: https://just.systems/man/

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-23 18:13:19 -07:00
Oliver Gould 5431c44f04
http: Strip illegal headers from CONNECT responses (#1699)
When the proxy transports `CONNECT` requests, the client silently
ignores `content-length` and `transport-encoding` response headers, as
it should. When the proxy passees these headers to the hyper server, it
errors (as is dictated by the RFC).

This change updates the HTTP client to remove these headers from
responses so that the proxy no longer propagates these illegal headers.

Fixes linkerd/linkerd2#8539

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-23 14:14:40 -07:00
dependabot[bot] 99ecef8f9c
build(deps): bump regex-syntax from 0.6.25 to 0.6.26 (#1697)
Bumps [regex-syntax](https://github.com/rust-lang/regex) from 0.6.25 to 0.6.26.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/commits)

---
updated-dependencies:
- dependency-name: regex-syntax
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-23 07:33:18 -07:00
dependabot[bot] 45bdd0e63e
build(deps): bump regex from 1.5.5 to 1.5.6 (#1695)
Bumps [regex](https://github.com/rust-lang/regex) from 1.5.5 to 1.5.6.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.5.5...1.5.6)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-23 07:33:09 -07:00
dependabot[bot] 6a4662df71
build(deps): bump http-body from 0.4.4 to 0.4.5 (#1694)
Bumps [http-body](https://github.com/hyperium/http-body) from 0.4.4 to 0.4.5.
- [Release notes](https://github.com/hyperium/http-body/releases)
- [Changelog](https://github.com/hyperium/http-body/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http-body/compare/v0.4.4...v0.4.5)

---
updated-dependencies:
- dependency-name: http-body
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-23 07:33:00 -07:00
dependabot[bot] a2987f0de1
build(deps): bump tj-actions/changed-files from 20 to 20.1 (#1693)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 20 to 20.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](581eef0495...944a8b8909)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-23 07:32:51 -07:00
dependabot[bot] ddd3b58cc7
build(deps): bump actions/upload-artifact from 3.0.0 to 3.1.0 (#1692)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](6673cd052c...3cea537223)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-23 07:32:42 -07:00
dependabot[bot] 66e6eb435a
build(deps): bump petgraph from 0.6.0 to 0.6.1 (#1696)
Bumps [petgraph](https://github.com/petgraph/petgraph) from 0.6.0 to 0.6.1.
- [Release notes](https://github.com/petgraph/petgraph/releases)
- [Changelog](https://github.com/petgraph/petgraph/blob/master/RELEASES.rst)
- [Commits](https://github.com/petgraph/petgraph/commits)

---
updated-dependencies:
- dependency-name: petgraph
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-23 07:31:08 -07:00
Oliver Gould 8701ab31c9
ci: Simplify release workflow (#1690)
* Remove the `release-tag-meta` action, replaced by a simple job that
  outputs the tag-parsed version, if appropriate;
* Adds an entrypoint script to the package workflow that encodes the
  platform-specific logic for cross compilation. This simplifies the
  build matrix in the workflow;
* The entrypoint subsumes the validate-checksec script

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-22 12:28:51 -07:00
Oliver Gould 39a8ecda78
Don't allow a policy to be used if `check_port_allowed` fails (#1689)
This doesn't change any behavior; but it encourages the intended use
via the type system.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-20 18:29:39 -07:00
Oliver Gould abea3e17b2
Dynamically discover policies for undocumented ports (#1677)
During process startup, proxies discover policies for all documented
inbound ports. Undocumented ports use the default policy and cannot be
configured by the policy controller.

This is an annoying limitation, as Kubernetes does not otherwise require
a pod's ports to be explicitly documented.

This change lifts this limitation. We continue to eagerly
discover policies for documented ports during startup, but we now fall
back to dynamically discovering policies for undocumented ports. This
discovery does not block processing a connection. The default policy is
honored until a policy is provided by the control plane.

Fixes linkerd/linkerd2#7640

Co-authored-by: Eliza Weisman <eliza@buoyant.io>
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-20 15:18:22 -07:00
Eliza Weisman dd57a37c95
trace: add `/logs.json` endpoint to admin server (#1642)
This branch adds a new `/logs.json` endpoint to the proxy's admin
server. This endpoint accepts HTTP `GET` requests with a log filter as a
query string, or `QUERY` requests with a filter string as a body, and
responds with a stream of JSON objects representing each `tracing` event
that matches that filter, as described in linkerd/linkerd2#7250.
Multiple concurrent `/logs.json` requests with different filters are
supported, and each request will only recieve the logged events that
match the filter it requested.

The `/logs.json` endpoint is feature flagged, and is only accessible
from `localhost`, similarly to the `/proxy-log-level` endpoint. If the
feature flag is not enabled, `/logs.json` will respond with a 404 error.
Currently, the `log-streaming` feature is not enabled by default, so the
`/logs.json` endpoint won't do anything unless the proxy is compiled
with the feature flag enabled.

In the future, we'll want to figure out a better auth story for the logs
endpoint (and the proxy's admin server more generally); when we do, we
can enable the feature flag in release builds. There's also room for
some additional work to make the implementation cleaner and improve
performance, but some of this will require upstream library changes as
well. I've tried to comment on most of the future work where
appropriate.

Closes linkerd/linkerd2#7250

Co-authored-by: Oliver Gould <ver@buoyant.io>
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-20 13:09:37 -07:00
dependabot[bot] 97367e9c69
build(deps): bump EmbarkStudios/cargo-deny-action from 1.3.0 to 1.3.1 (#1686)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](b655a95dbf...30ecad1d58)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-20 12:03:43 -07:00
dependabot[bot] dc0383c78b
build(deps): bump once_cell from 1.10.0 to 1.11.0 (#1687)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.10.0...v1.11.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-20 12:03:17 -07:00
Eliza Weisman 3d0eb33335
cache: generalize `Cache` into a key-value cache (#1683)
Currently, the `linkerd-cache` crate contains an implementation of a
cache where entries are evicted if they have not been accessed for a
timeout duration. This type currently implements the `NewService` trait
and requires that cached values are `Service`s. It does not provide a
more general purpose key-value cache interface.

PR #1677 introduces dynamic discovery for inbound port policies. We
would like to implement a similar eviction strategy for these policy
watches. However, the policy watches are *not* used in a `NewService`
implementation, but in a `CheckPolicy` implementation.

Therefore, this branch rewrites the `Cache` type to serve as a
general-purpose key-value cache, and adds a new `NewCachedService` type
that implements `NewService` on top of `Cache`.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2022-05-19 12:43:44 -07:00
dependabot[bot] 6b866a0827
build(deps): bump clang-sys from 1.3.1 to 1.3.2 (#1680)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/commits)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-18 08:57:56 -07:00
dependabot[bot] 91a27527eb
build(deps): bump EmbarkStudios/cargo-deny-action from 1.2.17 to 1.3.0 (#1678)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.2.17 to 1.3.0.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](3481b77dfd...b655a95dbf)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-18 08:18:38 -07:00
Oliver Gould 05c740dbd7
Revert "build(deps): bump socket2 from 0.4.4 to 0.4.5 (#1654)" (#1681)
socket2 v0.4.5 has been yanked (rust-lang/socket2#308).

This reverts commit 9004d9c6e1.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-18 08:18:24 -07:00
dependabot[bot] 40c423ffa7
build(deps): bump rustls from 0.20.5 to 0.20.6 (#1679)
Bumps [rustls](https://github.com/rustls/rustls) from 0.20.5 to 0.20.6.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.20.5...v/0.20.6)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-18 07:39:57 -07:00
Oliver Gould b36fcbf2c0
opencensus: Include empty generated protobuf (#1676)
prost generates empty files for google protobuf types. This change adds
these generated files so that they are not regenerated on `make test`.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-17 16:02:21 -07:00
Oliver Gould b2a0e5d1d3
ci: Use the cargo-action-fmt setup action (#1672)
This change replaces the manually installed the `cargo-action-fmt`
utility with a setup action. This reduces boilerplate and ensures that
we'll get updates via dependabot.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-17 09:00:43 -07:00
dependabot[bot] be5fa450f1
build(deps): bump syn from 1.0.94 to 1.0.95 (#1675)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.94 to 1.0.95.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.94...1.0.95)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-17 08:00:41 -07:00
dependabot[bot] 0dde0ff6ba
build(deps): bump libc from 0.2.125 to 0.2.126 (#1674)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.125 to 0.2.126.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.125...0.2.126)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-17 08:00:33 -07:00
dependabot[bot] 268dd009ef
build(deps): bump proc-macro2 from 1.0.38 to 1.0.39 (#1673)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.38 to 1.0.39.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.38...1.0.39)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-17 08:00:24 -07:00
Eliza Weisman 7254295bf9
ci: change how warnings are denied on CI (#1662)
Currently, all crates in the proxy have `#![deny(warnings)]` attributes.
These turn all rustc warnings into errors globally for these crates.

There are two primary issues with this approach:

1. `#![deny(warnings)]` will deny the "deprecated" warning, turning
   upstream deprecations into broken builds. However, APIs may be
   deprecated in semver-compatible releases, so this means a
   non-breaking dependency release can break our builds. See [here][1]
   for details.
2. Sometimes, while working on an in-development change, warnings may be
   temporarily introduced. For example, if a developer is working on
   some change and adds a function that will be used as part of that
   change but isn't called yet because the change is incomplete, this
   will emit a dead code warning and break the build. Because these
   warnings are turned into errors, this can prevent a developer from
   running tests while working on a change that's in an incomplete
   state.

   The typical solution to this is to temporarily remove the
   `#![deny(warnings)]` attributes while working on a change that
   temporarily introduces warnings. However, the downside of this is
   this can accidentally be committed, and then warnings will no longer
   be denied for a particular crate. This means we have another thing to
   look out for when reviewing PRs.

As an alternative, this branch changes the proxy's CI configuration so
that warnings are denied on CI builds using `RUSTFLAGS="-D warnings"`,
rather than using `#![deny(...)] attributes in the code itself. This has
the advantage that when building locally, warnings don't fail the build.

In addition, I've added a separate CI job in the `deps` workflow that's
specifically for checking for deprecation warnings using `RUSTFLAGS="-D
deprecated". All the other builds now pass `RUSTFLAGS="-D warnings -A
deprecated" to allow deprecations, so that they can't break other
builds. The deprecations CI job should be allowed to fail, as it's
informational --- it shouldn't block PRs from merging, but it provides
information about things that should be addressed when possible.

In the future, it would be nice to change this job so that it creates
new issues for deprecation warnings rather than failing, similarly to
what we currently do for security advisories. That way, new deprecations
no longer block PRs from merging, but instead create issues that can be
fixed separately.

[1]: https://rust-unofficial.github.io/patterns/anti_patterns/deny-warnings.html

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-05-16 15:58:50 -07:00
Oliver Gould 2100c9f445
Consolidate error chain inspection with `cause_ref` (#1671)
We have similar/redundant code that handles inspecting (boxed) errors to
determine whether they are caused by a given error type. This change
replaces the other methods for expecting with utility functions
`is_caused_by` and `cause_ref`.

These helpers are now tested.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-16 15:22:11 -07:00
Oliver Gould a5d7f0e30b
dns: Fall back to A record when SRV resolution fails (#1670)
When resolving control plane components, we first resolve a SRV
record. If we're unable to parse IPv4 addresses from the record,
then we fall back to an A record lookup. But if the initial resolution
fails completely (i.e. doesn't produce any record data), then we don't
fall back to an A record.

This change fixes this fallback behavior so that we attempt A record
lookups whenever a SRV lookup fails. In doing so, we change the dns
module to use typed errors (avoiding boxing) so that we can print
better error messages and have static guarantees about the error
types being handled.

Fixes linkerd/linkerd2#8296

Signed-off-by: Oliver Gould <ver@buoyant.io>
Co-authored-by: Alex Leong <alex@buoyant.io>
2022-05-16 10:52:49 -07:00
dependabot[bot] a8e4a2e3f7
build(deps): bump tonic from 0.7.1 to 0.7.2 (#1652)
* build(deps): bump tonic from 0.7.1 to 0.7.2

Bumps [tonic](https://github.com/hyperium/tonic) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.7.1...v0.7.2)

---
updated-dependencies:
- dependency-name: tonic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix deprecation warning

Signed-off-by: Eliza Weisman <eliza@buoyant.io>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2022-05-16 10:13:56 -07:00
dependabot[bot] f9d7d18ca1
build(deps): bump itoa from 1.0.1 to 1.0.2 (#1669)
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](https://github.com/dtolnay/itoa/compare/1.0.1...1.0.2)

---
updated-dependencies:
- dependency-name: itoa
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 10:12:06 -07:00
dependabot[bot] c301039d86
build(deps): bump tokio-util from 0.7.1 to 0.7.2 (#1668)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.1...tokio-util-0.7.2)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 10:11:47 -07:00
dependabot[bot] e3fecb1f7d
build(deps): bump ryu from 1.0.9 to 1.0.10 (#1667)
Bumps [ryu](https://github.com/dtolnay/ryu) from 1.0.9 to 1.0.10.
- [Release notes](https://github.com/dtolnay/ryu/releases)
- [Commits](https://github.com/dtolnay/ryu/compare/1.0.9...1.0.10)

---
updated-dependencies:
- dependency-name: ryu
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 10:11:22 -07:00
dependabot[bot] a72b73ebc0
build(deps): bump rustls from 0.20.4 to 0.20.5 (#1666)
Bumps [rustls](https://github.com/rustls/rustls) from 0.20.4 to 0.20.5.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.20.4...v/0.20.5)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 10:11:00 -07:00
dependabot[bot] d85c02ecf9
build(deps): bump tj-actions/changed-files from 19 to 20 (#1665)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 19 to 20.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](a6d456f542...581eef0495)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 10:10:37 -07:00
dependabot[bot] 85ae7edf59
build(deps): bump syn from 1.0.93 to 1.0.94 (#1664)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.93 to 1.0.94.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.93...1.0.94)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-13 12:32:20 -07:00
Eliza Weisman 862e2f1a06
metrics: add `process_uptime_seconds_total` metric (#1659)
The proxy exposes a `process_cpu_seconds_total` metric. It also exposes
a `process_start_time_seconds` metric. But given a random metrics
snapshot, we have no way of knowing the proxy's uptime unless we know
the current time at the time of the snapshot. linkerd/linkerd2#8443
proposed adding a `process_uptime_seconds_total` metric tracking the
(fractional) number of seconds since the process started, to make these
other process metrics easier to interpret.

This branch implements the `process_uptime_seconds_total` metric.
Actually adding the metric is rather simple.

However, it occurred to me that uptimes are also used as timestamps in
the proxy's `tracing` logs. Currently, the start time used to calculate
log timestamps is just recorded when constructing the logger. If
separate `Instant`s are used as the start time for log uptime timestamps
and for the `process_uptime_seconds_total` metric, this means the
process' uptime as reported by the metrics endpoint and the process'
uptime according to log messages may not quite agree. Therefore, I
thought it would be good if a single `Instant` was used for both logging
and metrics, and I made some additional changes so that we can record a
single timestamp when the proxy starts, and pass it into both the
metrics endpoint and the logger. This does make this branch a slightly
larger change, though.

Closes linkerd/linkerd2#8443

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-05-12 09:54:57 -07:00
dependabot[bot] 5d8a32d0aa
build(deps): bump syn from 1.0.92 to 1.0.93 (#1661)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.92 to 1.0.93.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.92...1.0.93)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 08:26:53 -07:00
dependabot[bot] 31a44013f3
build(deps): bump EmbarkStudios/cargo-deny-action from 1.2.16 to 1.2.17 (#1660)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.2.16 to 1.2.17.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](9b350011b9...3481b77dfd)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 08:26:22 -07:00
dependabot[bot] 0e4b1476d2
build(deps): bump proc-macro2 from 1.0.37 to 1.0.38 (#1658)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.37 to 1.0.38.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.37...1.0.38)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 11:01:44 -07:00
dependabot[bot] 13e44344fe
build(deps): bump mio from 0.8.2 to 0.8.3 (#1656)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.2...v0.8.3)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:39:48 -07:00
dependabot[bot] 8c1d42aada
build(deps): bump tokio from 1.18.1 to 1.18.2 (#1657)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.18.1 to 1.18.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.18.1...tokio-1.18.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:38:52 -07:00
dependabot[bot] d2934eae85
build(deps): bump prost from 0.10.0 to 0.10.3 (#1655)
Bumps [prost](https://github.com/tokio-rs/prost) from 0.10.0 to 0.10.3.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.10.0...v0.10.3)

---
updated-dependencies:
- dependency-name: prost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:31:28 -07:00
dependabot[bot] e078442f1d
build(deps): bump EmbarkStudios/cargo-deny-action from 1.2.15 to 1.2.16 (#1653)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.2.15 to 1.2.16.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](ccfac4e084...9b350011b9)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:26:15 -07:00
dependabot[bot] 9004d9c6e1
build(deps): bump socket2 from 0.4.4 to 0.4.5 (#1654)
Bumps [socket2](https://github.com/rust-lang/socket2) from 0.4.4 to 0.4.5.
- [Release notes](https://github.com/rust-lang/socket2/releases)
- [Changelog](https://github.com/rust-lang/socket2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/socket2/compare/v0.4.4...v0.4.5)

---
updated-dependencies:
- dependency-name: socket2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:24:19 -07:00
dependabot[bot] 5b14d92f4d
build(deps): bump prost-build from 0.10.0 to 0.10.3 (#1651)
Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.10.0 to 0.10.3.
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.10.0...v0.10.3)

---
updated-dependencies:
- dependency-name: prost-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:13:14 -07:00
dependabot[bot] 297048c2cb
build(deps): bump tonic-build from 0.7.1 to 0.7.2 (#1650)
Bumps [tonic-build](https://github.com/hyperium/tonic) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.7.1...v0.7.2)

---
updated-dependencies:
- dependency-name: tonic-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:10:06 -07:00
dependabot[bot] ad3aa85230
build(deps): bump tokio-rustls from 0.23.3 to 0.23.4 (#1648)
Bumps [tokio-rustls](https://github.com/tokio-rs/tls) from 0.23.3 to 0.23.4.
- [Release notes](https://github.com/tokio-rs/tls/releases)
- [Commits](https://github.com/tokio-rs/tls/commits)

---
updated-dependencies:
- dependency-name: tokio-rustls
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:09:35 -07:00
dependabot[bot] ee447c81af
build(deps): bump serde_json from 1.0.80 to 1.0.81 (#1647)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.80...v1.0.81)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 10:09:27 -07:00
Oliver Gould df421748d1
ingress: Fall back to normal TCP forwarding (#1649)
Currently, ingress-mode proxies ONLY support HTTP traffic. This is an
unfortunate tradeoff, as ingress may make arbitrary outbound connections
(e.g., TLS calls to external services). To avoid requiring that these
connections be completely skipped from the proxy, we can fallback to
transporting these connections after HTTP detection fails.

Ingress-mode proxies DO NOT fully honor port opacity configurations:
HTTP detection is always performed before discovery is attempted.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-05-06 14:10:35 -07:00
dependabot[bot] 29fc95269c
build(deps): bump num-traits from 0.2.14 to 0.2.15 (#1644) 2022-05-03 07:28:19 -07:00
dependabot[bot] f5e515620d
build(deps): bump log from 0.4.16 to 0.4.17 (#1645) 2022-05-03 07:27:58 -07:00
dependabot[bot] 9569f7d4f0
build(deps): bump unicode-xid from 0.2.2 to 0.2.3 (#1646) 2022-05-03 07:27:33 -07:00
dependabot[bot] a93ba5347b
build(deps): bump tokio from 1.18.0 to 1.18.1 (#1643) 2022-05-03 06:56:17 -07:00
dependabot[bot] 94564de6e1
build(deps): bump memchr from 2.4.1 to 2.5.0 (#1638)
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/BurntSushi/memchr/releases)
- [Commits](https://github.com/BurntSushi/memchr/compare/2.4.1...2.5.0)

---
updated-dependencies:
- dependency-name: memchr
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-02 14:07:51 -07:00
dependabot[bot] 07aab53720
build(deps): bump parking_lot_core from 0.9.2 to 0.9.3 (#1637)
Bumps [parking_lot_core](https://github.com/Amanieu/parking_lot) from 0.9.2 to 0.9.3.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/core-0.9.2...core-0.9.3)

---
updated-dependencies:
- dependency-name: parking_lot_core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-02 14:07:29 -07:00
dependabot[bot] 61ad06aa84
build(deps): bump thiserror from 1.0.30 to 1.0.31 (#1636)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.30 to 1.0.31.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.30...1.0.31)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-02 14:07:13 -07:00
dependabot[bot] 8b98d0071b
build(deps): bump serde_json from 1.0.79 to 1.0.80 (#1635)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.79 to 1.0.80.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.79...v1.0.80)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-02 14:06:37 -07:00
dependabot[bot] 09236bd0e3
build(deps): bump serde from 1.0.136 to 1.0.137 (#1639)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.136 to 1.0.137.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.136...v1.0.137)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-02 14:06:06 -07:00
dependabot[bot] ffd83a967e
build(deps): bump http from 0.2.6 to 0.2.7 (#1631)
Bumps [http](https://github.com/hyperium/http) from 0.2.6 to 0.2.7.
- [Release notes](https://github.com/hyperium/http/releases)
- [Changelog](https://github.com/hyperium/http/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http/compare/v0.2.6...v0.2.7)

---
updated-dependencies:
- dependency-name: http
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:27:50 -07:00
dependabot[bot] ad3c024ebe
build(deps): bump syn from 1.0.91 to 1.0.92 (#1634)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.91 to 1.0.92.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.91...1.0.92)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:18:35 -07:00
dependabot[bot] c3ec7bb6cf
build(deps): bump tokio from 1.17.0 to 1.18.0 (#1633)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.17.0 to 1.18.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.17.0...tokio-1.18.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:15:05 -07:00
dependabot[bot] 178a5d6a05
build(deps): bump libc from 0.2.124 to 0.2.125 (#1632)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.124 to 0.2.125.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.124...0.2.125)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:10:19 -07:00
dependabot[bot] 0126aafab3
build(deps): bump unicode-bidi from 0.3.7 to 0.3.8 (#1626)
Bumps [unicode-bidi](https://github.com/servo/unicode-bidi) from 0.3.7 to 0.3.8.
- [Release notes](https://github.com/servo/unicode-bidi/releases)
- [Commits](https://github.com/servo/unicode-bidi/commits)

---
updated-dependencies:
- dependency-name: unicode-bidi
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:02:30 -07:00
dependabot[bot] bda8f2ee64
build(deps): bump tinyvec from 1.5.1 to 1.6.0 (#1625)
Bumps [tinyvec](https://github.com/Lokathor/tinyvec) from 1.5.1 to 1.6.0.
- [Release notes](https://github.com/Lokathor/tinyvec/releases)
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.5.1...v1.6.0)

---
updated-dependencies:
- dependency-name: tinyvec
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:01:54 -07:00
dependabot[bot] ddc677c90b
build(deps): bump tracing-log from 0.1.2 to 0.1.3 (#1622)
Bumps [tracing-log](https://github.com/tokio-rs/tracing) from 0.1.2 to 0.1.3.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-log-0.1.2...tracing-log-0.1.3)

---
updated-dependencies:
- dependency-name: tracing-log
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:01:43 -07:00
dependabot[bot] 9a0fbdddc6
build(deps): bump anyhow from 1.0.56 to 1.0.57 (#1623)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.56 to 1.0.57.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.56...1.0.57)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:01:22 -07:00
dependabot[bot] e325f2e6e5
build(deps): bump actions/checkout from 3.0.1 to 3.0.2 (#1621)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](dcd71f6466...2541b1294d)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 21:00:22 -07:00
dependabot[bot] 947bec973b
build(deps): bump codecov/codecov-action from 3.0.0 to 3.1.0 (#1620)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](e3c560433a...81cd2dc814)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 20:59:52 -07:00
dependabot[bot] de96e60ab4
build(deps): bump pin-project-lite from 0.2.8 to 0.2.9 (#1630)
Bumps [pin-project-lite](https://github.com/taiki-e/pin-project-lite) from 0.2.8 to 0.2.9.
- [Release notes](https://github.com/taiki-e/pin-project-lite/releases)
- [Changelog](https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project-lite/compare/v0.2.8...v0.2.9)

---
updated-dependencies:
- dependency-name: pin-project-lite
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-29 16:17:22 -06:00
dependabot[bot] 5c59c7c8d2
build(deps): bump tonic-build from 0.7.0 to 0.7.1 (#1629)
Bumps [tonic-build](https://github.com/hyperium/tonic) from 0.7.0 to 0.7.1.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.7.0...v0.7.1)

---
updated-dependencies:
- dependency-name: tonic-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Oliver Gould <ver@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2022-04-29 09:32:24 -07:00
dependabot[bot] 70504bcce2
build(deps): bump httparse from 1.7.0 to 1.7.1 (#1627) 2022-04-29 06:18:25 -07:00
dependabot[bot] 122e61c13c
build(deps): bump tj-actions/changed-files from 18.7 to 19 (#1628)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 18.7 to 19.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](a59f800cbb...a6d456f542)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-28 08:49:58 -06:00
dependabot[bot] e36f276828
build(deps): bump prettyplease from 0.1.9 to 0.1.10 (#1624)
Bumps [prettyplease](https://github.com/dtolnay/prettyplease) from 0.1.9 to 0.1.10.
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.1.9...0.1.10)

---
updated-dependencies:
- dependency-name: prettyplease
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-25 09:57:32 -06:00
Jelipo ed70b7d306
Replace std::<num>::MAX with <num>::MAX (#1619)
Rust 1.43 eliminated the need to use explicit imports
to reference the numeric constants. The old form will
be deprecated in the future.

Signed-off-by: Haining <haining.cao@daocloud.io>
2022-04-20 08:04:35 -07:00
Oliver Gould f288ac4c17
Update Rust to v1.60 (#1615)
- Updates the debian base from `buster` to `bullseye`;
- Bumps the devcontainer version;
- Removes the `update-rust-version.sh` script, since it's too brittle
  and isn't necessary any longer (since we check rust versions in CI);
- Updates checksec to v2.5.;
- Acknowledges that releases no longer produces binaries with
  `FORTIFY_SOURCE`

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-19 13:59:54 -07:00
dependabot[bot] 5d72e7a477
build(deps): bump libc from 0.2.123 to 0.2.124 (#1616)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.123 to 0.2.124.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.123...0.2.124)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-19 13:50:51 -07:00
Oliver Gould e81c6a6e87
outbound: Preserve opaqueness on unknown endpoints (#1617)
The outbound stack only honors opaqueness when the profile response
clearly indicates that the target is a known endpoint or logical
service. This ignores the case when the target is unknown but the target
port is in the default opaque ports list, in which case the profile
response has no metadata except for the opaqueness setting.

This change handles this case explicitly and adds a test for the
`switch_logical` stack to ensure that these profile responses are
honored.

Fixes linkerd/linkerd2#8273

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-19 13:40:08 -07:00
Oliver Gould 25a480b8a8
outbound: Add logging for endpoint opaqueness (#1614)
The outbound proxy's logging doesn't make it clear how targets decide
whether protocol detection is employed. This change adds debug logging
to make it easier to understand these decisions.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-19 08:18:20 -07:00
dependabot[bot] 7624cd2492
build(deps): bump ipnet from 2.4.0 to 2.5.0 (#1613) 2022-04-18 07:15:58 -07:00
dependabot[bot] 34fce8c9fe
build(deps): bump rustls-pemfile from 0.3.0 to 1.0.0 (#1611)
Bumps [rustls-pemfile](https://github.com/rustls/pemfile) from 0.3.0 to 1.0.0.
- [Release notes](https://github.com/rustls/pemfile/releases)
- [Commits](https://github.com/rustls/pemfile/compare/v/0.3.0...v/1.0.0)

---
updated-dependencies:
- dependency-name: rustls-pemfile
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-16 11:58:14 -07:00
Eliza Weisman d611a15e6c
tracing: record errors as `&dyn Error`s when possible (#1606)
`tracing-core` v0.1.26 improved support for recording
`std::error::Error` trait objects as structured values rather than as
`fmt::Display` or `fmt::Debug`. This allows the `tracing` subscriber to
log these errors somewhat nicer, such as including the error's `cause`
as a separate field (if it has one).

This branch updates the `tracing-core` dependency to v0.1.26, and
changes `tracing` events that previously recorded `dyn Error`s using
`fmt::Display` to record them using the `Value` impl for `dyn Error`
instead. I didn't touch any errors that had not already been converted
to a `Box<dyn Error + ...>`.
2022-04-16 11:56:18 -07:00
dependabot[bot] bd7aef1035
build(deps): bump tracing from 0.1.33 to 0.1.34 (#1609)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.33 to 0.1.34.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.33...tracing-0.1.34)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-16 11:44:23 -07:00
dependabot[bot] 02a42c7255
build(deps): bump actions/checkout from 3.0.0 to 3.0.1 (#1607)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](a12a3943b4...dcd71f6466)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-16 11:34:02 -07:00
dependabot[bot] 5ed3a143ad
build(deps): bump libc from 0.2.122 to 0.2.123 (#1605)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.122 to 0.2.123.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.122...0.2.123)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-14 12:24:29 -07:00
Oliver Gould a7bcfb26ab
dev: Limit devcontainer memory usage to 8GB (#1604)
Devconatiner memory usage is currently unbounded. This allows runaway
processes (like rust-analyzer) to monopolize system resources, causing
memory exhaustion for the host OS.

This change adds a limit so that the oomkiller reaps devcontainer
processes when they exceed 8GB.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-11 14:24:35 -07:00
dependabot[bot] bf389539ff
build(deps): bump flate2 from 1.0.22 to 1.0.23 (#1603)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.22 to 1.0.23.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.22...1.0.23)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11 11:52:15 -07:00
dependabot[bot] 8c54cef3cb
build(deps): bump httparse from 1.6.0 to 1.7.0 (#1602)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11 11:49:22 -07:00
Oliver Gould fb4f44cd15
Update to linkerd2-proxy-api v0.5 and tonic v0.7 (#1596)
With tonic v0.7, we now have the ability to provide a fixed PROTOC
binary (rather than building/fetching a protoc implementation at
build-time).

This change updates the `linkerd-transport-header` and
`opencensus-proto` crates to use statically-generated sources,
eliminating the need for a `protoc` binary at build-time. Each crate
includes a `bootstrap` test that fails if the generated sources differ
from what is checked into git. These tests can also be used to
regenerate sources when the protobuf (or tonic generation) changes.

A local `install-protoc` action is added that fetches a protoc binary
and configures the `PROTOC_NO_VENDOR` and `PROTOC` environment
variables. This action is used by the check-all, check-each, and test
workflows.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-11 11:29:33 -07:00
dependabot[bot] b49a87f541
build(deps): bump quote from 1.0.17 to 1.0.18 (#1598)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.17 to 1.0.18.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.17...1.0.18)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11 11:14:48 -07:00
dependabot[bot] 2aac4b4de7
build(deps): bump tracing from 0.1.32 to 0.1.33 (#1599)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.32 to 0.1.33.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.32...tracing-0.1.33)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11 11:14:40 -07:00
dependabot[bot] 9ef551caf3
build(deps): bump tracing-subscriber from 0.3.10 to 0.3.11 (#1600)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.10 to 0.3.11.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.10...tracing-subscriber-0.3.11)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11 11:14:30 -07:00
Oliver Gould e1f706a7e9
ci: Fix check-each workflow(#1597)
Our check-each workflow is subtly broken: we specify a YAML list of
paths to watch for changes, but the `changed-files` action expects a
newline-separated list. This change fixes this configuration.

This change also moves the complicated `list-changed-crates` script into
its own (local) action so that the script is easier to read/test/maintain.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-11 10:05:30 -07:00
Oliver Gould bc65c8d1df
ci: Only run the release workflow on PRs that touch the workflow (#1601)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-11 09:16:29 -07:00
Oliver Gould e13a2e18cc
ci: Run the release workflow on changes (#1595)
Currently we only exercise the release workflow on tagged releases, but
this makes it difficult to validate changes to the workflow itself.

This change updates the release workflow to run its build on pull
requests that change the workflow. The release-publishing step is only
run on tags, though.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-08 19:54:50 -07:00
Oliver Gould 346bc73a56
Fix inbound fuzzing build (#1594)
Nightly builds were broken when the fuzzer change landed, so we missed
the regression. This change fixes the inbound fuzzer build. It also
updates the devcontainer build to include a nightly toolchain with
cargo-fuzz.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-04-08 19:22:37 -07:00
Shirshak 5cecf498e2
readme: Fix broken link to fuzzing report (#1573)
The fuzzing report link is broken in the readme. This change corrects
the relative URL.

Co-authored-by: Oliver Gould <ver@buoyant.io>
2022-04-08 11:57:08 -07:00
Eliza Weisman 20634d9176
tracing: disable regular expression matching in log filters (#1580)
[`tracing-subscriber` v0.3.10][1] introduces a new [builder API][2] for
configuring the `EnvFilter` type. One of the configurations that can now
be set using the builder is whether span field value filters for
`fmt::Debug` fields are interpreted as precise string matching or as
regular expressions.

Disabling regular expressions is strongly recommended in cases where
filter configurations can come from an untrusted source, as a malicious
regular expression is a potential denial-of-service vector. In the
proxy, we already implement a form of access control for setting the
filter --- the `/admin/log-level` endpoint denies requests that did not
originate from localhost, so it's only possible to set the log level
when SSHed into the pod. However, it's probably wise to disable regex
filters here as well, as a form of additional defense in depth.

Therefore, this branch updates the `tracing-subscriber` dependency to
v0.3.10, and disables regular expression filters.

[1]: https://github.com/tokio-rs/tracing/releases/tag/tracing-subscriber-0.3.10
[2]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.Builder.html
2022-04-08 11:53:18 -07:00
dependabot[bot] befb20060d
build(deps): bump libc from 0.2.121 to 0.2.122 (#1591)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.121 to 0.2.122.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.121...0.2.122)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 11:49:03 -07:00
dependabot[bot] 6c750b7bcb
build(deps): bump codecov/codecov-action from 2.1.0 to 3 (#1584)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 2.1.0 to 3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](f32b3a3741...e3c560433a)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 08:42:03 -07:00
dependabot[bot] 3369ca1a28
build(deps): bump redox_syscall from 0.2.12 to 0.2.13 (#1578)
Bumps redox_syscall from 0.2.12 to 0.2.13.

---
updated-dependencies:
- dependency-name: redox_syscall
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 08:41:32 -07:00
dependabot[bot] 3fc5621942
build(deps): bump syn from 1.0.90 to 1.0.91 (#1586)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.90 to 1.0.91.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.90...1.0.91)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 08:41:12 -07:00
dependabot[bot] 729e5a7cc4
build(deps): bump web-sys from 0.3.56 to 0.3.57 (#1590)
Bumps [web-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.56 to 0.3.57.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/commits)

---
updated-dependencies:
- dependency-name: web-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 08:38:32 -07:00
dependabot[bot] 40f1964442
build(deps): bump proc-macro2 from 1.0.36 to 1.0.37 (#1588)
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.36 to 1.0.37.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.36...1.0.37)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 08:18:57 -07:00
dependabot[bot] dfec37e32a
build(deps): bump js-sys from 0.3.56 to 0.3.57 (#1585)
Bumps [js-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.56 to 0.3.57.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/commits)

---
updated-dependencies:
- dependency-name: js-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 08:03:04 -07:00
dependabot[bot] 1455bb0ea0
build(deps): bump tj-actions/changed-files from 18.5 to 18.7 (#1589)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 18.5 to 18.7.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](72aab29255...a59f800cbb)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 07:37:23 -07:00
dependabot[bot] 8f90cf6557
build(deps): bump slab from 0.4.5 to 0.4.6 (#1583)
Bumps [slab](https://github.com/tokio-rs/slab) from 0.4.5 to 0.4.6.
- [Release notes](https://github.com/tokio-rs/slab/releases)
- [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/slab/compare/v0.4.5...v0.4.6)

---
updated-dependencies:
- dependency-name: slab
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-07 19:45:39 -07:00
dependabot[bot] decf6a1518
build(deps): bump EmbarkStudios/cargo-deny-action from 1.2.12 to 1.2.15 (#1581)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.2.12 to 1.2.15.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](8acbae97b5...ccfac4e084)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-07 18:21:26 -07:00
dependabot[bot] 7b79f58fcf
build(deps): bump tracing-subscriber from 0.3.9 to 0.3.10 (#1582)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.9 to 0.3.10.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.9...tracing-subscriber-0.3.10)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-07 18:21:01 -07:00
dependabot[bot] 2361051025
build(deps): bump trust-dns-resolver from 0.21.1 to 0.21.2 (#1577)
Bumps [trust-dns-resolver](https://github.com/bluejekyll/trust-dns) from 0.21.1 to 0.21.2.
- [Release notes](https://github.com/bluejekyll/trust-dns/releases)
- [Changelog](https://github.com/bluejekyll/trust-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bluejekyll/trust-dns/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: trust-dns-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-07 17:56:08 -07:00
dependabot[bot] 36721c61df
build(deps): bump h2 from 0.3.12 to 0.3.13 (#1579)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.12 to 0.3.13.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.12...v0.3.13)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-07 17:55:45 -07:00
dependabot[bot] 537e802327
build(deps): bump parking_lot_core from 0.9.1 to 0.9.2 (#1575)
Bumps [parking_lot_core](https://github.com/Amanieu/parking_lot) from 0.9.1 to 0.9.2.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/core-0.9.1...core-0.9.2)

---
updated-dependencies:
- dependency-name: parking_lot_core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-31 10:02:44 -07:00
dependabot[bot] 6f84d4999d
build(deps): bump lock_api from 0.4.6 to 0.4.7 (#1576)
Bumps [lock_api](https://github.com/Amanieu/parking_lot) from 0.4.6 to 0.4.7.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/lock_api-0.4.6...lock_api-0.4.7)

---
updated-dependencies:
- dependency-name: lock_api
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-31 10:00:45 -07:00
dependabot[bot] aabf49113f
build(deps): bump indexmap from 1.8.0 to 1.8.1 (#1572)
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/bluss/indexmap/compare/1.8.0...1.8.1)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-30 07:19:31 -07:00
dependabot[bot] b1508a94f2
build(deps): bump tj-actions/changed-files from 18.4 to 18.5 (#1571)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 18.4 to 18.5.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](e35d0afdc1...72aab29255)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-30 07:19:03 -07:00
dependabot[bot] 9898d0c11b
build(deps): bump syn from 1.0.89 to 1.0.90 (#1569)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.89 to 1.0.90.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.89...1.0.90)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 16:33:55 -06:00
dependabot[bot] 2eaea73216
build(deps): bump getrandom from 0.2.5 to 0.2.6 (#1564)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.5 to 0.2.6.
- [Release notes](https://github.com/rust-random/getrandom/releases)
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.5...v0.2.6)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 14:18:16 -07:00
dependabot[bot] 07aab4eeee
build(deps): bump quote from 1.0.16 to 1.0.17 (#1563)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.16 to 1.0.17.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.16...1.0.17)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 14:18:02 -07:00
dependabot[bot] 2df847adf8
build(deps): bump async-trait from 0.1.52 to 0.1.53 (#1562)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.52 to 0.1.53.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.52...0.1.53)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 14:17:47 -07:00
dependabot[bot] 6bdd4e32b4
build(deps): bump tokio-util from 0.7.0 to 0.7.1 (#1566)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.0 to 0.7.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.0...tokio-util-0.7.1)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 14:59:31 -06:00
dependabot[bot] 945927405b
build(deps): bump redox_syscall from 0.2.11 to 0.2.12 (#1561)
Bumps redox_syscall from 0.2.11 to 0.2.12.

---
updated-dependencies:
- dependency-name: redox_syscall
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-25 08:59:37 -06:00
Oliver Gould 279b30105c
inbound: Support multiple authorization types (#1560)
The inbound policy module uses the label `saz_name` to indicate the
authorization resource being employed to allow/deny traffic. This
corresponds to the `ServerAuthorization` kubernetes resource (with the
`saz` shortname). This resource type is going to be deprecated in favor
of a new, more general, `AuthorizationPolicy` resource.

When this change is made in the control plane, the policy controller
will include a `kind` label on gRPC messages indicating whether the
resource type, or `default` if a default policy is in effect.

This change honors this new `kind` field and adds a dedicated label to
indicate the kind.

Server labels are changed from:

    srv_name="default:foo"
    srv_name="fah"

to:

    srv_kind="default",srv_name="foo"
    srv_kind="server",srv_name="fah"

Authorization labels are changed from:

    saz_name="default:bar"
    saz_name="bah"

to:

    authz_kind="default",authz_name="bar"
    authz_kind="serverauthorization",authz_name="bah"

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-03-24 12:35:45 -07:00
dependabot[bot] f08371e67c
build(deps): bump log from 0.4.15 to 0.4.16 (#1558)
Bumps [log](https://github.com/rust-lang/log) from 0.4.15 to 0.4.16.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/commits)

---
updated-dependencies:
- dependency-name: log
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-23 09:04:33 -06:00
dependabot[bot] fa74103352
build(deps): bump hyper from 0.14.17 to 0.14.18 (#1559)
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.17 to 0.14.18.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.17...v0.14.18)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-23 09:04:11 -06:00
dependabot[bot] 1750ee29f9
build(deps): bump foreign-types-macros from 0.2.1 to 0.2.2 (#1556)
Bumps [foreign-types-macros](https://github.com/sfackler/foreign-types) from 0.2.1 to 0.2.2.
- [Release notes](https://github.com/sfackler/foreign-types/releases)
- [Commits](https://github.com/sfackler/foreign-types/compare/v0.2.1...foreign-types-macros-v0.2.2)

---
updated-dependencies:
- dependency-name: foreign-types-macros
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-22 09:42:54 -07:00
dependabot[bot] 7d8185ed58
build(deps): bump foreign-types-shared from 0.3.0 to 0.3.1 (#1557)
Bumps [foreign-types-shared](https://github.com/sfackler/foreign-types) from 0.3.0 to 0.3.1.
- [Release notes](https://github.com/sfackler/foreign-types/releases)
- [Commits](https://github.com/sfackler/foreign-types/compare/v0.3.0...foreign-types-shared-v0.3.1)

---
updated-dependencies:
- dependency-name: foreign-types-shared
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-22 09:42:39 -07:00
dependabot[bot] a0037a368e
build(deps): bump log from 0.4.14 to 0.4.15 (#1555)
Bumps [log](https://github.com/rust-lang/log) from 0.4.14 to 0.4.15.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.14...0.4.15)

---
updated-dependencies:
- dependency-name: log
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-22 09:42:01 -07:00
dependabot[bot] 8c75a805da
build(deps): bump tj-actions/changed-files from 18.3 to 18.4 (#1551)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 18.3 to 18.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](081ee9cc54...e35d0afdc1)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-21 13:20:24 -07:00
dependabot[bot] bbd0b23130
build(deps): bump tokio-rustls from 0.23.2 to 0.23.3 (#1553)
Bumps [tokio-rustls](https://github.com/tokio-rs/tls) from 0.23.2 to 0.23.3.
- [Release notes](https://github.com/tokio-rs/tls/releases)
- [Commits](https://github.com/tokio-rs/tls/commits)

---
updated-dependencies:
- dependency-name: tokio-rustls
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-21 13:20:01 -07:00
dependabot[bot] 604a8c47c3
build(deps): bump which from 4.2.4 to 4.2.5 (#1554)
Bumps [which](https://github.com/harryfei/which-rs) from 4.2.4 to 4.2.5.
- [Release notes](https://github.com/harryfei/which-rs/releases)
- [Commits](https://github.com/harryfei/which-rs/compare/4.2.4...4.2.5)

---
updated-dependencies:
- dependency-name: which
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-21 13:19:37 -07:00
dependabot[bot] f2f1b3754c
build(deps): bump tj-actions/changed-files from 18.2 to 18.3 (#1547)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 18.2 to 18.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](1f30bd2085...081ee9cc54)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-18 13:37:54 -06:00
dependabot[bot] 932343bf8e
build(deps): bump syn from 1.0.88 to 1.0.89 (#1548)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.88 to 1.0.89.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.88...1.0.89)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-18 13:37:36 -06:00
dependabot[bot] 12ccc5eace
build(deps): bump quote from 1.0.15 to 1.0.16 (#1549)
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.15 to 1.0.16.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.15...1.0.16)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-18 09:56:58 -07:00
dependabot[bot] eff56a42c9
build(deps): bump mio from 0.8.1 to 0.8.2 (#1550)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.1 to 0.8.2.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.1...v0.8.2)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-18 09:56:50 -07:00
dependabot[bot] 87c9a726ac
build(deps): bump tj-actions/changed-files from 18.1 to 18.2 (#1546)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 18.1 to 18.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](227e314ad8...1f30bd2085)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-16 09:33:21 -06:00
dependabot[bot] d36e4023c7
build(deps): bump tj-actions/changed-files from 18 to 18.1 (#1543)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 18 to 18.1.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](ffd30e8dd8...227e314ad8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-15 15:36:25 -06:00
dependabot[bot] d0a61c1345
build(deps): bump libc from 0.2.119 to 0.2.120 (#1544)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.119 to 0.2.120.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.119...0.2.120)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-15 12:33:08 -07:00
dependabot[bot] a30c7030f6
build(deps): bump syn from 1.0.87 to 1.0.88 (#1545)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.87 to 1.0.88.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.87...1.0.88)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-15 12:32:42 -07:00
dependabot[bot] 99d9b26280
build(deps): bump mio from 0.8.0 to 0.8.1 (#1542)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/commits)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-14 09:58:21 -07:00
dependabot[bot] 537937e5c1
build(deps): bump syn from 1.0.86 to 1.0.87 (#1541)
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.86 to 1.0.87.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.86...1.0.87)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-14 09:57:39 -07:00
dependabot[bot] 2aff0eaebe
build(deps): bump async-stream from 0.3.2 to 0.3.3 (#1540)
Bumps [async-stream](https://github.com/tokio-rs/async-stream) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/tokio-rs/async-stream/releases)
- [Commits](https://github.com/tokio-rs/async-stream/compare/v0.3.2...v0.3.3)

---
updated-dependencies:
- dependency-name: async-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-14 09:57:10 -07:00
dependabot[bot] ccc4599983
build(deps): bump tj-actions/changed-files from 17.3 to 18 (#1539)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 17.3 to 18.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](f5a8de7d36...ffd30e8dd8)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-14 09:56:23 -07:00
Eliza Weisman d16ffa5240
bump `h2` to v0.3.12 and remove patch (#1538)
Version v0.3.12 of `h2` has been published, so we no longer need the
patch added in #1536 to pick up unreleased changes.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-03-09 11:56:54 -08:00
Oliver Gould cbb3390f88
Use the connection's HTTP version in transport header (#1533)
Currently, when the outbound proxy communicates with a meshed endpoint
that uses opaque transport (i.e. multi-cluster gateways), it *always*
sets the gateway header's session protocol to HTTP/2, since the meshed
endpoint supports HTTP/2 protocol upgrading. But the HTTP client may
choose not to use HTTP/2 if the request includes the `Upgrade` header,
as it does for WebSocket connections. In these cases, the transport
header should indicate that the connection is HTTP/1.

This change modifies the HTTP client to pass the used protocol version
when building a connection. This value is then used to set the session
protocol header when it is required..

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-03-09 11:54:40 -08:00
dependabot[bot] 28f176bbca
build(deps): bump tracing from 0.1.31 to 0.1.32 (#1537) 2022-03-09 10:06:38 -08:00
Oliver Gould bbb5c514b5
Update h2 to use unpublished changes (#1536)
`h2` has a few important changes since its last official release:

* hyperium/h2@4dc2b4a Avoids time operations that can panic
* hyperium/h2@85549fc Fixes an issue with header parsing
* hyperium/h2@b8eab38 Removes noise from tracing spans

This change patches our `h2` dependency to use the laster commit on the
master branch.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-03-09 09:33:54 -08:00
dependabot[bot] e9c40ab00a
build(deps): bump tj-actions/changed-files from 17.2 to 17.3 (#1534)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 17.2 to 17.3.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](0bc7d4006f...f5a8de7d36)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-09 07:44:37 -08:00
dependabot[bot] 01c3290594
build(deps): bump regex from 1.5.4 to 1.5.5 (#1535) 2022-03-09 06:59:46 -08:00
dependabot[bot] 499a2e9943
build(deps): bump ipnet from 2.3.1 to 2.4.0 (#1530)
Bumps [ipnet](https://github.com/krisprice/ipnet) from 2.3.1 to 2.4.0.
- [Release notes](https://github.com/krisprice/ipnet/releases)
- [Changelog](https://github.com/krisprice/ipnet/blob/master/RELEASES.md)
- [Commits](https://github.com/krisprice/ipnet/commits)

---
updated-dependencies:
- dependency-name: ipnet
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-08 07:20:16 -08:00
dependabot[bot] de4eb5c165
build(deps): bump libfuzzer-sys from 0.4.2 to 0.4.3 (#1528)
Bumps [libfuzzer-sys](https://github.com/rust-fuzz/libfuzzer) from 0.4.2 to 0.4.3.
- [Release notes](https://github.com/rust-fuzz/libfuzzer/releases)
- [Changelog](https://github.com/rust-fuzz/libfuzzer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/libfuzzer/compare/0.4.2...0.4.3)

---
updated-dependencies:
- dependency-name: libfuzzer-sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-08 07:19:43 -08:00
dependabot[bot] 57943a6e17
build(deps): bump actions/upload-artifact from 2.3.1 to 3 (#1527)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2.3.1 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](82c141cc51...6673cd052c)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-08 07:19:22 -08:00
dependabot[bot] c4f1f980bc
build(deps): bump anyhow from 1.0.55 to 1.0.56 (#1531)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.55 to 1.0.56.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.55...1.0.56)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-08 07:18:55 -08:00
dependabot[bot] 81fa6f1b93
build(deps): bump once_cell from 1.9.0 to 1.10.0 (#1529) 2022-03-06 13:27:36 -08:00
dependabot[bot] e32bf668b7
build(deps): bump actions/download-artifact from 2.1.0 to 3 (#1526)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2.1.0 to 3.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](f023be2c48...fb598a63ae)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-03 09:43:42 -07:00
dependabot[bot] 5e078d1101
build(deps): bump actions/checkout from 2.4.0 to 3 (#1525)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.4.0 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](ec3a7ce113...a12a3943b4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-02 06:57:32 -08:00
dependabot[bot] e12659cffa
build(deps): bump redox_syscall from 0.2.10 to 0.2.11 (#1524)
Bumps redox_syscall from 0.2.10 to 0.2.11.

---
updated-dependencies:
- dependency-name: redox_syscall
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-01 09:17:28 -07:00
dependabot[bot] 579651b470
build(deps): bump trust-dns-resolver from 0.21.0-alpha.5 to 0.21.1 (#1522)
Bumps [trust-dns-resolver](https://github.com/bluejekyll/trust-dns) from 0.21.0-alpha.5 to 0.21.1.
- [Release notes](https://github.com/bluejekyll/trust-dns/releases)
- [Changelog](https://github.com/bluejekyll/trust-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bluejekyll/trust-dns/compare/v0.21.0-alpha.5...v0.21.1)

---
updated-dependencies:
- dependency-name: trust-dns-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-28 10:15:45 -08:00
dependabot[bot] b42083e91a
build(deps): bump tj-actions/changed-files from 17 to 17.2 (#1520)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 17 to 17.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](933541631c...0bc7d4006f)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-28 10:00:14 -08:00
dependabot[bot] e1443a7d0c
build(deps): bump drain from 0.1.0 to 0.1.1 (#1521) 2022-02-28 09:54:35 -08:00
Oliver Gould bc8fce92c9
Update Rust to v1.59.0 (#1519)
Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-25 07:44:15 -08:00
Oliver Gould e4cb6ecc15
Add ExponentialBackoff::new_unchecked (#1517)
Now that we can use const functions, we can update `ExponentialBackoff`
to expose a constructor instead of having public members.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-23 14:56:47 -08:00
dependabot[bot] ca5ce0898d
build(deps): bump tj-actions/changed-files from 16 to 17 (#1515)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 16 to 17.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](4daffbaee1...933541631c)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-23 08:54:57 -08:00
dependabot[bot] 12533827f7
build(deps): bump getrandom from 0.2.4 to 0.2.5 (#1516)
Bumps [getrandom](https://github.com/rust-random/getrandom) from 0.2.4 to 0.2.5.
- [Release notes](https://github.com/rust-random/getrandom/releases)
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.4...v0.2.5)

---
updated-dependencies:
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-23 09:19:38 -05:00
dependabot[bot] 04e06e489b
build(deps): bump anyhow from 1.0.53 to 1.0.55 (#1514)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.53 to 1.0.55.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.53...1.0.55)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-22 10:55:55 -08:00
dependabot[bot] 9516ad6a60
build(deps): bump libc from 0.2.118 to 0.2.119 (#1512)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.118 to 0.2.119.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.118...0.2.119)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-22 10:54:45 -08:00
dependabot[bot] 0597bc73b6
build(deps): bump parking_lot_core from 0.9.0 to 0.9.1 (#1511)
Bumps [parking_lot_core](https://github.com/Amanieu/parking_lot) from 0.9.0 to 0.9.1.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/0.9.0...core-0.9.1)

---
updated-dependencies:
- dependency-name: parking_lot_core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-22 10:53:54 -08:00
dependabot[bot] 0ae6b1a154
build(deps): bump rustls from 0.20.3 to 0.20.4 (#1510)
Bumps [rustls](https://github.com/rustls/rustls) from 0.20.3 to 0.20.4.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.20.3...v/0.20.4)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-22 10:52:46 -08:00
dependabot[bot] 1c2d0dddce
build(deps): bump tj-actions/changed-files from 15.1 to 16 (#1507)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 15.1 to 16.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](4b1f26aed5...4daffbaee1)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-18 09:28:05 -07:00
dependabot[bot] 451c10dd34
build(deps): bump tracing from 0.1.30 to 0.1.31 (#1508)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.30 to 0.1.31.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.30...tracing-0.1.31)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-18 09:27:45 -07:00
dependabot[bot] 2ee4281080
build(deps): bump tracing-subscriber from 0.3.8 to 0.3.9 (#1509)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.8 to 0.3.9.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.8...tracing-subscriber-0.3.9)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-18 09:27:25 -07:00
Oliver Gould 61eb780f6b
cargo: Omit patch versions from Cargo.toml files (#1504)
There's no need for us to specify patch versions in Cargo.toml files,
since we commit our Cargo.lock file. These versions mean that dependency
changes touch unnecessary files, requiring "shotgun surgery" for routine
dependency bumps (and also triggering CI workflows for these subcrates).

Let's omit patch versions from Cargo.toml.

This change adds a `check-all` workflow that runs a faster `check --workspace`
when `Cargo.lock` changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-17 11:55:43 -08:00
dependabot[bot] 5c45609cc9
build(deps): bump cc from 1.0.72 to 1.0.73 (#1506)
Bumps [cc](https://github.com/alexcrichton/cc-rs) from 1.0.72 to 1.0.73.
- [Release notes](https://github.com/alexcrichton/cc-rs/releases)
- [Commits](https://github.com/alexcrichton/cc-rs/compare/1.0.72...1.0.73)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-17 07:45:12 -08:00
dependabot[bot] 510b1f866d
build(deps): bump tj-actions/changed-files (#1505)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from b3b79dbb9cf4fd390105963b48346e14b4842cc1 to 15.1. This release includes the previously tagged commit.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](b3b79dbb9c...4b1f26aed5)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-17 07:44:12 -08:00
Eliza Weisman c876fe1216
deps: update to `tokio` 1.17.0 and `tower` 0.4.12, and unpatch (#1503)
This branch updates the proxy's dependencies on Tokio and Tower to
1.17.0 and 0.4.12, respectively. These releases contain fixes for panics
when `std::time::Instant` fails to be properly monotonic.

Previously, we were using Git dependencies to ensure we got these fixes.
Now, we can remove those patches, as the released versions of these
crates have the necessary changes.
2022-02-16 22:59:55 -08:00
Oliver Gould 120aea0ce3
ci: Run fuzzing only on related changes (#1501)
We previously always built fuzzers. This change updates the fuzzers
workflow as follows:

* the workflow is only invoked when a fuzz crate changes (or when the
  workflow itself changes).
* fuzzer builds are only executed for changed crate directories

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-16 17:11:16 -08:00
dependabot[bot] b83b2516e0
build(deps): bump libc from 0.2.117 to 0.2.118 (#1502)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.117 to 0.2.118.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.117...0.2.118)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-16 07:28:00 -08:00
Oliver Gould b3d1236b2a
ci: Only run checks on changed crates (#1498)
Currently we check all crates on all source and manifest changes. This
change updates the `check-each` workflow to use the
`tj-actions/changed-files` action to limit checks to modified crates.
All checks are run when the action itself chnages.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-15 16:12:53 -08:00
Oliver Gould 82c1f61b11
Pin git deps for dependencies that have `Instant` workarounds (#1497)
tokio & tower have been patched to avoid issues described in
linkerd/linkerd2#7748, but they have not yet been released. This change
pins these dependencies to Git to pickup the workarounds.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-15 10:04:38 -08:00
Oliver Gould 71f08a8b09
Fix dockerfile (#1500)
PR #1479 changed the docker base image to not include a shell, which
broke the dockerfile's logic for skipping the identity wrapper. It's no
longer possible to run the proxy without identity, so this functionality
isn't needed in any case.

This change fixes the Dockerfile and adds a CI workflow to test docker
builds on Dockerfile changes.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-15 10:04:02 -08:00
dependabot[bot] 87adcdaa77
build(deps): bump EmbarkStudios/cargo-deny-action from 1.2.11 to 1.2.12 (#1499)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.2.11 to 1.2.12.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](4340bbf5bc...8acbae97b5)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-15 07:53:57 -08:00
Kevin Leimkuhler b80af37497
Do not error when `LINKERD2_PROXY_INBOUND_PORTS` is empty (#1478)
When the `LINKERD2_PROXY_INBOUND_PORTS` environment is set
and empty, we should not log an error message.

Signed-off-by: Kevin Leimkuhler <kleimkuhler@icloud.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2022-02-14 11:27:10 -08:00
Oliver Gould 70eceb8a9b
ci: Use cargo-action-fmt to annotate PRs (#1492)
`cargo-action-fmt` reads `cargo` output and generates GitHub action
errors that properly annotate source locations.

This change updates our CI workflows to use `cargo-action-fmt` so that
errors are more clearly annotated.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-14 11:17:53 -08:00
dependabot[bot] c3ab2568b0
build(deps): bump hdrhistogram from 7.4.0 to 7.5.0 (#1493)
Bumps [hdrhistogram](https://github.com/HdrHistogram/HdrHistogram_rust) from 7.4.0 to 7.5.0.
- [Release notes](https://github.com/HdrHistogram/HdrHistogram_rust/releases)
- [Changelog](https://github.com/HdrHistogram/HdrHistogram_rust/blob/master/CHANGELOG.md)
- [Commits](https://github.com/HdrHistogram/HdrHistogram_rust/compare/v7.4.0...v7.5.0)

---
updated-dependencies:
- dependency-name: hdrhistogram
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-14 08:18:59 -08:00
dependabot[bot] 1a52030cd0
build(deps): bump serde_json from 1.0.78 to 1.0.79 (#1494)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.78 to 1.0.79.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.78...v1.0.79)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-14 08:18:28 -08:00
dependabot[bot] 7a8ccd8ef4
build(deps): bump rustls from 0.20.2 to 0.20.3 (#1495)
Bumps [rustls](https://github.com/rustls/rustls) from 0.20.2 to 0.20.3.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.20.2...v/0.20.3)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-14 08:18:02 -08:00
dependabot[bot] 0ee6846328
build(deps): bump rand from 0.8.4 to 0.8.5 (#1496)
Bumps [rand](https://github.com/rust-random/rand) from 0.8.4 to 0.8.5.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.4...0.8.5)

---
updated-dependencies:
- dependency-name: rand
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-14 06:59:35 -08:00
Oliver Gould 0e2cda9bc0
ci: Only run checks on Cargo.toml changes (#1491)
The point of this job is to check that each crate can be built
independently (i.e., that it doesn't depend on features pulled in by
another crate).

This change also updates the workflow to check linkerd-meshtls-boring by
installing its build deps.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-11 12:03:38 -08:00
Eliza Weisman 7f173183b9
build(deps): update tokio-util to v0.7 (#1490)
This branch updates `tokio-util` to v0.7.0.

The dependabot-generated PR for this update doesn't work, because this
is a breaking API change. The only update that was necessary here was
changing the use of `tokio_util::sync::PollSender` in
`linkerd-proxy-discover` to use the updated method names.

Closes #240

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-02-11 11:35:03 -08:00
Oliver Gould 3d26ad7e2c
ci: Split out worflows (#1485)
This change splits out our GitHub workflows to run conditionally,
depending on which files change in a pull request.

* `build`: builds the proxy in release mode wh
* `check-each`: checks that each Cargo.toml checks cleanly on its own.
  This used to be a serial task, but has been converted to a matrix job.
* `deps`: Only runs on dependency changes to check cargo-deny
* `integration`: Runs integration tests on code & dependency changes.
* `lint`: Runs clippy, fmt, and doc on all source changes. Not run on
  dependency changes.
* `test`: Runs unit tests on code and dependency changes

This prevents doing needless work on dependency changes (as these are
extremely common) and makes it easier to rerun narrower workflows, if
necessary. The best part of this, though, is that we've made
`check-each` a matrix job so that its tests can be parallelized.

We'll update the github settings to make none of these checks strictly
required.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-11 11:13:55 -08:00
Oliver Gould 170762f018
ci: Add workflows to run beta, nightly builds (#1483)
We currently only really catch Rust regressions as they hit stable. This
change adds workflows to build the proxy daily against `nightly` and
weekly against `beta`.

These workflows are separated so that they can run on different
schedules and so that a failure on one toolchain does not interfere with
the other.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-11 11:04:16 -08:00
Oliver Gould d46c26344a
Change CODEOWNERS to @linkerd/maintainers (#1489)
It seems fine to broaden the review pool to all maintainers. As always,
good judgement about merging is expected :)

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-11 10:35:02 -08:00
dependabot[bot] 2ca9b28a21
build(deps): bump hyper from 0.14.16 to 0.14.17 (#1486)
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.16 to 0.14.17.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.16...v0.14.17)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-11 08:22:17 -08:00
dependabot[bot] 0b1b7b4904
build(deps): bump ntapi from 0.3.6 to 0.3.7 (#1488)
Bumps [ntapi](https://github.com/MSxDOS/ntapi) from 0.3.6 to 0.3.7.
- [Release notes](https://github.com/MSxDOS/ntapi/releases)
- [Commits](https://github.com/MSxDOS/ntapi/commits)

---
updated-dependencies:
- dependency-name: ntapi
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-11 08:22:01 -08:00
Oliver Gould 6661ad0df0
ci: Add a toolchain workflow (#1484) 2022-02-11 07:19:13 -08:00
Kevin Leimkuhler 0530c0032b
Bump runtime image so that linkerd-await 0.2.5 is used (#1479)
Signed-off-by: Kevin Leimkuhler <kleimkuhler@icloud.com>
2022-02-10 15:35:38 -08:00
dependabot[bot] e4e1525d4f
build(deps): bump EmbarkStudios/cargo-deny-action from 1.2.10 to 1.2.11 (#1480)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.2.10 to 1.2.11.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](2a55392931...4340bbf5bc)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-10 15:35:10 -08:00
dependabot[bot] 4eaf8d641f
build(deps): bump derive_arbitrary from 1.0.2 to 1.1.0 (#1481)
Bumps [derive_arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.0.2 to 1.1.0.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/commits)

---
updated-dependencies:
- dependency-name: derive_arbitrary
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-10 15:34:33 -08:00
dependabot[bot] 121c441bbd
build(deps): bump arbitrary from 1.0.3 to 1.1.0 (#1482)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.0.3 to 1.1.0.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/commits)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-10 15:32:52 -08:00
dependabot[bot] cff3f398d7
build(deps): bump trust-dns-resolver from 0.21.0-alpha.4 to 0.21.0-alpha.5 (#1475)
Bumps [trust-dns-resolver](https://github.com/bluejekyll/trust-dns) from 0.21.0-alpha.4 to 0.21.0-alpha.5.
- [Release notes](https://github.com/bluejekyll/trust-dns/releases)
- [Changelog](https://github.com/bluejekyll/trust-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bluejekyll/trust-dns/compare/v0.21.0-alpha.4...v0.21.0-alpha.5)

---
updated-dependencies:
- dependency-name: trust-dns-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Oliver Gould <ver@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2022-02-09 09:05:11 -08:00
dependabot[bot] 500a5cfa19
build(deps): bump httparse from 1.5.1 to 1.6.0 (#1477)
Bumps [httparse](https://github.com/seanmonstar/httparse) from 1.5.1 to 1.6.0.
- [Release notes](https://github.com/seanmonstar/httparse/releases)
- [Commits](https://github.com/seanmonstar/httparse/compare/v1.5.1...v1.6.0)

---
updated-dependencies:
- dependency-name: httparse
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-09 08:55:41 -08:00
Oliver Gould 1eb18f45e3
Update the devcontainer (#1474)
* Set a default locale (en_US.UTF-8)
* Use multi-stage docker builds and install tools into /usr/local/bin
* Drop needless extensions
* Use a `RUST_VERSION` build-arg instead of inline version strings
2022-02-09 08:06:48 -08:00
dependabot[bot] 5960ad8429
build(deps): bump autocfg from 1.0.1 to 1.1.0 (#1472)
Bumps [autocfg](https://github.com/cuviper/autocfg) from 1.0.1 to 1.1.0.
- [Release notes](https://github.com/cuviper/autocfg/releases)
- [Commits](https://github.com/cuviper/autocfg/compare/1.0.1...1.1.0)

---
updated-dependencies:
- dependency-name: autocfg
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-08 07:22:44 -08:00
dependabot[bot] 281942e362
build(deps): bump crc32fast from 1.3.1 to 1.3.2 (#1473)
Bumps [crc32fast](https://github.com/srijs/rust-crc32fast) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/srijs/rust-crc32fast/releases)
- [Commits](https://github.com/srijs/rust-crc32fast/compare/v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: crc32fast
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-08 07:21:51 -08:00
dependabot[bot] 8bec58a4ad
build(deps): bump unicode-segmentation from 1.8.0 to 1.9.0 (#1471)
Bumps [unicode-segmentation](https://github.com/unicode-rs/unicode-segmentation) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/unicode-rs/unicode-segmentation/releases)
- [Commits](https://github.com/unicode-rs/unicode-segmentation/commits)

---
updated-dependencies:
- dependency-name: unicode-segmentation
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-07 12:11:43 -08:00
dependabot[bot] 045bb68b4e
build(deps): bump rustls-pemfile from 0.2.1 to 0.3.0 (#1470)
Bumps [rustls-pemfile](https://github.com/rustls/pemfile) from 0.2.1 to 0.3.0.
- [Release notes](https://github.com/rustls/pemfile/releases)
- [Commits](https://github.com/rustls/pemfile/compare/v/0.2.1...v/0.3.0)

---
updated-dependencies:
- dependency-name: rustls-pemfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-07 12:11:33 -08:00
Oliver Gould bf8916d740
dependabot: Ignore leaf updates (#1464)
`futures`, `prost, and `tracing` release top level crates, so there's no
need to be notified of leaf crate updates.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-07 12:11:16 -08:00
dependabot[bot] 3bfb885f59
build(deps): bump tracing-subscriber from 0.3.7 to 0.3.8 (#1465)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.7 to 0.3.8.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.7...tracing-subscriber-0.3.8)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-07 11:30:03 -08:00
dependabot[bot] f318397db3
build(deps): bump futures from 0.3.19 to 0.3.21 (#1468)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.19 to 0.3.21.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.19...0.3.21)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-07 11:28:51 -08:00
dependabot[bot] 5c1ec4f5dc
build(deps): bump clang-sys from 1.3.0 to 1.3.1 (#1461)
Bumps [clang-sys](https://github.com/KyleMayes/clang-sys) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/KyleMayes/clang-sys/releases)
- [Changelog](https://github.com/KyleMayes/clang-sys/blob/master/CHANGELOG.md)
- [Commits](https://github.com/KyleMayes/clang-sys/compare/v1.3.0...v1.3.1)

---
updated-dependencies:
- dependency-name: clang-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-04 07:32:07 -08:00
dependabot[bot] 5e472e733c
build(deps): bump tracing from 0.1.29 to 0.1.30 (#1462) 2022-02-04 06:42:32 -08:00
dependabot[bot] 7708b09de3
build(deps): bump libc from 0.2.116 to 0.2.117 (#1459)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.116 to 0.2.117.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.116...0.2.117)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-03 08:20:12 -08:00
Oliver Gould 8aa474ea41
clippy: Disallow lock and instant types from `std` (#1458)
We use `parking_lot` locks throughout our code. This change disallows the
introduction of std::sync's locks.

This change also enforces the use of `tokio::time::Instant`, which
allows for a mockable time source in tests.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-02-02 11:59:03 -08:00
Oliver Gould bffdb1aad8
Ban uses of `Instant` operations that can panic (#1456)
When comparing instances, we should use saturating varieties to help
ensure that we can't hit panics.

This change bans uses of `std::time::Instant::{duration_since, elapsed,
sub}` via clippy. Uses are ported to using `Instant::saturating_duration_since`.

Related to linkerd/linkerd2#7748

Signed-off-by: Oliver Gould <ver@buoyant.io>
Co-authored-by: Eliza Weisman <eliza@buoyant.io>
2022-02-01 12:03:45 -08:00
dependabot[bot] d9dbdece1e
build(deps): bump parking_lot from 0.11.2 to 0.12.0 (#1452)
Bumps [parking_lot](https://github.com/Amanieu/parking_lot) from 0.11.2 to 0.12.0.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/0.11.2...0.12.0)

---
updated-dependencies:
- dependency-name: parking_lot
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Oliver Gould <ver@buoyant.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2022-01-31 11:03:54 -08:00
dependabot[bot] b297560afd
build(deps): bump lock_api from 0.4.5 to 0.4.6 (#1454)
Bumps [lock_api](https://github.com/Amanieu/parking_lot) from 0.4.5 to 0.4.6.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/lock_api-0.4.5...lock_api-0.4.6)

---
updated-dependencies:
- dependency-name: lock_api
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-31 10:19:04 -08:00
dependabot[bot] 62340fb9f9
build(deps): bump libc from 0.2.115 to 0.2.116 (#1453)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.115 to 0.2.116.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.115...0.2.116)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-31 10:18:28 -08:00
Oliver Gould ae4aaafe77
deny: Don't skip everything in hyper's tree (#1455)
When we skip-tree hyper, we miss out on all dupes that may impact tokio,
etc.

Thsi change narrowly exempts the use of iota v4.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-01-31 10:17:02 -08:00
dependabot[bot] ccf84e6d4b
build(deps): bump EmbarkStudios/cargo-deny-action from 1.2.9 to 1.2.10 (#1451)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.2.9 to 1.2.10.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](f2d2f98857...2a55392931)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-31 09:58:20 -08:00
dependabot[bot] 6ea3c620b4
build(deps): bump libc from 0.2.114 to 0.2.115 (#1449)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.114 to 0.2.115.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.114...0.2.115)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-28 08:19:33 -08:00
dependabot[bot] 5ed9d49691
build(deps): bump tokio from 1.15.0 to 1.16.1 (#1450)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.15.0 to 1.16.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.15.0...tokio-1.16.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-28 08:16:17 -08:00
dependabot[bot] 1129ea9a39
build(deps): bump socket2 from 0.4.3 to 0.4.4 (#1447) 2022-01-27 07:20:46 -08:00
dependabot[bot] e3ecd50a6b
build(deps): bump h2 from 0.3.10 to 0.3.11 (#1448) 2022-01-27 07:19:42 -08:00
dependabot[bot] b8b1fa9162
build(deps): bump tracing-subscriber from 0.3.6 to 0.3.7 (#1446)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.6 to 0.3.7.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.6...tracing-subscriber-0.3.7)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-26 08:52:06 -08:00
dependabot[bot] 502c3af343
build(deps): bump serde from 1.0.135 to 1.0.136 (#1445)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.135 to 1.0.136.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.135...v1.0.136)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-26 08:28:27 -08:00
Oliver Gould 8f38eb31aa
devcontainer: Fix kubectl path (#1441)
* Adds `jq`.
* Adds a _devcontainer_ CI workflow

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-01-25 15:00:30 -08:00
dependabot[bot] e498f0d560
build(deps): bump libc from 0.2.113 to 0.2.114 (#1444)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.113 to 0.2.114.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.113...0.2.114)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-25 12:03:09 -08:00
Oliver Gould ea376ff58d
dependabot: Allow updates for transitive dependencies (#1443)
Dependabot seems to only create updates for direct dependencies. This
change ensures we receive updates for all dependencies.

    Updating git repository `https://github.com/linkerd/webpki`
    Updating crates.io index
    Updating anyhow v1.0.45 -> v1.0.53
    Updating bumpalo v3.8.0 -> v3.9.1
    Updating cmake v0.1.46 -> v0.1.48
    Updating crc32fast v1.2.1 -> v1.3.1
      Adding fastrand v1.7.0
    Updating fixedbitset v0.4.0 -> v0.4.1
    Updating getrandom v0.2.3 -> v0.2.4
    Updating httpdate v1.0.1 -> v1.0.2
    Updating itertools v0.10.1 -> v0.10.3
    Updating js-sys v0.3.55 -> v0.3.56
    Updating libloading v0.7.1 -> v0.7.3
    Updating once_cell v1.8.0 -> v1.9.0
    Updating pin-project-lite v0.2.7 -> v0.2.8
    Updating ppv-lite86 v0.2.15 -> v0.2.16
    Updating proc-macro2 v1.0.32 -> v1.0.36
    Updating quote v1.0.10 -> v1.0.15
    Updating rustls v0.20.1 -> v0.20.2
    Updating ryu v1.0.5 -> v1.0.9
    Updating serde v1.0.130 -> v1.0.135
    Updating smallvec v1.7.0 -> v1.8.0
    Updating syn v1.0.84 -> v1.0.86
    Updating tempfile v3.2.0 -> v3.3.0
    Updating thread_local v1.1.3 -> v1.1.4
    Updating tokio-io-timeout v1.1.1 -> v1.2.0
    Updating version_check v0.9.3 -> v0.9.4
    Updating wasm-bindgen v0.2.78 -> v0.2.79
    Updating wasm-bindgen-backend v0.2.78 -> v0.2.79
    Updating wasm-bindgen-macro v0.2.78 -> v0.2.79
    Updating wasm-bindgen-macro-support v0.2.78 -> v0.2.79
    Updating wasm-bindgen-shared v0.2.78 -> v0.2.79
    Updating web-sys v0.3.55 -> v0.3.56
    Updating which v4.2.2 -> v4.2.4

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-01-25 11:31:05 -08:00
dependabot[bot] d69aa907c2
build(deps): bump serde_json from 1.0.75 to 1.0.78 (#1440) 2022-01-24 07:01:04 -08:00
Eliza Weisman 1d62fd52ed
access-log: Add JSON support (#1350)
This change adds the option to configure the access logging layer to
output JSON rather than the Apache Common access log format.
This is configured by the `LINKERD2_PROXY_ACCESS_LOG`
environment variable. When set to `json`, JSON-formatted logs are
emitted; and it must be set to `apache` for apache-formatted
logging.
2022-01-21 11:22:29 -08:00
dependabot[bot] d4dfe9125d
build(deps): bump socket2 from 0.4.2 to 0.4.3 (#1439) 2022-01-21 10:28:57 -08:00
dependabot[bot] 3f86e7326b
build(deps): bump libc from 0.2.112 to 0.2.113 (#1438) 2022-01-21 08:20:13 -08:00
Eliza Weisman f5e9cea469
trace: Apache Common Log Format access logging (#1319)
This branch builds on @tustvold's work in #601. The original PR
description from that branch:

> Access logging is very important functionality for my team as we wish
> to maintain feature-parity with our existing AWS ALB-based approach.
> This functionality was requested
> [here](https://github.com/linkerd/linkerd2/issues/1913) and was marked
> as help wanted, so thought I'd take a stab at implementing it.
>
> Creating as a draft as still needs more testing and benchmarking, and
> I'm new to tower and so might have made some rookie errors. However, I
> wanted to create a draft as an opportunity to get some early feedback.
>
> The basic design consists of an AccessLogLayer that instruments both
> requests and responses that flow through it, in a similar manner to
> how handle_time is already computed. I'm not a massive fan of this,
> but it was the only way I could easily see to get accurate processing
> time metrics. I've tried to avoid any memory allocation on the hot
> path, although there are possibly more atomic increments than I would
> like. The performance impact with the feature disabled, i.e.
> LINKERD2_PROXY_ACCESS_LOG_FILE, not set should be minimal.
>
> The results of this instrumentation are then sent over a mpsc channel
> to an AccessLogCollector that writes them in a space-delimited format
> to a file specified as an environment variable. It buffers in memory
> and flushes on termination and on write if more than
> FLUSH_TIMEOUT_SECS since the last flush. This makes the access logging
> best effort much like AWS ALBs.
>
> An example deployment scenario using this functionality might deploy a
> fluent-bit sidecar to ship the logs, or write to /dev/stderr and use a
> log shipper deployed as a DaemonSet.

The additional changes in this branch are:

 - Updated against the latest state of the `main` branch.
 - Changed the `tracing` configuration to use per-layer filtering, so that
   the access log layer _only_ sees access log spans, while the stdout
   logging layer does not see the access log spans (although, it _could_
   if we wanted it to...)
 - Changed the format for outputting the access log to the Apache Common
   Log Format. Note that this format does *not* include all the data that
   the access log spans currently collect; I excluded that data so that
   the output is compatible with tools that ingest the Apache log format.
   In a follow-up PR, we can add the ability to control what format the
   access log is written in, and add an alternative format that includes
   all the access log data that Linkerd's spans can collect (I suggest
   newline-delimited JSON for this).

Of course, a huge thank you to @tustvold for all their work on this; I
only updated the branch with the latest changes and made some minor
improvements. :)

Co-authored-by: Raphael Taylor-Davies <r.taylordavies@googlemail.com>
2022-01-20 13:55:24 -08:00
Eliza Weisman 8f7be6f52c
test: remove `env::set_var` call in test logging initialization (#1437)
Per rust-lang/rust#90308, this is potentially a data race. In practice,
I don't think it was actually problematic here, but it also wasn't doing
anything of value, so we should remove it.

This is currently the only `env::set_var` or `env::remove_var` call in
the proxy.

To prevent uses of these functions in the future, I also added a 
`disallowed-methods` configuration in `.clippy.toml` to emit a
warning for any uses of `std::env::set_var` and
`std::env::remove_var`. Unfortunately, this required adding a
`deny` attribute basically everywhere, which is why this diff touches
so many files.

Closes linkerd/linkerd2#7651
2022-01-20 10:11:07 -08:00
dependabot[bot] d3cf6a0fda
build(deps): bump tracing-subscriber from 0.3.5 to 0.3.6 (#1435)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.5 to 0.3.6.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.5...tracing-subscriber-0.3.6)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-17 10:01:31 -08:00
dependabot[bot] f9f6111d18
build(deps): bump serde_json from 1.0.74 to 1.0.75 (#1436)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.74 to 1.0.75.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.74...v1.0.75)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-17 10:01:01 -08:00
Oliver Gould 85a02f1d0a
Add a devcontainer config (#1432)
GitHub supports [dev containers][dc] to describe reproducible
development environments (e.g. for use from VS code). This change
introduces a devcontainer.json and Dockerfile to support container-based
development. This setup configures docker-in-docker so that docker and
k3d can be run inside the dev container.

This base configuration can be amended with per-user personalizations
via a [dotfiles][df] repo. For example: github.com/olix0r/dotfiles.

[dc]: https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/configuring-codespaces-for-your-project
[df]: https://docs.github.com/en/codespaces/customizing-your-codespace/personalizing-codespaces-for-your-account

Signed-off-by: Oliver Gould <ver@buoyant.io>
2022-01-12 11:41:54 -08:00
dependabot[bot] 809d4d30b4
build(deps): bump indexmap from 1.7.0 to 1.8.0 (#1433)
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.rst)
- [Commits](https://github.com/bluss/indexmap/compare/1.7.0...1.8.0)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-10 08:51:13 -08:00
Oliver Gould 526c0dfa16
Update Rust to v1.56.1 (#1431)
Some development tooling (like recent versions of cargo-deny) depends on
Rust v1.56.1. This change updates proxy build/CI to use this version for
consistency.
2022-01-07 15:40:42 -08:00
dependabot[bot] a5ba9e086d
build(deps): bump h2 from 0.3.9 to 0.3.10 (#1430) 2022-01-07 08:04:54 -08:00
Aaron Friel 98e8b2e23e
tests: rename 'metrics' addr to 'admin' (#1429)
This change renames the address in integration tests to be consistent
with the name used in the proxy.

Signed-off-by: Aaron Friel <mayreply@aaronfriel.com>
2022-01-04 10:58:28 -08:00
Oliver Gould f1df316ec4
Decouple client connection metadata from the I/O type (#1426)
Some information about client connections may not be known a priori. For
example, the local socket address is only known after the connection is
established and the TLS handshake may negotiate additional information
(like the ALPN protocol).

We can use traits on the I/O type, but this means that all wrappers
types need implement all of these traits. This is cumbersome.

This change replaces the `tower::make::MakeConnection` helper trait with
a new `linkerd_stack::MakeConnection` trait that explicity returns a
`Metadata` instance so that connectors can return arbitrary information.

Now, the TCP connector returns a `Local<ClientAddr>` and the TLS
connector conditionally includes the negotiated protocol.

This change sets up the ability for the HTTP client to negotiate
protocol upgrading via ALPN instead of using per-request headers.
2022-01-03 13:13:16 -08:00
dependabot[bot] 56a4511cb4
build(deps): bump serde_json from 1.0.73 to 1.0.74 (#1427)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.73 to 1.0.74.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.73...v1.0.74)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-03 08:37:17 -08:00
dependabot[bot] 97fbeab59c
build(deps): bump http from 0.2.5 to 0.2.6 (#1424)
Bumps [http](https://github.com/hyperium/http) from 0.2.5 to 0.2.6.
- [Release notes](https://github.com/hyperium/http/releases)
- [Changelog](https://github.com/hyperium/http/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http/compare/v0.2.5...v0.2.6)

---
updated-dependencies:
- dependency-name: http
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-01 09:24:11 -08:00
dependabot[bot] ea65b730c6
build(deps): bump pin-project from 1.0.9 to 1.0.10 (#1425)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.0.9 to 1.0.10.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.0.9...v1.0.10)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-01 08:56:49 -08:00
dependabot[bot] 925789cba1
build(deps): bump tracing-subscriber from 0.3.4 to 0.3.5 (#1423) 2021-12-30 07:34:51 -08:00
dependabot[bot] 02943cf198
build(deps): bump pin-project from 1.0.8 to 1.0.9 (#1422)
Bumps [pin-project](https://github.com/taiki-e/pin-project) from 1.0.8 to 1.0.9.
- [Release notes](https://github.com/taiki-e/pin-project/releases)
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.0.8...v1.0.9)

---
updated-dependencies:
- dependency-name: pin-project
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-27 09:01:31 -08:00
dependabot[bot] f0bd122307
build(deps): bump tracing-subscriber from 0.3.3 to 0.3.4 (#1421)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.3 to 0.3.4.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.3...tracing-subscriber-0.3.4)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-26 09:40:03 -08:00
Matei David 08060eeb44
Handle HTTP traffic over opaque transport connections (#1416)
If an endpoint is set as opaque, but its logical service is not marked
as opaque, clients may transport HTTP connections with an opaque
transport header. Inbound proxies currently fail to proxy these connections.

Through this change, when an inbound proxy receives a direct connection
with an opaque transport header--and that header includes a protocol and
no target service name--the connection will now be properly handled by the
HTTP stack.
2021-12-23 08:55:46 -08:00
dependabot[bot] de885baaeb
build(deps): bump linkerd2-proxy-api from 0.3.0 to 0.3.1 (#1419)
Bumps linkerd2-proxy-api from 0.3.0 to 0.3.1.

---
updated-dependencies:
- dependency-name: linkerd2-proxy-api
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-21 11:32:29 -08:00
dependabot[bot] ff98286c55
build(deps): bump num_cpus from 1.13.0 to 1.13.1 (#1418)
Bumps [num_cpus](https://github.com/seanmonstar/num_cpus) from 1.13.0 to 1.13.1.
- [Release notes](https://github.com/seanmonstar/num_cpus/releases)
- [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.13.0...v1.13.1)

---
updated-dependencies:
- dependency-name: num_cpus
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-21 10:46:43 -08:00
dependabot[bot] a43d4c7b60
build(deps): bump serde_json from 1.0.72 to 1.0.73 (#1407)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.72 to 1.0.73.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.72...v1.0.73)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2021-12-20 11:44:46 -08:00
dependabot[bot] 3940c5b355
build(deps): bump futures from 0.3.18 to 0.3.19 (#1415)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.18 to 0.3.19.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.18...0.3.19)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-20 08:05:45 -08:00
dependabot[bot] c92b3a2bef
build(deps): bump libc from 0.2.110 to 0.2.112 (#1408)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.110 to 0.2.112.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.110...0.2.112)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-17 14:38:37 -08:00
dependabot[bot] 556e07bd76
build(deps): bump tokio-rustls from 0.23.1 to 0.23.2 (#1412)
Bumps [tokio-rustls](https://github.com/tokio-rs/tls) from 0.23.1 to 0.23.2.
- [Release notes](https://github.com/tokio-rs/tls/releases)
- [Commits](https://github.com/tokio-rs/tls/commits)

---
updated-dependencies:
- dependency-name: tokio-rustls
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-17 13:02:32 -08:00
dependabot[bot] 6cab4bba11
build(deps): bump boring from 1.1.6 to 2.0.0 (#1413)
Bumps [boring](https://github.com/cloudflare/boring) from 1.1.6 to 2.0.0.
- [Release notes](https://github.com/cloudflare/boring/releases)
- [Changelog](https://github.com/cloudflare/boring/blob/master/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/boring/commits)

---
updated-dependencies:
- dependency-name: boring
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Oliver Gould <ver@buoyant.io>
2021-12-17 13:01:54 -08:00
dependabot[bot] dba2c735a1
build(deps): bump actions/upload-artifact from 2.3.0 to 2.3.1 (#1409)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](da838ae959...82c141cc51)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-17 11:15:17 -08:00
Oliver Gould 5614aeeb02
inbound: Simplify GatewayIo type (#1414)
Since the legacy gateway mode has been removed from the proxy, we no
longer need to support multiple I/O types for the gateway. This change
drops the unused I/O variant from the GatewayIo type.
2021-12-17 11:13:29 -08:00
dependabot[bot] 9b3c968c78
build(deps): bump tokio from 1.14.0 to 1.15.0 (#1410)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.14.0...tokio-1.15.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-17 09:25:55 -08:00
dependabot[bot] d365aa3398
build(deps): bump async-trait from 0.1.51 to 0.1.52 (#1402) 2021-12-10 07:23:03 -08:00
dependabot[bot] 3b7ce83b58
build(deps): bump libc from 0.2.109 to 0.2.110 (#1403) 2021-12-10 07:22:09 -08:00
dependabot[bot] 39f17eb40e
build(deps): bump hyper from 0.14.15 to 0.14.16 (#1404) 2021-12-10 07:21:47 -08:00
dependabot[bot] 6ab8f1dc64
build(deps): bump h2 from 0.3.8 to 0.3.9 (#1405) 2021-12-10 07:21:01 -08:00
dependabot[bot] 35c6cfc1d0
build(deps): bump tonic from 0.6.1 to 0.6.2 (#1400)
Bumps [tonic](https://github.com/hyperium/tonic) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.6.1...v0.6.2)

---
updated-dependencies:
- dependency-name: tonic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-09 10:25:23 -08:00
dependabot[bot] f6db5c647b
build(deps): bump tonic-build from 0.6.0 to 0.6.2 (#1399)
Bumps [tonic-build](https://github.com/hyperium/tonic) from 0.6.0 to 0.6.2.
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.6.0...v0.6.2)

---
updated-dependencies:
- dependency-name: tonic-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-09 10:25:12 -08:00
dependabot[bot] 70923f3fcd
build(deps): bump h2 from 0.3.7 to 0.3.8 (#1401)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.7 to 0.3.8.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.7...v0.3.8)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-09 10:24:33 -08:00
dependabot[bot] 832be29f21
build(deps): bump actions/upload-artifact from 2.2.4 to 2.3.0 (#1397)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2.2.4 to 2.3.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](27121b0bdf...da838ae959)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-08 13:07:55 -08:00
dependabot[bot] e4c7c01d43
build(deps): bump actions/download-artifact from 2.0.10 to 2.1.0 (#1398)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2.0.10 to 2.1.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](3be87be14a...f023be2c48)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-08 13:07:06 -08:00
Oliver Gould 919289425a
Remove macOS-specific transport label tests (#1396)
The proxy doesn't actually run on macOS, so there's not a lot of value
in having macOS-specific tests, especially as these tests aren't
executed as a part of CI.

This change removes two macOS-specific transport label tests.
2021-12-06 14:35:31 -08:00
jem cf721013d2
Fixes for compiling on macOS (#1392)
Several tests failed to compile, as they are not exercised in CI.

Signed-off-by: Jem McElwain <jmcelwain@gmail.com>
2021-12-06 11:48:21 -08:00
dependabot[bot] 66130a3e98
build(deps): bump EmbarkStudios/cargo-deny-action from 1.2.6 to 1.2.9 (#1394)
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/EmbarkStudios/cargo-deny-action) from 1.2.6 to 1.2.9.
- [Release notes](https://github.com/EmbarkStudios/cargo-deny-action/releases)
- [Commits](0ca727bbae...f2d2f98857)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-06 10:29:16 -08:00
dependabot[bot] 15090a4607
build(deps): bump libc from 0.2.108 to 0.2.109 (#1395)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.108 to 0.2.109.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.108...0.2.109)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-06 10:14:25 -08:00
Oliver Gould 8df696d002
ci: Skip unit tests in coverage report (#1390)
The coverage workflow is misconfigured so that it fails to run:
`cargo-tarpaulin` has command line arguments that don't match other
cargo commands (`--packages` instead of `--package`, which cannot be
mixed with `--workspace`). Furthermore, it doesn't seem that we actually
benefit from running tarpaulin over our non-integration tests, since the
coverage reports are not merged.
2021-11-30 14:06:01 -08:00
dependabot[bot] 8a5659f178
build(deps): bump tracing-subscriber from 0.3.2 to 0.3.3 (#1391)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.2 to 0.3.3.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.2...tracing-subscriber-0.3.3)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-30 07:58:32 -08:00
dependabot[bot] a92da63c1c
build(deps): bump serde_json from 1.0.71 to 1.0.72 (#1389)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.71 to 1.0.72.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.71...v1.0.72)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-27 21:06:10 -08:00
dependabot[bot] 4d3f3475a6
build(deps): bump futures from 0.3.17 to 0.3.18 (#1388)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.17 to 0.3.18.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.17...0.3.18)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-23 08:19:01 -08:00
dependabot[bot] e85c872e3c
build(deps): bump libc from 0.2.107 to 0.2.108 (#1386)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.107 to 0.2.108.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.107...0.2.108)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-22 15:00:33 -08:00
dependabot[bot] df808f17d4
build(deps): bump tracing-subscriber from 0.3.1 to 0.3.2 (#1387)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.3.1 to 0.3.2.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.1...tracing-subscriber-0.3.2)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-22 15:00:07 -08:00
Oliver Gould 5a97236a96
outbound: Use per-route services in routing stack (#1380)
The outbound proxy currently maintains a `Proxy` instance for each
profile-defined `Route`. This allows the router to use a single
underlying logical service, but this prevents per-route logic from
influencing the logical target to which the request is dispatched.

This change modifies the outbound stack to use an alternate profile
router that dispatches over per-route `Service`s instead of per-route
`Proxy`s. This is possible because the outbound logical stack is
buffered (and implements `Clone`), while the inbound stack is not.

To support this, the following changes have been made:

* The `linkerd_app_core::dst` module has been eliminated in favor of
  inbound- and outbound-specific Route target types;
* `linkerd_http_classify::Classify` now implements `Service` in addition
  to `Proxy`;
* `linkerd_retry::Retry` now implements `Service` instead of `Proxy`;
* `linkerd_service_profiles`now implements two caching routers:
  `NewServiceRouter` for `Service`s and `NewProxyRouter` for `Proxy`s;
* The `linkerd_stack::ProxyService` helper has been removed, as it's not
  used; and
* Various unneeded `http::BoxResponse` layers have been removed from the
  outound stack.
2021-11-18 15:11:16 -08:00
Oliver Gould 2f19d9c7ce
ci: Fix coverage workflow (#1382)
* Avoid building the binary target, since it slows down the build
* Use --skip-clean to use the cached build
* Fetch a pre-build tarpaulin binary (saves ~5m)
* Rename `flaky_tests` feature to `flakey-in-ci`
* Add a `flakey-in-coverage` feature
* Mark broken tests with `ignore` (not feature-gated)
* Enable all tests by default
2021-11-18 14:51:09 -08:00
dependabot[bot] a62181abe2
build(deps): bump tower from 0.4.10 to 0.4.11 (#1385)
Bumps [tower](https://github.com/tower-rs/tower) from 0.4.10 to 0.4.11.
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-0.4.10...tower-0.4.11)

---
updated-dependencies:
- dependency-name: tower
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-18 13:46:47 -08:00
Oliver Gould 38240b13c7
ci: Run dependabot updates at 2AM PST (#1384)
In order to prevent dependabot updates from consuming CI resources
during working hours, this change schedules dependabot updates to run at
10:00 UTC.
2021-11-18 13:15:09 -08:00
dependabot[bot] fff150a39d
build(deps): bump serde_json from 1.0.70 to 1.0.71 (#1383)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.70 to 1.0.71.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.70...v1.0.71)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-18 12:25:50 -08:00
dependabot[bot] c92ef3e8c0
build(deps): bump hyper from 0.14.14 to 0.14.15 (#1381)
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.14 to 0.14.15.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.14...v0.14.15)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-17 12:32:56 -08:00
Oliver Gould 4422c6d1f9
app: Move retry types into the app-outbound crate (#1378)
The retry crate is hardcoded to use the `linkerd_app_core::dst::Route`
type as its target. This is inflexible, especially if we want to
reorganize the outbound stack to support things like header-based
overrides.

This change movers the retry layer into the outbound crate so that it
can be changed to use outbound-specific types.

No functional changes.
2021-11-16 14:49:35 -08:00
dependabot[bot] 660289c538
build(deps): bump tokio from 1.13.0 to 1.14.0 (#1379)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/commits)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-16 14:49:24 -08:00
Oliver Gould bfc4af6871
build(deps): bump various dependencies (#1377)
Updating anyhow v1.0.44 -> v1.0.45
    Updating cc v1.0.71 -> v1.0.72
    Updating proc-macro2 v1.0.30 -> v1.0.32
    Updating rustls v0.20.0 -> v0.20.1
    Updating syn v1.0.80 -> v1.0.81
    Updating tinyvec v1.5.0 -> v1.5.1
    Updating tokio-macros v1.5.0 -> v1.5.1
    Updating tonic v0.6.0 -> v0.6.1
2021-11-15 13:36:29 -08:00
Oliver Gould 3de5c7a00a
ci: Fix coverage workflow (#1373)
The coverage workflow has been failing since boring was added as a
dependency.

This change updates the coverage workflow to include the proper build
dependencies and splits the build and test running phases into distinct
steps.

The tests are now run daily instead of weekly so we can more readily
detect and recover from regressions.
2021-11-15 11:29:58 -08:00
dependabot[bot] 8404c684c1
build(deps): bump arbitrary from 1.0.2 to 1.0.3 (#1376)
Bumps [arbitrary](https://github.com/rust-fuzz/arbitrary) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/rust-fuzz/arbitrary/releases)
- [Changelog](https://github.com/rust-fuzz/arbitrary/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-fuzz/arbitrary/compare/1.0.2...1.0.3)

---
updated-dependencies:
- dependency-name: arbitrary
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-15 11:29:29 -08:00
dependabot[bot] 87e776eab9
build(deps): bump serde_json from 1.0.69 to 1.0.70 (#1375)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.69 to 1.0.70.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.69...v1.0.70)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-15 11:29:14 -08:00
dependabot[bot] 611d0ae24b
build(deps): bump softprops/action-gh-release from 0.1.13 to 1 (#1374)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 0.1.13 to 1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](6034af24fb...1e07f43987)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-15 11:28:59 -08:00
Oliver Gould 6dd16e9914
transport: Improve TCP server error messages (#1372)
The TCP server can fail connections in a few situations:

* `accept(2)` can fail
* setting thte TCP keepalive can fail
* getting the client peer address can fail

It's not easy to differentiate these errors when inspecting proxy logs.

This change adds wrapper error types with custom error messages that
disambiguate the error cause and updates the `Bind` trait to use boxed
error types (instead of `io::Error`).

Additionally, this change includes the client address when logging
information/warnings about connection errors in general. This is
redundant when logging is set at debug, but will be helpful when logging
is set at the normal level.
2021-11-12 10:23:10 -08:00
Oliver Gould 611b8eddff
Eliminate needless compiler directives (#1371)
We've accrued various compiler directives and clippy exceptions that are
no longer necesary. This change removes these unnecessary settings.

This change also addresses a lint in our integration tests.
2021-11-11 13:01:27 -08:00
dependabot[bot] 6b69261a38
build(deps): bump deflate from 0.9.1 to 1.0.0 (#1370)
Bumps [deflate](https://github.com/image-rs/deflate-rs) from 0.9.1 to 1.0.0.
- [Release notes](https://github.com/image-rs/deflate-rs/releases)
- [Changelog](https://github.com/image-rs/deflate-rs/blob/dev/changelog.md)
- [Commits](https://github.com/image-rs/deflate-rs/commits)

---
updated-dependencies:
- dependency-name: deflate
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-10 13:56:03 -08:00
Eliza Weisman 500dc3a127
meshtls-rustls: update to `rustls` 0.20 and `tokio-rustls` 0.23 (#1362)
This branch updates linkerd-meshtls-rustls to use rustls version
0.20, tokio-rustls 0.23, and webpki 0.22.

Co-authored-by: Oliver Gould <ver@buoyant.io>
2021-11-08 16:17:50 -08:00
Oliver Gould 50003a4243
meshtls: Add a `boring` backend (#1351)
This change adds a `meshtls-boring` proxy feature that can be used to
compile the proxy with an alternate TLS implementation. The
`meshtls-rustls` feature should be disabled to take advantage of this
alternate backend.

In its current mode, the boring backend is compatible with the existing
identity credentials and algorithms (specifically TLSv1.3 and
ECDSA-P256-SHA256 with CHACHA20-POLY1305-SHA256).

In future changes--once `boring` has been updated--we can:
- Improve error handling, especially for SSL errors
- Relax deny.toml changes needed by bindgen features
- Add a FIPS mode

Co-authored-by: Arnar Páll <arnar@netapp.com>
2021-11-08 13:44:27 -08:00
dependabot[bot] 7ae1a217eb
build(deps): bump libc from 0.2.106 to 0.2.107 (#1369)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.106 to 0.2.107.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.106...0.2.107)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-08 12:40:20 -08:00
dependabot[bot] e992e1db66
build(deps): bump serde_json from 1.0.68 to 1.0.69 (#1368)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.68 to 1.0.69.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.68...v1.0.69)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-08 12:38:41 -08:00
Oliver Gould 7c0612f04a
rustls: Tidy std::task imports (#1367)
We use needlessly verbose references to std::task types in the
`linkerd-meshtls-rustls` crate. This change simplifies these imports.
2021-11-08 10:58:47 -08:00
Oliver Gould bad5e577cf
meshtls: Move TLS e2e tests into the meshtls crate (#1366)
We'll want to run the same end-to-end tests against all meshtls
backends. This change moves the rustls `tls_accept` tests into meshtls
crate.
2021-11-08 10:05:02 -08:00
Oliver Gould 78df81f7af
ci: Split jobs into 'fast' and 'slow' workflows (#1365)
This change sets up CI to add support for the boring meshtls backend. We
put most of the fast jobs into a single workflow and move slower jobs
into another workflow.

Unit tests are updated to exclude all app-level crates, which take a
while to compile; and the integration test job now runs all of these app
tests.
2021-11-08 09:51:52 -08:00
Oliver Gould 696e7311fc
build(deps): bump hex from 0.3 to 0.4 (#1364) 2021-11-08 09:46:24 -08:00
Oliver Gould e1d7619d5a
Restore rustls credential tests (#1363)
In a prior change, the rustls credential-loading tests were accidentally
disabled. This change restores these tests and updates them to use the
newer API.
2021-11-07 00:16:23 -07:00
Eliza Weisman fa2f9989a2
`app-core` should not enable `meshtls-rustls` (#1360)
PR #1359 changed how `linkerd-meshtls`' TLS implementation feature flags
are enabled. After merging this PR, they should only be enabled by the
top level `linkerd2-proxy` crate, `linkerd-app-integration`, and any dev
dependencies that require a working TLS impl to be enabled for tests.
However, the `linkerd-app-core` crate already had a default-on feature
flag that enabled `meshtls-rustls`. I hadn't noticed this when working
on #1359, so I forgot to remove it.

This branch removes it.

Co-authored-by: Oliver Gould <ver@buoyant.io>
2021-11-05 15:41:34 -07:00
Eliza Weisman d2b17dee9e
meshtls: allow building without any TLS impls enabled (#1359)
Currently, the `linkerd-meshtls` crate cannot be compiled when no TLS
implementation feature flags are enabled. This is an issue, since it
means the `rustls` implementation must be enabled by default, requiring
all crates that depend on `meshtls`, or on a crate that depends on it,
to expose feature flags for controlling what TLS implementation(s) are
enabled. This is not ideal.

This branch changes the `meshtls` so that it can compile even when no
TLS implementations are enabled. The crates which actually need TLS
implementations to be enabled (the `linkerd2-proxy` application crate,
and `linkerd-app-integration`) now depend on the `linkerd-meshtls` crate
for the purposes of enabling feature flags. Other crates that depend on
`meshtls` can do so without having to propagate its feature flags.

The compile error when no TLS implementations are enabled is moved to
the `linkerd2-proxy` crate. `linkerd-meshtls` will now panic at runtime
(rather than failing to compile) if built with all TLS features disabled
(so that dependent crates don't have to enable its features), but the
proxy crate statically ensures that this cannot happen when building a
proxy.
2021-11-05 14:08:40 -07:00
Oliver Gould 2cc7616742
ci: Make job names uniform (#1358)
It turns out that the github UI doesn't always scope a job's name to a
workflow (especially in the required checks UI). This change adds
prefixes to each job name so that jobs end up grouped by workflow in any
lexical ordering.
2021-11-05 10:52:43 -07:00
Oliver Gould c0f8fddee7
ci: Split actions into several workflows (#1356)
This change splits our CI workflows into smaller groups so that when
we need to retry a workflow (i.e. due to CI flakiness), it has a smaller
blast radius. It also splits out integration tests from other (unit) tests
which should hopefully get us quicker feedback on crate-level tests.
2021-11-05 10:42:25 -07:00
Eliza Weisman b452971ce8
meshtls: replace build script with `compile_error!` macro (#1357)
Currently, the `linkerd-meshtls` crate uses a build script to ensure
that at least one TLS implementation feature flag is enabled when
compiling the crate. This can be done much more simply using the
`compile_error!` macro.

Removing the build script may make compilation (very slightly) faster,
because the build script no longer needs to be compiled. Also, the error
message is a bit nicer, since it just prints the error, rather than
"failed to run custom build command".
2021-11-05 10:00:43 -07:00
Oliver Gould 824d7844c1
rustls: Configure the initial TLS client with trust roots (#1355)
2dd7bb8ff changed how rustls configurations are constructed; but it
didn't properly configure the default client configuration with the
proxy's trust root. This enables the identity client to establish TLS
connections with the identity controller during startup.
2021-11-05 08:49:08 -07:00
Oliver Gould bb26cdc8c9
Introduce `meshtls` facade to hide rustls crate (#1353)
In #1351, we add an alternate identity/mtls implementation that uses
`boring`. To setup for that, this change introduces a new `meshtls`
crate that serves as a facade for application crates to depend on,
independently of the actual crypto implementation.

This change does not change any runtime logic and sets up for #1351 to
enable an alternate TLS implementation as a build-time configuration.
2021-11-03 15:48:35 -07:00
dependabot[bot] 6e51c64a02
build(deps): bump actions/checkout from 2.3.5 to 2.4.0 (#1352)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.5 to 2.4.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](1e204e9a92...ec3a7ce113)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-02 18:45:25 -07:00
Oliver Gould 731d12de43
reorg: Decouple TLS implementation from proxy client (#1349)
Currently the TLS implementation in `proxy-identity-default` depends on
`proxy-identity`, which depends on the proxy API to implement its
refreshing identity client.

This change updates these crates so that the TLS implementation only
depends on the core identity crate as follows:

* Move `proxy_identity::Credentials` to `identity::Credentials`;
* Move `proxy/identity/default` to `identity/default`;
* Rename `proxy/identity` to `proxy/identity-client` to help
  disambiguate it from the core identity crate.
2021-11-01 21:59:38 -07:00
dependabot[bot] ab7dfa8ce2
build(deps): bump libc from 0.2.105 to 0.2.106 (#1348)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.105 to 0.2.106.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.105...0.2.106)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-01 12:42:57 -07:00
Oliver Gould 97ae022c29
retry: Simplify ReplayBody::poll_data for readability (#1346)
`ReplayBody::poll_data includes some deeply nested logic that can be
avoided with early returns. This restructures `ReplayBody::poll_data` so
that the control flow is easier to follow.
2021-11-01 12:20:34 -07:00
Eliza Weisman bfc1e2c052
retry: allow retrying requests without content-length headers (#1341)
Currently, the proxy will retry requests with bodies if and only if they
have a `content-length` header with a value <= 64 KB. If the request has
a body but no `content-length` header, we currently assume that its body
will exceed the maximum buffered size, and skip trying to retry it.
However, this means gRPC requests will never be retried, because it
turns out gRPC requests don't include a `content-length` header (see
linkerd/linkerd2#7141). Whoops!

This PR fixes this by changing the retry logic to use `Body::size_hint` to
determine if buffering should be attempted. This value will be set from
`content-length` when it is set and may be set in additional situations
where the body length is known before the request is processed.

We are still protected against unbounded buffering because the buffering
body will stop buffering and discard any previously buffered data if the
buffered length ever exceeds the maximum.

Co-authored-by: Oliver Gould <ver@buoyant.io>
2021-11-01 11:06:17 -07:00
dependabot[bot] 1c1e0abb77
build(deps): bump tokio-stream from 0.1.7 to 0.1.8 (#1344)
Bumps [tokio-stream](https://github.com/tokio-rs/tokio) from 0.1.7 to 0.1.8.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.7...tokio-stream-0.1.8)

---
updated-dependencies:
- dependency-name: tokio-stream
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-29 12:44:23 -07:00
dependabot[bot] d7b4f36d18
build(deps): bump tokio from 1.12.0 to 1.13.0 (#1343)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.12.0 to 1.13.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.12.0...tokio-1.13.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-29 12:44:12 -07:00
dependabot[bot] 271f79f292
build(deps): bump tokio-util from 0.6.8 to 0.6.9 (#1342)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.6.8 to 0.6.9.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.6.8...tokio-util-0.6.9)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-29 12:44:01 -07:00
Oliver Gould ded8c6c3e7
Log discovery changes at DEBUG (#1340)
It seems that we no longer log specific discovery changes at DEBUG
anywhere. We probably ought to revisit the discovery pipeline more
holistically and ensure that we're logging in strategic places, but for
now this will help users diagnose discovery updates without subscribing
to the much noisier TRACE stream.

Relates to linkerd/linkerd2#6842
2021-10-29 11:06:59 -07:00
Oliver Gould 2dd7bb8ff6
Refactor mTLS & identity crates (#1333)
The `linkerd-proxy-identity` crate, which is responsible for obtaining
certificates from the identity service, currently has a hard dependency
on our `linkerd-tls-rustls` crate.

This change introduces  trait
so that the identity API client can be generic over the TLS
implementation that receives certificate updates.

To accomodate this, the identity/mtls crates are refactored as follows:

* `linkerd-proxy-identity` gets a new `Credentials` trait so that the
  `certify` module is responsible for refreshing certificates from the
  API without hardcoding a TLS implementation.
* The `linkerd-tls-rustls` crate is moved to
  `linkerd-proxy-identity-default` and compltely encapsulates the
  ring/rustls/webpki dependencies. This module provides an
  implementation of `Credentials` that validates and publishes rustls
  configurations to receivers--either `NewClient` or `Server`.
* The _app_ crates currently have a hard dependency on the
  `identity-default` crate, but this will be made configurable in
  follow-up changes.

There are no functional changes.
2021-10-27 15:36:37 -07:00
Eliza Weisman 917797a499
update `tonic`, `prost`, and `linkerd2-proxy-api` (#1339)
This branch updates the proxy's `tonic` dependencies to `tonic` 0.6,
`prost` to 0.9, and `linkerd2-proxy-api` to 0.3 (which updates the
proxy-api crate's `prost` and `tonic` dependencies).

Closes #1329.
Closes #1337.
Closes #1338.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2021-10-27 12:28:38 -07:00
dependabot[bot] a4175b8369
build(deps): bump tracing-subscriber from 0.2.25 to 0.3.1 (#1328)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.2.25 to 0.3.1.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.2.25...tracing-subscriber-0.3.1)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-27 09:51:16 -07:00
Oliver Gould e7369b4c2b
Fix misspecified dependencies (#1335)
Some of our crates have unused dependencies or do not properly enumerate
all required features.

Found via

    for f in $(find . -mindepth 2 -name Cargo.toml |sort -rn ) ; do
      (cd ${f%%/Cargo.toml} && cargo +nightly udeps)
    done
2021-10-26 12:13:12 -07:00
Oliver Gould 968361d6fd
tls: Avoid circular dependencies (#1334)
The `linkerd-tls` crate has a test dependency on `linkerd-tls-rustls`,
which itself depends on `linkerd-tls`. This is an avoidable circular
dependency.

This change moves all of the TLS testdata from the `linkerd-tls-rustls`
crate to the new `linkerd-tls-test-util` crate. The `tls_accept` test is
moved from `linkerd-tls` to `linkerd-tls-rustls` so that `linkerd-tls`
no longer depends on `linkerd-tls-rustls`.
2021-10-26 11:10:34 -07:00
Eliza Weisman 1a762f5924
tracing: update `tracing-subscriber` to v0.3.x (#1327)
This branch updates `tracing-subscriber` to v0.3.x. Among other things,
this should resolve the security advisory for the `chrono` crate.

Turns out the upgrade was pretty mechanical!
2021-10-26 07:41:42 -07:00
dependabot[bot] c6e8985961
build(deps): bump libc from 0.2.104 to 0.2.105 (#1332)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.104 to 0.2.105.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.104...0.2.105)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-25 20:35:34 -07:00
dependabot[bot] 84c9070ec0
build(deps): bump hdrhistogram from 7.3.0 to 7.4.0 (#1330)
Bumps [hdrhistogram](https://github.com/HdrHistogram/HdrHistogram_rust) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/HdrHistogram/HdrHistogram_rust/releases)
- [Changelog](https://github.com/HdrHistogram/HdrHistogram_rust/blob/master/CHANGELOG.md)
- [Commits](https://github.com/HdrHistogram/HdrHistogram_rust/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: hdrhistogram
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-25 20:34:45 -07:00
dependabot[bot] 5c5b620e31
build(deps): bump hyper from 0.14.13 to 0.14.14 (#1326)
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.13 to 0.14.14.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.13...v0.14.14)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-22 12:57:26 -07:00
dependabot[bot] 4904560f6a
build(deps): bump http-body from 0.4.3 to 0.4.4 (#1325)
Bumps [http-body](https://github.com/hyperium/http-body) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/hyperium/http-body/releases)
- [Changelog](https://github.com/hyperium/http-body/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http-body/commits)

---
updated-dependencies:
- dependency-name: http-body
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-22 12:32:34 -07:00
dependabot[bot] cda9473bb0
build(deps): bump h2 from 0.3.6 to 0.3.7 (#1324)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.6 to 0.3.7.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.6...v0.3.7)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-22 12:32:12 -07:00
Oliver Gould f7651a30d8
Disable incremental compilation in CI (#1322)
There's no reason to use Rust's incremental compilation in CI. According
to matklad's blog post on [fast Rust builds][fastbuilds]:

> CI builds often are closer to from-scratch builds, as changes are
> typically much bigger than from a local edit-compile cycle. For
> from-scratch builds, incremental adds an extra dependency-tracking
> overhead. It also significantly increases the amount of IO and the
> size of ./target, which make caching less effective.

[fastbuilds]: https://matklad.github.io/2021/09/04/fast-rust-builds.html
2021-10-22 09:58:17 -07:00
Oliver Gould 0ac4f3f0a4
Use jemalloc (#1321)
In load tests, it appears that jemalloc is--perhaps unsurprisingly--more efficient
than the alternatives. Specifically, jemalloc uses less memory and is more responsive
to memory being released without substantially impacting latency or CPU usage.

This is only enabled on `x86_64-unknown-linux-gnu`, as this is the only platform
on which all tests pass, etc (per [gnzlbg/jemallocator][readme]).

[readme]: c27a859e98 (platform-support)
2021-10-21 20:17:53 -07:00
Oliver Gould 23be602cd8
Adopt Rust edition 2021 (#1295)
Update to Rust 1.56.0 and adopt the 2021 edition
2021-10-21 17:18:30 -07:00
dependabot[bot] 7a8836628c
build(deps): bump tower from 0.4.9 to 0.4.10 (#1320)
Bumps [tower](https://github.com/tower-rs/tower) from 0.4.9 to 0.4.10.
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-0.4.9...tower-0.4.10)

---
updated-dependencies:
- dependency-name: tower
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-20 12:59:41 -07:00
Oliver Gould ec441e5819
Fix an infinite loop when downgrading HTTP/2 errors (#1318)
578d979 introduced a bug: when the proxy handles errors on
HTTP/2-upgraded connections, it can get stuck in an infinite loop when
searching the error chain for an HTTP/2 error.

This change fixes this inifite loop and adds a test that exercises this
behavior to ensure that `downgrade_h2_error` behaves as expected.

Fixes linkerd/linkerd2#7103
2021-10-19 15:29:53 -07:00
Oliver Gould 384aa21ede
Split cryptographic dependencies into a dedicated crate (#1307)
The `ring`/`rustls`/`webpki` crates provide the cryptographic primitives
that we use for the proxy's mTLS functionality. But there's a desire to
support other cryptographic implementations (i.e. openssl/boringssl),
especially for FIPS 140-2.

This change introduces a new crate, `linkerd-tls-rustls`, into which all
types that depend on `ring`/`rustls`/`webpki` are moved. Specifically,
`Key`, `Crt`, and `CrtKey` are moved from `linkerd-identity` into
`rustls`. The `linkerd-tls` crate becomes generic over its TLS
implementation by using a `NewService` to build client connectors and a
`Service` to terminate server-side TLS connections.
2021-10-18 15:22:57 -07:00
Oliver Gould 66f2f0398d
inbound: Add a box layer to reduce compile times (#1317)
The inbound proxy builds in 30-40 minutes on recent nightlies. This can
be reduced to 3-4 minutes with a boxing layer. This change adds such a
layer so that fuzzing builds can complete in a timely fashion.
2021-10-17 17:56:39 -07:00
dependabot[bot] 504d8bea2f
build(deps): bump libc from 0.2.103 to 0.2.104 (#1315)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.103 to 0.2.104.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.103...0.2.104)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-17 15:12:24 -07:00
Oliver Gould 27587f5ec1
dns-name: Remove `webpki` dependency (#1316)
The `dns::Name` type is backed by `webpki::DNSName`; and the `webpki`
crate has a dependency on `ring`. As we setup to support alternate
cryptographic implementations, we don't want to incur this dependency
for such a simple type that only validates DNS-like names.

This change copies the `webpki::DNSName` and `webpki::DNSNameRef` types
as `dns::Name` and `dns::NameRef` (preserving copyright information).
Name parsing is simplified, as we don't need to handle wildcards with
these types.

Furthermore, this change updates the various identity-type wrapper types
to implement `Deref` so that `dns::Name::as_str` and
`dns::Name::as_bytes` are available implicitly.
2021-10-17 12:25:49 -07:00
dependabot[bot] 82d2c4029d
build(deps): bump actions/checkout from 2.3.4 to 2.3.5 (#1313)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](5a4ac9002d...1e204e9a92)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-16 12:37:09 -07:00
dependabot[bot] 24ddbc34ef
build(deps): bump trust-dns-resolver (#1311)
Bumps [trust-dns-resolver](https://github.com/bluejekyll/trust-dns) from 0.21.0-alpha.3 to 0.21.0-alpha.4.
- [Release notes](https://github.com/bluejekyll/trust-dns/releases)
- [Changelog](https://github.com/bluejekyll/trust-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bluejekyll/trust-dns/compare/v0.21.0-alpha.3...v0.21.0-alpha.4)

---
updated-dependencies:
- dependency-name: trust-dns-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-16 12:33:22 -07:00
dependabot[bot] 30db9dab18
build(deps): bump tower from 0.4.8 to 0.4.9 (#1308)
Bumps [tower](https://github.com/tower-rs/tower) from 0.4.8 to 0.4.9.
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-0.4.8...tower-0.4.9)

---
updated-dependencies:
- dependency-name: tower
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-16 12:30:08 -07:00
dependabot[bot] 7b9dc5daaa
build(deps): bump thiserror from 1.0.29 to 1.0.30 (#1306)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.29 to 1.0.30.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.29...1.0.30)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-11 20:21:38 -07:00
Oliver Gould 49227febfd
Require identity configuration (#1305)
The proxy currently supports a mode where identity is disabled. This
proliferates complexity that isn't really needed: there doesn't appear
to be a real use case where disabling identity is necessary. And, if it
is really necessary, we should reintroduce it after decoupling TLS and
identity.

This change causes the proxy to error during startup if identity is
disabled by configuration.

Furthermore, the `linkerd-proxy-identity` crate now has a `test-util`
feature that makes it possible to build a `LocalCrtKey` identity from
credentials provided by the `linkerd-identity/test-util` feature. A
default set of credentials are used in inbound and outbound tests.
2021-10-08 15:18:36 -07:00
Eliza Weisman 3bb7ec4dcf
tracing: simplify subscriber construction with `Box`ed layers (#1304)
Currently, the way the `tracing` subscriber is constructed is somewhat
convoluted, due to potentially constructing formatting layers with
different types (either plaintext logging or JSON). Because of this, we
can't simply have methods that return the `fmt` layer. Instead, we have
to pass the `Registry` into the methods that construct the `fmt` layers
and return a type-erased `Dispatch` after adding the `fmt` layers. This
is kind of not great. In particular, it makes adding additional layers
difficult, such as access logging (#601) and (eventually)
`tokio-console` support.

This branch refactors the subscriber construction to use the
(recently-added) `impl Layer<S> for Box<dyn Layer<S>>` in
`tracing-subscriber`. Now, we can erase the types of the JSON and
plaintext `fmt` layers and return them from the methods that construct
them, and layer them onto the `Registry` in
`tracing::Settings::build()`. This makes the `tracing` setup
significantly easier, and will enable changes I want to make in #601.

Boxing these layers does add slight overhead of dynamic dispatch + a
pointer dereference. However, I doubt this has a huge performance impact
in practice...
2021-10-08 09:59:04 -07:00
Oliver Gould 2c5b9e5bb1
metrics: Implement FmtMetrics for Option (#1302)
Some metrics are globally enabled/disabled from being emitted. In this
case, it's useful to simply return an optional implementnation of
`FmtMetrics`. This change implements `FmtMetrics` for `Option` so
implementations (like identity metrics) need not encode this state
internally.

To accomodate this `FmtMetrics::and_then` has been renamed to
`FmtMetrics::and_report` to avoid conflicting with `Option::and_then`.
2021-10-07 15:22:49 -07:00
Oliver Gould b1abc25ac9
dns: Avoid allocating in `Name::is_localhost` (#1303)
`Name::is_localhost` implements comparison by parsing the string
`localhost.` as a Name. This requires constructing a `String` as well as
performing name parsing. We can avoid this work by obtaining a reference
to the inner name string and using [`str::eq_ignore_ascii_case`][1].

[1]: https://doc.rust-lang.org/nightly/std/primitive.str.html#method.eq_ignore_ascii_case
2021-10-07 14:52:16 -07:00
dependabot[bot] fd446254d6
build(deps): bump tracing-subscriber from 0.2.24 to 0.2.25 (#1300)
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing) from 0.2.24 to 0.2.25.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.2.24...tracing-subscriber-0.2.25)

---
updated-dependencies:
- dependency-name: tracing-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 15:00:41 -07:00
Eliza Weisman 87434bc6c3
tracing: use `Option`s as `tracing` values (#1299)
Tracing 0.1.29 added a `tracing::field::Value` implementation for
`Option<T> where T: Value`. This means that `Option`s can now be used as
structured field values, rather than recording them with `fmt::Debug`.
When the `Option` is `None`, the field will simply be skipped.

This allows us to make a bunch of existing code simpler. There are a
number of places where we create one span or event if some value is
`Some`, and a different span/event without that field if the value is
`None`. This can be changed to just use the `Option` as a field value
directly.

I'm almost certain I missed some of those places, but I changed the ones
I could find.

This also updates `tracing` to 0.1.29, of course.
2021-10-06 13:35:15 -07:00
Oliver Gould 4b3d4b8ae0
Always enable identity in integration tests (#1298)
In preparation of making identity mandatory, this change adds
a default identity that is used in all integration tests (unless
overridden by the test itself).

This change also regenerates existing TLS credentials used in tests.
2021-10-05 08:35:06 -07:00
Oliver Gould 90dcb21244
gateway: Require ALPN on gateway connections (#1297)
In Linkerd stable-2.10.0, the proxy started using a specialized protocol
header for multicluster gateway connections (`transport.l5d.io`). Now
that stable-2.11.0 has been released, we can drop support for gateway
connections that do not use this protocol.
2021-10-01 08:21:03 -07:00
Oliver Gould 7d76096fac
Remove use of TLS 1.2 (#1296)
Now that stable-2.11.0 is out and TLSv1.3 has been supported since
2.10.0, this change removes TLSv1.2 from the set of TLS versions that
can be used by the proxy.
2021-10-01 08:20:03 -07:00
Oliver Gould 93a1f29dd2
admin: Remove unused types (#1294)
Rust nightly catches a few unused types that are apparently not caught
on the most recent stable releases.
2021-09-30 14:26:15 -07:00
dependabot[bot] afcfc34f68
build(deps): bump h2 from 0.3.4 to 0.3.6 (#1293)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.4 to 0.3.6.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.4...v0.3.6)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-30 13:22:18 -07:00
dependabot[bot] a0efa6bd88
build(deps): bump trust-dns-resolver (#1291)
Bumps [trust-dns-resolver](https://github.com/bluejekyll/trust-dns) from 0.21.0-alpha.2 to 0.21.0-alpha.3.
- [Release notes](https://github.com/bluejekyll/trust-dns/releases)
- [Changelog](https://github.com/bluejekyll/trust-dns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bluejekyll/trust-dns/compare/v0.21.0-alpha.2...v0.21.0-alpha.3)

---
updated-dependencies:
- dependency-name: trust-dns-resolver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-29 20:31:33 -07:00
dependabot[bot] 8aecbc491d
build(deps): bump libc from 0.2.102 to 0.2.103 (#1290)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.102 to 0.2.103.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.102...0.2.103)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-29 20:31:24 -07:00
731 changed files with 69987 additions and 21078 deletions

8
.checksec/amd64-gnu.json Normal file
View File

@ -0,0 +1,8 @@
{
"canary": "no",
"nx": "yes",
"pie": "yes",
"relro": "full",
"rpath": "no",
"runpath": "no"
}

View File

@ -0,0 +1,8 @@
{
"canary": "no",
"nx": "yes",
"pie": "yes",
"relro": "full",
"rpath": "no",
"runpath": "no"
}

8
.checksec/arm-gnu.json Normal file
View File

@ -0,0 +1,8 @@
{
"canary": "no",
"nx": "yes",
"pie": "yes",
"relro": "full",
"rpath": "no",
"runpath": "no"
}

8
.checksec/arm-musl.json Normal file
View File

@ -0,0 +1,8 @@
{
"canary": "no",
"nx": "yes",
"pie": "no",
"relro": "partial",
"rpath": "no",
"runpath": "no"
}

8
.checksec/arm64-gnu.json Normal file
View File

@ -0,0 +1,8 @@
{
"canary": "no",
"nx": "yes",
"pie": "yes",
"relro": "full",
"rpath": "no",
"runpath": "no"
}

View File

@ -0,0 +1,8 @@
{
"canary": "no",
"nx": "yes",
"pie": "no",
"relro": "partial",
"rpath": "no",
"runpath": "no"
}

View File

@ -1 +1,22 @@
type-complexity-threshold = 500
disallowed-methods = [
# Mutating environment variables in a multi-threaded context can
# cause data races.
# see https://github.com/rust-lang/rust/issues/90308 for details.
"std::env::set_var",
"std::env::remove_var",
# Avoid instances of https://github.com/rust-lang/rust/issues/86470 until tokio/tokio#4461 is
# available.
"tokio::time::Instant::duration_since",
"tokio::time::Instant::elapsed",
# Clippy doesn't let us ban tokio::time::Instant::sub, but it knows what it did.
]
disallowed-types = [
# Use parking_lot instead.
"std::sync::Mutex",
"std::sync::RwLock",
# Use tokio::time::Instant instead.
"std::time::Instant",
]

33
.codecov.yml Normal file
View File

@ -0,0 +1,33 @@
coverage:
ignore:
- "linkerd/app/integration/src/**"
- "**/src/gen/**"
- "tools/**"
precision: 2
round: down
range: "70...100"
status:
project:
default:
target: auto
threshold: 2%
if_not_found: success
if_ci_failed: error
paths:
- "!linkerd/app/integration/src/**"
- "!**/src/gen/**"
- "!tools/**"
patch:
default:
target: auto
threshold: 1%
if_not_found: success
if_ci_failed: error
comment:
layout: "header, diff, files, footer"
behavior: default
require_changes: false

12
.devcontainer/Dockerfile Normal file
View File

@ -0,0 +1,12 @@
ARG DEV_VERSION
FROM ghcr.io/linkerd/dev:${DEV_VERSION}
RUN scurl https://run.linkerd.io/install-edge | sh && \
mkdir -p "$HOME/bin" && ln -s "$HOME/.linkerd2/bin/linkerd" "$HOME/bin/linkerd"
ENV RUSTFLAGS="--cfg tokio_unstable"
# XXX(ver) This doesn't currently work, because it puts
# /usr/local/cargo/registry into a weird state with regard to permissions.
#RUN rustup toolchain install --profile=minimal nightly
#RUN cargo +nightly install cargo-fuzz

View File

@ -0,0 +1,63 @@
{
"name": "linkerd2-proxy",
"build": {
"dockerfile": "Dockerfile",
"args": {
"DEV_VERSION": "v47",
"http_proxy": "${localEnv:http_proxy}",
"https_proxy": "${localEnv:https_proxy}"
}
},
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"DavidAnson.vscode-markdownlint",
"kokakiwi.vscode-just",
"NathanRidley.autotrim",
"rust-lang.rust-analyzer",
"samverschueren.final-newline",
"tamasfe.even-better-toml",
"zxh404.vscode-proto3"
],
"settings": {
"files.insertFinalNewline": true,
"[git-commit]": {
"editor.rulers": [
72,
80
],
"editor.wordWrap": "wordWrapColumn",
"editor.wordWrapColumn": 80
}
}
}
},
// Support docker + debugger
"runArgs": [
"--init",
// Limit container memory usage.
"--memory=24g",
"--memory-swap=24g",
// Use the host network so we can access k3d, etc.
"--net=host",
// For lldb
"--cap-add=SYS_PTRACE",
"--security-opt=seccomp=unconfined"
],
"overrideCommand": false,
"remoteUser": "code",
"containerEnv": {
"CXX": "clang++-19",
"RUSTFLAGS": "--cfg tokio_unstable"
},
"mounts": [
{
"source": "/var/run/docker.sock",
"target": "/var/run/docker-host.sock",
"type": "bind"
}
]
}

2
.gitattributes vendored
View File

@ -1 +1,3 @@
Cargo.lock linguist-generated=false
linkerd/transport-header/src/gen/* linguist-generated=true
opencensus-proto/src/gen/* linguist-generated=true

2
.github/CODEOWNERS vendored
View File

@ -1 +1 @@
* @linkerd/proxy-maintainers
* @linkerd/maintainers

View File

@ -1,16 +0,0 @@
ARG BASE_IMAGE=rust:1.55.0-buster
FROM $BASE_IMAGE
WORKDIR /linkerd
RUN apt-get update && \
apt-get install -y jq && \
apt-get install -y --no-install-recommends g++-aarch64-linux-gnu libc6-dev-arm64-cross && \
rustup target add aarch64-unknown-linux-gnu && \
apt-get install -y --no-install-recommends g++-arm-linux-gnueabihf libc6-dev-armhf-cross && \
rustup target add armv7-unknown-linux-gnueabihf && \
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc
# v2.1.0
ARG CHECKSEC_SHA=04582bad41589ad479ca8b1f0170ed317475b5a5
RUN cd /usr/local/bin && curl -vsLO "https://raw.githubusercontent.com/slimm609/checksec.sh/$CHECKSEC_SHA/checksec" && chmod 755 checksec
COPY expected-checksec.json validate-checksec.sh /linkerd/

View File

@ -1,10 +0,0 @@
{
"canary": "yes",
"fortify_source": "yes",
"nx": "yes",
"pie": "yes",
"relro": "full",
"rpath": "no",
"runpath": "no",
"symbols": "no"
}

View File

@ -1,25 +0,0 @@
#!/bin/sh
set -eu
if [ $# -ne 2 ]; then
(
echo "usage: $0 EXPECTED RECEIVED"
echo
echo "Found $# args"
) >&2
exit 64
fi
expected_file="$1"
received_file="$2"
if [ ! -f "$expected_file" ]; then
echo "JSON output not found: $expected_file" >&2
exit 1
fi
if [ ! -f "$received_file" ]; then
echo "JSON output not found: $received_file" >&2
exit 1
fi
jq -S '.' "$received_file" | diff -u "$expected_file" - >&2

View File

@ -1,3 +0,0 @@
FROM busybox:1.31
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,16 +0,0 @@
name: release-tag-meta
description: Extract release metadata from the tag
inputs:
git-ref:
required: true
description: "The git ref (i.e. starting with refs/tags)"
outputs:
tag:
description: "The git tag (without the refs prefix)"
name:
description: "The release name"
runs:
using: docker
image: Dockerfile
args:
- ${{ inputs.git-ref }}

View File

@ -1,10 +0,0 @@
#!/bin/sh
set -eu
ref="$1"
tag=$(echo "$ref" | sed s,^refs/tags/,,)
name=$(echo "$tag" | sed s,^release/,,)
echo ::set-output "name=tag::$tag"
echo ::set-output "name=name::$name"

156
.github/copilot-instructions.md vendored Normal file
View File

@ -0,0 +1,156 @@
# Linkerd2 Proxy Copilot Instructions
## Code Generation
- Code MUST pass `cargo fmt`.
- Code MUST pass `cargo clippy --all-targets --all-features -- -D warnings`.
- Markdown MUST pass `markdownlint-cli2`.
- Prefer `?` for error propagation.
- Avoid `unwrap()` and `expect()` outside tests.
- Use `tracing` crate macros (`tracing::info!`, etc.) for structured logging.
### Comments
Comments should explain **why**, not **what**. Focus on high-level rationale and
design intent at the function or block level, rather than line-by-line
descriptions.
- Use comments to capture:
- System-facing or interface-level concerns
- Key invariants, preconditions, and postconditions
- Design decisions and trade-offs
- Cross-references to architecture or design documentation
- Avoid:
- Line-by-line commentary explaining obvious code
- Restating what the code already clearly expresses
- For public APIs:
- Use `///` doc comments to describe the contract, behavior, parameters, and
usage examples
- For internal rationale:
- Use `//` comments sparingly to note non-obvious reasoning or edge-case
handling
- Be neutral and factual.
### Rust File Organization
For Rust source files, enforce this layout:
1. **Nonpublic imports**
- Declare all `use` statements for private/internal crates first.
- Group imports to avoid duplicates and do **not** add blank lines between
`use` statements.
2. **Module declarations**
- List all `mod` declarations.
3. **Reexports**
- Follow with `pub use` statements.
4. **Type definitions**
- Define `struct`, `enum`, `type`, and `trait` declarations.
- Sort by visibility: `pub` first, then `pub(crate)`, then private.
- Public types should be documented with `///` comments.
5. **Impl blocks**
- Implement methods in the same order as types above.
- Precede each types `impl` block with a header comment: `// === <TypeName> ===`
6. **Tests**
- End with a `tests` module guarded by `#[cfg(test)]`.
- If the infile test module exceeds 100lines, move it to
`tests/<filename>.rs` as a child integrationtest module.
## Test Generation
- Async tests MUST use `tokio::test`.
- Synchronous tests use `#[test]`.
- Include at least one failingedgecase test per public function.
- Use `tracing::info!` for logging in tests, usually in place of comments.
## Code Review
### Rust
- Point out any `unsafe` blocks and justify their safety.
- Flag functions >50 LOC for refactor suggestions.
- Highlight missing docs on public items.
### Markdown
- Use `markdownlint-cli2` to check for linting errors.
- Lines SHOULD be wrapped at 80 characters.
- Fenced code blocks MUST include a language identifier.
### Copilot Instructions
- Start each instruction with an imperative, presenttense verb.
- Keep each instruction under 120 characters.
- Provide one directive per instruction; avoid combining multiple ideas.
- Use "MUST" and "SHOULD" sparingly to emphasize critical rules.
- Avoid semicolons and complex punctuation within bullets.
- Do not reference external links, documents, or specific coding standards.
## Commit Messages
Commits follow the Conventional Commits specification:
### Subject
Subjects are in the form: `<type>[optional scope]: <description>`
- **Type**: feat, fix, docs, refactor, test, chore, ci, build, perf, revert
(others by agreement)
- **Scope**: optional, lowercase; may include `/` to denote submodules (e.g.
`http/detect`)
- **Description**: imperative mood, present tense, no trailing period
- MUST be less than 72 characters
- Omit needless words!
### Body
Non-trivial commits SHOULD include a body summarizing the change.
- Explain *why* the change was needed.
- Describe *what* was done at a high level.
- Use present-tense narration.
- Use complete sentences, paragraphs, and punctuation.
- Preceded by a blank line.
- Wrapped at 80 characters.
- Omit needless words!
### Breaking changes
If the change introduces a backwards-incompatible change, it MUST be marked as
such.
- Indicated by `!` after the type/scope (e.g. `feat(inbound)!: …`)
- Optionally including a `BREAKING CHANGE:` section in the footer explaining the
change in behavior.
### Examples
```text
feat(auth): add JWT refresh endpoint
There is currently no way to refresh a JWT token.
This exposes a new `/refresh` route that returns a refreshed token.
```
```text
feat(api)!: remove deprecated v1 routes
The `/v1/*` endpoints have been deprecated for a long time and are no
longer called by clients.
This change removes the `/v1/*` endpoints and all associated code,
including integration tests and documentation.
BREAKING CHANGE: The previously-deprecated `/v1/*` endpoints were removed.
```
## Pull Requests
- The subject line MUST be in the conventional commit format.
- Autogenerate a PR body summarizing the problem, solution, and verification steps.
- List breaking changes under a separate **Breaking Changes** heading.

View File

@ -1,41 +1,115 @@
# Dependabot are scheduled to avoid contention with normal workday CI usage. We
# start running updates at 10AM UTC (2AM PST).
version: 2
updates:
- package-ecosystem: cargo
directory: /
schedule:
interval: daily
time: "10:00"
timezone: "UTC"
allow:
- dependency-type: "all"
ignore:
# These dependencies are for platforms that we don't support:
- dependency-name: "hermit-abi"
- dependency-name: "redox_*"
- dependency-name: "js-sys"
- dependency-name: "wasm-bindgen"
- dependency-name: "web-sys"
- dependency-name: "windows*"
groups:
boring:
patterns:
- "tokio-boring"
- "boring*"
futures:
patterns:
- "futures*"
grpc:
patterns:
- "prost*"
- "tonic*"
hickory:
patterns:
- "hickory*"
icu4x:
patterns:
- "icu_*"
opentelemetry:
patterns:
- "opentelemetry*"
rustls:
patterns:
- "tokio-rustls"
- "rustls*"
- "ring"
symbolic:
patterns:
- "symbolic-*"
tracing:
patterns:
- "tracing*"
- package-ecosystem: cargo
directory: /linkerd/addr/fuzz
schedule:
interval: daily
time: "10:00"
timezone: "UTC"
- package-ecosystem: cargo
directory: /linkerd/app/inbound/fuzz
schedule:
interval: daily
time: "10:00"
timezone: "UTC"
- package-ecosystem: cargo
directory: /linkerd/dns/fuzz
schedule:
interval: daily
time: "10:00"
timezone: "UTC"
- package-ecosystem: cargo
directory: /linkerd/proxy/http/fuzz
schedule:
interval: daily
time: "10:00"
timezone: "UTC"
- package-ecosystem: cargo
directory: /linkerd/tls/fuzz
schedule:
interval: daily
time: "10:00"
timezone: "UTC"
- package-ecosystem: cargo
directory: /linkerd/transport-header/fuzz
schedule:
interval: daily
time: "10:00"
timezone: "UTC"
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: daily
time: "10:00"
timezone: "UTC"
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: daily
time: "09:00"
timezone: "UTC"
- package-ecosystem: "docker"
directory: "/.devcontainer"
schedule:
interval: daily
time: "09:00"
timezone: "UTC"

27
.github/fuzzers-list.sh vendored Executable file
View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -euo pipefail
## Lists the fuzzers that should be run given a set of changed files.
# Find the nearest fuzzer crate, or nothing.
find_fuzz_dir() {
d=${1%/*}
if ! [[ "$d" =~ / ]]; then
return
elif [ -d "$d" ] && [[ "$d" = */fuzz ]]; then
echo "$d"
elif [ -f "$d/fuzz/Cargo.toml" ]; then
echo "$d/fuzz"
else
find_fuzz_dir "$d"
fi
}
for file in "$@" ; do
if [ "$file" = .github/workflows/fuzzers.yml ] || [ "$file" = .github/fuzzers-list.sh ]; then
find linkerd -type d -name fuzz
break
fi
find_fuzz_dir "$file"
done | sort -u

39
.github/list-crates.sh vendored Executable file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env bash
set -eu
if [ $# -eq 0 ]; then
echo '[]'
exit 0
fi
# Find the nearest Cargo.toml (except the root).
find_manifest() {
p=${1%/*}
if [ -f "$p/Cargo.toml" ]; then
realpath "$p/Cargo.toml"
else
find_manifest "$p"
fi
}
# Build an expression to match all changed manifests.
manifest_expr() {
printf '%s' 'false'
for file in "$@" ; do
m=$(find_manifest "$file")
if [ "$m" != "Cargo.toml" ]; then
printf ' or (. == "%s")' "$m"
fi
done
printf '\n'
}
expr=$(manifest_expr "$@")
# Get the crate names for all changed manifest directories.
crates=$(cargo metadata --locked --format-version=1 \
| jq -cr "[.packages[] | select(.manifest_path | $expr) | .name]")
echo "crates=$crates" >> "$GITHUB_OUTPUT"
echo "$crates" | jq .

View File

@ -1,58 +0,0 @@
# Optional build
name: Advisory
on:
pull_request: {}
jobs:
# Prevent sudden announcement of a new advisory from failing Ci.
advisories:
timeout-minutes: 5
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- uses: EmbarkStudios/cargo-deny-action@0ca727bbae7b7b578b9a5f98186caac35aa2a00d
with:
command: check advisories
# Ensure that all of the fuzzers continue to build.
#
# This is optional because it depends on the nightly toolchain.
fuzzers:
timeout-minutes: 40
runs-on: ubuntu-latest
container:
image: docker://rust:1.55.0-buster
permissions:
contents: read
strategy:
matrix:
dir:
- addr
- app/inbound
- dns
- proxy/http
- tls
- transport-header
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- run: rustup toolchain add nightly
- run: cargo install cargo-fuzz
# Iterate through all fuzz crates to ensure each compiles independently.
- run: cd linkerd/${{matrix.dir}}/fuzz && cargo +nightly fuzz build
# It's easy to make changes that are innocuous in dev builds that end up ballooning resources
# needed for release builds. This job builds the proxy in release-mode to ensure the build isn't
# OOM-killed.
release-binary:
timeout-minutes: 20
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- run: make build
env:
CARGO_RELEASE: true

34
.github/workflows/beta.yml vendored Normal file
View File

@ -0,0 +1,34 @@
# Builds the proxy on the beta toolchain to help catch Rust regressions before they hit stable.
name: rust-beta
on:
workflow_dispatch: {}
pull_request:
paths:
- justfile
- .github/workflows/beta.yml
schedule:
# Run weekly on wednesday @ midnightish Pacific-time.
- cron: "30 7 * * 3"
env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUSTUP_MAX_RETRIES: 10
RUSTFLAGS: "-D warnings --cfg tokio_unstable"
permissions:
contents: read
jobs:
build:
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
container: ghcr.io/linkerd/dev:v47-rust
timeout-minutes: 20
continue-on-error: true
steps:
- run: rustup toolchain install --profile=minimal beta
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- run: just toolchain=beta fetch
- run: just toolchain=beta build

View File

@ -1,20 +1,58 @@
name: Coverage
# Run weekly on Sunday at midnight (UTC).
on:
schedule:
- cron: '0 0 * * 0'
push:
branches: [main]
pull_request: {}
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
cancel-in-progress: true
env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUSTFLAGS: "-D warnings -A deprecated --cfg tokio_unstable -C debuginfo=2"
RUSTUP_MAX_RETRIES: 10
jobs:
test:
name: codecov
runs-on: ubuntu-latest
meta:
timeout-minutes: 5
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- id: changed
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c
with:
files: |
.codecov.yml
.github/workflows/coverage.yml
**/*.rs
files_ignore: |
*-proto/**
linkerd/transport-header/**
outputs:
any_changed: ${{ steps.changed.outputs.any_changed }}
codecov:
needs: meta
if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || needs.meta.outputs.any_changed == 'true'
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
timeout-minutes: 30
container:
image: docker://rust:1.55.0-buster
options: --security-opt seccomp=unconfined
image: docker://ghcr.io/linkerd/dev:v47-rust
options: --security-opt seccomp=unconfined # 🤷
env:
CXX: "/usr/bin/clang++-19"
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- run: cargo install cargo-tarpaulin
- run: cargo tarpaulin --verbose --workspace --out Xml
- uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0
- run: cargo tarpaulin --locked --workspace --exclude=linkerd2-proxy --exclude=linkerd-transport-header --exclude=opencensus-proto --exclude=spire-proto --no-run
- run: cargo tarpaulin --locked --workspace --exclude=linkerd2-proxy --exclude=linkerd-transport-header --exclude=opencensus-proto --exclude=spire-proto --skip-clean --ignore-tests --no-fail-fast --out=Xml
# Some tests are especially flakey in coverage tests. That's fine. We
# only really care to measure how much of our codebase is covered.
continue-on-error: true
- uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24

63
.github/workflows/fuzzers.yml vendored Normal file
View File

@ -0,0 +1,63 @@
name: fuzzers
on:
# Only run on PRs that touch fuzzed crates
pull_request:
paths:
- 'linkerd/addr/**'
- 'linkerd/app/inbound/**'
- 'linkerd/dns/**'
- 'linkerd/proxy/http/**'
- 'linkerd/tls/**'
- 'linkerd/transport-header/**'
- .github/workflows/fuzzers.yml
- .github/fuzzers-list.sh
env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUST_BACKTRACE: short
RUSTFLAGS: "-D warnings -A deprecated --cfg tokio_unstable -C debuginfo=0"
RUSTUP_MAX_RETRIES: 10
permissions:
contents: read
jobs:
list-changed:
timeout-minutes: 3
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
container: docker://rust:1.88.0
steps:
- run: apt update && apt install -y jo
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c
id: changed-files
- name: list changed crates
id: list-changed
shell: bash
run: |
dirs=$(.github/fuzzers-list.sh ${{ steps.changed-files.outputs.all_changed_files }} | jo -a)
echo "dirs=$dirs" >> "$GITHUB_OUTPUT"
outputs:
dirs: ${{ steps.list-changed.outputs.dirs }}
# Build fuzzers for any changed crates.
build:
needs: [list-changed]
timeout-minutes: 40
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
container: docker://rust:1.88.0
strategy:
matrix:
dir: ${{ fromJson(needs.list-changed.outputs.dirs) }}
steps:
- run: rustup toolchain add nightly
- run: cargo install cargo-fuzz
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- working-directory: ${{matrix.dir}}
run: cargo +nightly fetch
- working-directory: ${{matrix.dir}}
run: cargo +nightly fuzz build

20
.github/workflows/markdown.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: markdown
permissions:
contents: read
on:
pull_request:
paths:
- '**/*.md'
- .github/workflows/markdown.yml
jobs:
markdownlint:
timeout-minutes: 5
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- uses: DavidAnson/markdownlint-cli2-action@992badcdf24e3b8eb7e87ff9287fe931bcb00c6e
with:
globs: "**/*.md"

34
.github/workflows/nightly.yml vendored Normal file
View File

@ -0,0 +1,34 @@
# Builds the proxy on the nightly toolchain to help catch Rust regressions before they hit beta.
name: rust-nightly
on:
workflow_dispatch: {}
pull_request:
paths:
- justfile
- .github/workflows/nightly.yml
schedule:
# Run daily @ midnightish Pacific-time.
- cron: "0 8 * * *"
env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUSTFLAGS: "-D warnings -A opaque_hidden_inferred_bound --cfg tokio_unstable -C debuginfo=0"
RUSTUP_MAX_RETRIES: 10
permissions:
contents: read
jobs:
build:
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
container: ghcr.io/linkerd/dev:v47-rust
timeout-minutes: 20
continue-on-error: true
steps:
- run: rustup toolchain install --profile=minimal nightly
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- run: just toolchain=nightly fetch
- run: just toolchain=nightly profile=release build

177
.github/workflows/pr.yml vendored Normal file
View File

@ -0,0 +1,177 @@
name: Pull Request
on: pull_request
env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUSTUP_MAX_RETRIES: 10
RUSTFLAGS: "-D warnings -D deprecated --cfg tokio_unstable -C debuginfo=0"
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
cancel-in-progress: true
jobs:
meta:
timeout-minutes: 5
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- id: build
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c
with:
files: |
.github/workflows/pr.yml
justfile
Dockerfile
- id: actions
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c
with:
files: |
.github/workflows/**
.devcontainer/*
- id: cargo
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c
with:
files_ignore: "Cargo.toml"
files: |
**/Cargo.toml
- id: cargo-crates
if: steps.cargo.outputs.any_changed == 'true'
run: ./.github/list-crates.sh ${{ steps.cargo.outputs.all_changed_files }}
- id: rust
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c
with:
files: |
**/*.rs
Cargo.lock
outputs:
is_dependabot: ${{ github.actor == 'dependabot[bot]' }}
any_changed: ${{ steps.build.outputs.any_changed == 'true' || steps.actions.outputs.any_changed == 'true' || steps.cargo.outputs.any_change == 'true' || steps.rust.outputs.any_changed == 'true' }}
build_changed: ${{ steps.build.outputs.any_changed }}
actions_changed: ${{ steps.build.outputs.any_changed == 'true' || steps.actions.outputs.any_changed == 'true' }}
cargo_changed: ${{ steps.cargo.outputs.any_changed == 'true' }}
cargo_crates: ${{ steps.cargo-crates.outputs.crates }}
rust_changed: ${{ steps.build.outputs.any_changed == 'true' || steps.rust.outputs.any_changed == 'true' }}
info:
timeout-minutes: 3
needs: meta
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- name: Info
run: |
echo 'github.actor: ${{ github.actor }}'
echo 'github.event_name: ${{ github.event_name }}'
echo 'github.event.pull_request.number: ${{ github.event.pull_request.number }}'
echo 'needs.meta.outputs.is_dependabot: ${{ needs.meta.outputs.is_dependabot }}'
echo 'needs.meta.outputs.any_changed: ${{ needs.meta.outputs.any_changed }}'
echo 'needs.meta.outputs.actions_changed: ${{ needs.meta.outputs.actions_changed }}'
echo 'needs.meta.outputs.cargo_changed: ${{ needs.meta.outputs.cargo_changed }}'
echo 'needs.meta.outputs.cargo_crates: ${{ needs.meta.outputs.cargo_crates }}'
echo 'needs.meta.outputs.rust_changed: ${{ needs.meta.outputs.rust_changed }}'
actions:
needs: meta
if: needs.meta.outputs.actions_changed == 'true'
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- uses: linkerd/dev/actions/setup-tools@v47
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- run: just action-lint
- run: just action-dev-check
rust:
needs: meta
if: needs.meta.outputs.cargo_changed == 'true' || needs.meta.outputs.rust_changed == 'true'
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
container: ghcr.io/linkerd/dev:v47-rust
permissions:
contents: read
timeout-minutes: 20
steps:
- run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0
- run: just fetch
- run: cargo deny --all-features check bans licenses sources
- run: just check-fmt
- run: just clippy
- run: just doc
- run: just test --exclude=linkerd2-proxy --no-run
- run: just test --exclude=linkerd2-proxy
env:
NEXTEST_RETRIES: 3
rust-crates:
needs: meta
if: needs.meta.outputs.cargo_changed == 'true'
timeout-minutes: 20
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
container: ghcr.io/linkerd/dev:v47-rust
strategy:
matrix:
crate: ${{ fromJson(needs.meta.outputs.cargo_crates) }}
steps:
- run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0
- run: just fetch
- run: just check-crate ${{ matrix.crate }}
linkerd-install:
needs: meta
if: needs.meta.outputs.cargo_changed == 'true' || needs.meta.outputs.rust_changed == 'true'
timeout-minutes: 20
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
env:
WAIT_TIMEOUT: 2m
steps:
- uses: linkerd/dev/actions/setup-tools@v47
- name: scurl https://run.linkerd.io/install-edge | sh
run: |
scurl https://run.linkerd.io/install-edge | sh
echo "PATH=$PATH:$HOME/.linkerd2/bin" >> "$GITHUB_ENV"
export PATH="$PATH:$HOME/.linkerd2/bin"
tag=$(linkerd version --client --short)
echo "linkerd $tag"
echo "LINKERD_TAG=$tag" >> "$GITHUB_ENV"
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- run: just docker
- run: just k3d-create
- run: just k3d-load-linkerd
- run: just linkerd-install
- run: just linkerd-check-control-plane-proxy
env:
TMPDIR: ${{ runner.temp }}
ship-it:
timeout-minutes: 3
needs: [meta, actions, rust, rust-crates, linkerd-install]
if: always()
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
permissions:
contents: write
pull-requests: write
steps:
- name: Results
run: |
echo 'needs.actions.result: ${{ needs.actions.result }}'
echo 'needs.rust.result: ${{ needs.rust.result }}'
echo 'needs.rust-crates.result: ${{ needs.rust-crates.result }}'
echo 'needs.linkerd-install.result: ${{ needs.linkerd-install.result }}'
- name: Verify jobs
# All jobs must succeed or be skipped.
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: exit 1
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
if: needs.meta.outputs.is_dependabot == 'true' && needs.meta.outputs.any_changed == 'true'
- name: "Merge dependabot changes"
if: needs.meta.outputs.is_dependabot == 'true' && needs.meta.outputs.any_changed == 'true'
run: gh pr merge '${{ github.event.pull_request.number }}' --auto --squash
env:
GH_TOKEN: ${{ github.token }}

78
.github/workflows/release-weekly.yml vendored Normal file
View File

@ -0,0 +1,78 @@
name: Weekly proxy release
on:
schedule:
# Wednesday at ~8:40PM Pacific
- cron: "40 3 * * 3"
workflow_dispatch: {}
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
cancel-in-progress: true
jobs:
last-release:
if: github.repository == 'linkerd/linkerd2-proxy' # Don't run this in forks.
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
timeout-minutes: 5
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
steps:
- name: Latest release
id: latest
run: gh release view --json name,publishedAt | jq -r 'to_entries[] | (.key + "=" + .value)' >> "$GITHUB_OUTPUT"
- name: Check if release was in last 72 hours
id: recency
env:
PUBLISHED_AT: ${{ steps.latest.outputs.publishedAt }}
run: |
if [ "$(date -d "$PUBLISHED_AT" +%s)" -gt "$(date -d '72 hours ago' +%s)" ]; then
echo "Last release $PUBLISHED_AT is recent" >&2
echo "recent=true" >> "$GITHUB_OUTPUT"
else
echo "Last release $PUBLISHED_AT is not recent" >&2
echo "recent=false" >> "$GITHUB_OUTPUT"
fi
outputs:
version: ${{ steps.latest.outputs.name }}
published-at: ${{ steps.latest.outputs.publishedAt }}
recent: ${{ steps.recency.outputs.recent == 'true' }}
last-commit:
needs: last-release
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
timeout-minutes: 5
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- name: Check if the most recent commit is after the last release
id: recency
env:
PUBLISHED_AT: ${{ needs.last-release.outputs.published-at }}
run: |
if [ "$(git log -1 --format=%ct)" -gt "$(date -d "$PUBLISHED_AT" +%s)" ]; then
echo "HEAD after last release $PUBLISHED_AT" >&2
echo "after-release=true" >> "$GITHUB_OUTPUT"
else
echo "after-release=false" >> "$GITHUB_OUTPUT"
fi
outputs:
after-release: ${{ steps.recency.outputs.after-release == 'true' }}
trigger-release:
needs: [last-release, last-commit]
if: needs.last-release.outputs.recent == 'false' && needs.last-commit.outputs.after-release == 'true'
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
timeout-minutes: 5
permissions:
actions: write
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
LAST_VERSION: ${{ needs.last-release.outputs.version }}
steps:
- name: Get the latest minor version
run: |
m="$(echo "$LAST_VERSION" | cut -d. -f2)"
echo MINOR_VERSION="$((m+1))" >> "$GITHUB_ENV"
- run: gh workflow run release.yml -f publish=true -f version=v2."$MINOR_VERSION".0

View File

@ -1,94 +1,254 @@
name: Release
on:
push:
tags:
- "release/*"
pull_request: {}
workflow_dispatch:
inputs:
version:
description: "Version in the form v1.2.3-prerelease+buildinfo"
required: true
type: string
tag-prefix:
description: "Tag prefix"
required: false
type: string
default: "release/"
profile:
description: "Build profile"
required: false
type: choice
options: ["debug", "release"]
default: "release"
publish:
description: "Publish the release?"
required: false
type: boolean
default: false
ref:
description: "Reference of the commit to release (default: github.ref)"
required: false
type: string
default: ""
prerelease:
description: "Is this a prerelease?"
required: false
type: boolean
default: false
draft:
description: "Is this a draft?"
required: false
type: boolean
default: false
latest:
description: "Make this the latest release?"
required: false
type: boolean
default: true
env:
CARGO: "cargo auditable"
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUSTFLAGS: "-D warnings -A deprecated --cfg tokio_unstable"
RUSTUP_MAX_RETRIES: 10
concurrency:
group: ${{ github.workflow }}-${{ inputs.ref || github.head_ref }}
cancel-in-progress: true
jobs:
meta:
timeout-minutes: 5
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
if: github.event_name == 'pull_request'
- id: workflow
if: github.event_name == 'pull_request'
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c
with:
files: |
.github/workflows/release.yml
- id: build
if: github.event_name == 'pull_request'
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c
with:
files: |
justfile
Cargo.toml
- id: version
env:
VERSION: ${{ inputs.version }}
shell: bash
run: |
set -euo pipefail
shopt -s extglob
if [[ "$GITHUB_EVENT_NAME" == pull_request ]]; then
echo version="0.0.0-test.${GITHUB_SHA:0:7}" >> "$GITHUB_OUTPUT"
exit 0
fi
if ! [[ "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z-]+)?(\+[0-9A-Za-z-]+)?$ ]]; then
echo "Invalid version: $VERSION" >&2
exit 1
fi
echo version="${VERSION#v}" >> "$GITHUB_OUTPUT"
- id: platform
shell: bash
env:
WORKFLOW_CHANGED: ${{ steps.workflow.outputs.any_changed }}
run: |
if [[ "$GITHUB_EVENT_NAME" == pull_request && "$WORKFLOW_CHANGED" != 'true' ]]; then
( echo archs='["amd64"]'
echo oses='["linux"]' ) >> "$GITHUB_OUTPUT"
exit 0
fi
( echo archs='["amd64", "arm64"]'
echo oses='["linux", "windows"]'
) >> "$GITHUB_OUTPUT"
outputs:
archs: ${{ steps.platform.outputs.archs }}
oses: ${{ steps.platform.outputs.oses }}
version: ${{ steps.version.outputs.version }}
package: ${{ github.event_name == 'workflow_dispatch' || steps.build.outputs.any_changed == 'true' || steps.workflow.outputs.any_changed == 'true' }}
profile: ${{ inputs.profile || 'release' }}
publish: ${{ inputs.publish }}
ref: ${{ inputs.ref || github.sha }}
tag: "${{ inputs.tag-prefix || 'release/' }}v${{ steps.version.outputs.version }}"
prerelease: ${{ inputs.prerelease }}
draft: ${{ inputs.draft }}
latest: ${{ inputs.latest }}
info:
needs: meta
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
timeout-minutes: 3
steps:
- name: Inputs
run: |
jq . <<EOF
${{ toJson(inputs) }}
EOF
- name: Meta
run: |
jq . <<EOF
${{ toJson(needs.meta.outputs) }}
EOF
package:
permissions:
contents: write
needs: meta
if: needs.meta.outputs.package == 'true'
strategy:
matrix:
architecture: [amd64, arm64, arm]
include:
- architecture: amd64
target: x86_64-unknown-linux-gnu
strip: strip
- architecture: arm64
target: aarch64-unknown-linux-gnu
strip: aarch64-linux-gnu-strip
- architecture: arm
target: armv7-unknown-linux-gnueabihf
strip: arm-linux-gnueabihf-strip
name: Package (${{ matrix.architecture }})
runs-on: ubuntu-latest
arch: ${{ fromJson(needs.meta.outputs.archs) }}
os: ${{ fromJson(needs.meta.outputs.oses) }}
libc: [gnu] # musl
exclude:
- os: windows
arch: arm64
# If we're not actually building on a release tag, don't short-circuit on
# errors. This helps us know whether a failure is platform-specific.
continue-on-error: ${{ needs.meta.outputs.publish != 'true' }}
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
timeout-minutes: 40
container: docker://ghcr.io/linkerd/dev:v47-rust-musl
env:
LINKERD2_PROXY_VENDOR: ${{ github.repository_owner }}
LINKERD2_PROXY_VERSION: ${{ needs.meta.outputs.version }}
steps:
- name: git co
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
# TODO: add to dev image
- name: Install MiniGW
if: matrix.os == 'windows'
run: apt-get update && apt-get install -y mingw-w64
- name: Install cross compilation toolchain
if: matrix.arch == 'arm64'
run: apt-get update && apt-get install -y binutils-aarch64-linux-gnu
- name: meta
id: release-tag-meta
uses: ./.github/actions/release-tag-meta
- name: Configure git
run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
with:
git-ref: ${{ github.ref }}
#- run: echo "${{ toJSON(steps.release-tag-meta) }}"
- name: package
env:
CARGO_RELEASE: "1"
PACKAGE_VERSION: ${{ steps.release-tag-meta.outputs.name }}
CARGO_TARGET: ${{ matrix.target }}
STRIP: ${{ matrix.strip }}
ARCH: ${{ matrix.architecture }}
uses: ./.github/actions/package
ref: ${{ needs.meta.outputs.ref }}
- uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0
with:
entrypoint: make
args: package
- name: checksec
uses: ./.github/actions/package
key: ${{ matrix.os }}-${{ matrix.arch }}
- run: just fetch
- run: just arch=${{ matrix.arch }} libc=${{ matrix.libc }} os=${{ matrix.os }} rustup
- run: just arch=${{ matrix.arch }} libc=${{ matrix.libc }} os=${{ matrix.os }} profile=${{ needs.meta.outputs.profile }} build
- run: just arch=${{ matrix.arch }} libc=${{ matrix.libc }} os=${{ matrix.os }} profile=${{ needs.meta.outputs.profile }} package
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
entrypoint: /linkerd/validate-checksec.sh
args: /linkerd/expected-checksec.json "target/${{ matrix.target }}/release/package/linkerd2-proxy-${{ steps.release-tag-meta.outputs.name }}-${{ matrix.architecture }}-checksec.json"
name: ${{ matrix.arch }}-${{ matrix.os }}-artifacts
path: target/package/*
- name: upload artifacts
uses: actions/upload-artifact@27121b0bdffd731efa15d66772be8dc71245d074
with:
name: ${{ matrix.architecture }}-artifacts
path: target/${{ matrix.target }}/release/package/*
release:
needs: [package]
name: GitHub Release
runs-on: ubuntu-latest
publish:
needs: [meta, package]
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
timeout-minutes: 5
permissions:
actions: write
contents: write
env:
VERSION: v${{ needs.meta.outputs.version }}
TAG: ${{ needs.meta.outputs.tag }}
steps:
- name: git co
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- name: meta
id: release-tag-meta
uses: ./.github/actions/release-tag-meta
- name: Configure git
env:
GITHUB_USERNAME: ${{ vars.LINKERD2_PROXY_GITHUB_USERNAME || 'github-actions[bot]' }}
run: |
git config --global --add safe.directory "$PWD" # actions/runner#2033
git config --global user.name "$GITHUB_USERNAME"
git config --global user.email "$GITHUB_USERNAME"@users.noreply.github.com
# Tag the release.
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
with:
git-ref: ${{ github.ref }}
- name: download artifacts
uses: actions/download-artifact@3be87be14a055c47b01d3bd88f8fe02320a9bb60
token: ${{ secrets.LINKERD2_PROXY_GITHUB_TOKEN || github.token }}
ref: ${{ needs.meta.outputs.ref }}
- run: git tag -a -m "$VERSION" "$TAG"
# Fetch the artifacts.
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
with:
path: artifacts
- name: display structure of downloaded files
run: ls -R artifacts
- name: release
uses: softprops/action-gh-release@6034af24fba4e5a8e975aaa6056554efe4c794d0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: du -h artifacts/**/*
# Publish the release.
- if: needs.meta.outputs.publish == 'true'
run: git push origin "$TAG"
- if: needs.meta.outputs.publish == 'true'
uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8
with:
name: ${{ steps.release-tag-meta.outputs.name }}
name: ${{ env.VERSION }}
tag_name: ${{ env.TAG }}
files: artifacts/**/*
generate_release_notes: true
prerelease: ${{ needs.meta.outputs.prerelease }}
draft: ${{ needs.meta.outputs.draft }}
make_latest: ${{ needs.meta.outputs.latest }}
- if: >-
needs.meta.outputs.publish == 'true' &&
needs.meta.outputs.prerelease == 'false' &&
needs.meta.outputs.draft == 'false' &&
needs.meta.outputs.latest == 'true'
name: Trigger sync-proxy in linkerd2
run: gh workflow run sync-proxy.yml -f version="$TAG"
env:
GH_REPO: ${{ vars.LINKERD2_REPO || 'linkerd/linkerd2' }}
GH_TOKEN: ${{ secrets.LINKERD2_GITHUB_TOKEN }}
release-ok:
needs: publish
if: always()
timeout-minutes: 3
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- name: Results
run: |
echo 'needs.publish.result: ${{ needs.publish.result }}'
- name: Verify jobs
# All jobs must succeed or be skipped.
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: exit 1

View File

@ -1,78 +0,0 @@
name: Rust PR
on:
pull_request: {}
jobs:
## Required builds
# Ensures we don't take unintended dependencies.
audit:
timeout-minutes: 5
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- uses: EmbarkStudios/cargo-deny-action@0ca727bbae7b7b578b9a5f98186caac35aa2a00d
with:
command: check bans licenses sources
# Linting
clippy:
timeout-minutes: 5
runs-on: ubuntu-latest
container:
image: docker://rust:1.55.0-buster
permissions:
contents: read
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- run: rustup component add clippy
- run: make lint
# Iterate through all (non-fuzzer) sub-crates to ensure each compiles independently.
check:
timeout-minutes: 20
runs-on: ubuntu-latest
container:
image: docker://rust:1.55.0-buster
permissions:
contents: read
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- run: for d in $(for toml in $(find . -mindepth 2 -name Cargo.toml -not -path '*/fuzz/*') ; do echo ${toml%/*} ; done | sort -r ) ; do echo "# $d" ; (cd $d ; cargo check --all-targets) ; done
# Enforce automated formatting.
fmt:
timeout-minutes: 5
runs-on: ubuntu-latest
container:
image: docker://rust:1.55.0-buster
permissions:
contents: read
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- run: rustup component add rustfmt
- run: make check-fmt
# Run all tests.
test:
timeout-minutes: 15
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- run: make test
# Generate docs
docs:
timeout-minutes: 15
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- run: cargo doc

20
.github/workflows/shellcheck.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: markdown
permissions:
contents: read
on:
pull_request:
paths:
- .github/workflows/shellcheck.yml
- '**/*.sh'
- justfile
jobs:
sh-lint:
timeout-minutes: 5
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- uses: linkerd/dev/actions/setup-tools@v47
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- run: just sh-lint

66
.github/workflows/toolchain.yml vendored Normal file
View File

@ -0,0 +1,66 @@
name: rust-toolchain
on:
pull_request:
paths:
- rust-toolchain
- "**Dockerfile"
- ".github/workflows/*"
- ".github/**/Dockerfile"
permissions:
contents: read
jobs:
devcontainer:
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
container: ghcr.io/linkerd/dev:v47-rust
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- run: |
VERSION_REGEX='channel = "([0-9]+\.[0-9]+\.[0-9]+)"'
TOOLCHAIN=$(cat rust-toolchain.toml)
if [[ $TOOLCHAIN =~ $VERSION_REGEX ]]; then
VERSION=${BASH_REMATCH[1]}
if [ "$(cargo --version | cut -d' ' -f2)" != "$VERSION" ]; then
echo "::error file=rust-toolchain.toml::rust-toolchain channel '$VERSION' does not match devcontainer '$(cargo --version)'"
exit 1
fi
else
echo "::error file=rust-toolchain.toml::failed to parse rust-toolchain.toml"
exit 1
fi
shell: bash
workflows:
runs-on: ${{ vars.LINKERD2_PROXY_RUNNER || 'ubuntu-24.04' }}
steps:
- uses: linkerd/dev/actions/setup-tools@v47
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- shell: bash
run: |
VERSION_REGEX='channel = "([0-9]+\.[0-9]+\.[0-9]+)"'
TOOLCHAIN=$(cat rust-toolchain.toml)
if [[ $TOOLCHAIN =~ $VERSION_REGEX ]]; then
VERSION=${BASH_REMATCH[1]}
else
echo "::error file=rust-toolchain.toml::failed to parse rust-toolchain.toml"
exit 1
fi
ex=0
while IFS= read -r file ; do
while IFS= read -r image ; do
if [[ "$image" =~ ^docker://(docker.io/library/)?rust: ]]; then
tag="${image##*rust:}"
v="${tag%%-*}"
if [[ "$v" != "$VERSION" ]]; then
echo "::warning file=$file::$file uses incorrect rust version: '$v' (rust-toolchain.toml contains '$VERSION')"
ex=$((ex + 1))
fi
fi
done < <(yq '.jobs[] | select(.container) | .container.image // .container' "$file")
done < <(find .github/workflows -name '*.yml')
exit $ex

3
.gitignore vendored
View File

@ -1,5 +1,8 @@
.cargo
**/.cargo
target
**/target
**/corpus
**/artifacts
**/fuzz/Cargo.lock
.vscode/settings.json

View File

@ -1,14 +1,14 @@
# Contributing to linkerd2-proxy #
# Contributing
:balloon: Thanks for your help improving the project!
## Getting Help ##
## Getting Help
If you have a question about Linkerd2 or have encountered problems using it,
start by [asking a question in the forums][discourse] or join us in the
start by [asking a question in the forums][discussions] or join us in the
[#linkerd2 Slack channel][slack].
## Certificate of Origin ##
## Certificate of Origin
By contributing to this project you agree to the Developer Certificate of
Origin (DCO). This document was created by the Linux Kernel community and is a
@ -17,7 +17,7 @@ contribution. See the [DCO](DCO) file for details.
In practice, just add a line to every git commit message:
```
```text
Signed-off-by: Jane Smith <jane.smith@example.com>
```
@ -26,30 +26,32 @@ Use your real name (sorry, no pseudonyms or anonymous contributions).
If you set your `user.name` and `user.email` git configs, you can sign your
commit automatically with `git commit -s`.
## Submitting a Pull Request ##
## Submitting a Pull Request
Do you have an improvement?
1. Submit an [issue][issue] describing your proposed change.
2. We will try to respond to your issue promptly.
3. Fork this repo, develop and test your code changes. See the project's [README](README.md) for further information about working in this repository.
3. Fork this repo, develop and test your code changes. See the project's
[README](README.md) for further information about working in this repository.
4. Submit a pull request against this repo's `main` branch.
5. Your branch may be merged once all configured checks pass, including:
- The branch has passed tests in CI.
- A review from appropriate maintainers (see [MAINTAINERS.md](MAINTAINERS.md) and [GOVERNANCE.md](GOVERNANCE.md))
- A review from appropriate maintainers (see
[MAINTAINERS.md](MAINTAINERS.md) and [GOVERNANCE.md](GOVERNANCE.md))
## Committing ##
## Committing
We prefer squash or rebase commits so that all changes from a branch are
committed to `main` as a single commit. All pull requests are squashed when
merged, but rebasing prior to merge gives you better control over the commit
message.
### Commit messages ###
### Commit messages
Finalized commit messages should be in the following format:
```
```text
Subject
Problem
@ -61,7 +63,7 @@ Validation
Fixes #[GitHub issue ID]
```
#### Subject ####
#### Subject
- one line, <= 50 characters
- describe what is done; not the result
@ -70,36 +72,33 @@ Fixes #[GitHub issue ID]
- do not end in a period — this is a title/subject
- reference the GitHub issue by number
##### Examples #####
##### Examples
```
```text
bad: server disconnects should cause dst client disconnects.
good: Propagate disconnects from source to destination
```
```
```text
bad: support tls servers
good: Introduce support for server-side TLS (#347)
```
#### Problem ####
#### Problem
Explain the context and why you're making that change. What is the problem
you're trying to solve? In some cases there is not a problem and this can be
thought of as being the motivation for your change.
#### Solution ####
#### Solution
Describe the modifications you've made.
#### Validation ####
#### Validation
Describe the testing you've done to validate your change. Performance-related
changes should include before- and after- benchmark results.
[discourse]: https://discourse.linkerd.io/c/conduit
[governance]: GOVERNANCE.md
[discussions]: https://github.com/linkerd/linkerd2/discussions/new
[issue]: https://github.com/linkerd/linkerd2/issues/new
[maintainers]: MAINTAINERS.md
[members]: https://github.com/orgs/linkerd/people
[slack]: http://slack.linkerd.io/

3786
Cargo.lock

File diff suppressed because it is too large Load Diff

View File

@ -14,9 +14,8 @@ members = [
"linkerd/app/outbound",
"linkerd/app/test",
"linkerd/app",
"linkerd/cache",
"linkerd/conditional",
"linkerd/detect",
"linkerd/distribute",
"linkerd/dns/name",
"linkerd/dns",
"linkerd/duplex",
@ -24,52 +23,115 @@ members = [
"linkerd/errno",
"linkerd/error-respond",
"linkerd/exp-backoff",
"linkerd/http-box",
"linkerd/http-classify",
"linkerd/http-metrics",
"linkerd/http-retry",
"linkerd/http/access-log",
"linkerd/http/box",
"linkerd/http/classify",
"linkerd/http/detect",
"linkerd/http/h2",
"linkerd/http/insert",
"linkerd/http/metrics",
"linkerd/http/override-authority",
"linkerd/http/prom",
"linkerd/http/retain",
"linkerd/http/retry",
"linkerd/http/route",
"linkerd/http/stream-timeouts",
"linkerd/http/upgrade",
"linkerd/http/variant",
"linkerd/identity",
"linkerd/idle-cache",
"linkerd/io",
"linkerd/meshtls",
"linkerd/meshtls/verifier",
"linkerd/metrics",
"linkerd/mock/http-body",
"linkerd/opaq-route",
"linkerd/opencensus",
"linkerd/opentelemetry",
"linkerd/pool",
"linkerd/pool/mock",
"linkerd/pool/p2c",
"linkerd/proxy/api-resolve",
"linkerd/proxy/dns-resolve",
"linkerd/proxy/balance",
"linkerd/proxy/balance/gauge-endpoints",
"linkerd/proxy/balance/queue",
"linkerd/proxy/client-policy",
"linkerd/proxy/core",
"linkerd/proxy/discover",
"linkerd/proxy/dns-resolve",
"linkerd/proxy/http",
"linkerd/proxy/identity",
"linkerd/proxy/identity-client",
"linkerd/proxy/spire-client",
"linkerd/proxy/resolve",
"linkerd/proxy/server-policy",
"linkerd/proxy/tap",
"linkerd/proxy/tcp",
"linkerd/proxy/transport",
"linkerd/reconnect",
"linkerd/retry",
"linkerd/server-policy",
"linkerd/router",
"linkerd/rustls",
"linkerd/service-profiles",
"linkerd/signal",
"linkerd/stack",
"linkerd/stack/metrics",
"linkerd/stack/tracing",
"linkerd/system",
"linkerd/tonic-stream",
"linkerd/tonic-watch",
"linkerd/tls",
"linkerd/tls/route",
"linkerd/tls/test-util",
"linkerd/tracing",
"linkerd/transport-header",
"linkerd/transport-metrics",
"linkerd/workers",
"linkerd2-proxy",
"opencensus-proto",
"opentelemetry-proto",
"spiffe-proto",
"tools",
]
# Debug symbols end up chewing up several GB of disk space, so better to just
# disable them.
[profile.dev]
debug = false
[profile.test]
debug = false
[profile.release]
debug = 1
lto = true
[patch.crates-io]
webpki = { git = "https://github.com/linkerd/webpki", branch = "cert-dns-names-0.21" }
[workspace.package]
version = "0.1.0"
authors = ["Linkerd Developers <cncf-linkerd-dev@lists.cncf.io>"]
license = "Apache-2.0"
edition = "2021"
publish = false
[workspace.dependencies]
bytes = { version = "1" }
drain = { version = "0.2", default-features = false }
h2 = { version = "0.4" }
http = { version = "1" }
http-body = { version = "1" }
hyper = { version = "1", default-features = false }
prometheus-client = { version = "0.23" }
prost = { version = "0.13" }
prost-build = { version = "0.13", default-features = false }
prost-types = { version = "0.13" }
tokio-rustls = { version = "0.26", default-features = false, features = [
"logging",
] }
tonic = { version = "0.13", default-features = false }
tonic-build = { version = "0.13", default-features = false }
tower = { version = "0.5", default-features = false }
tower-service = { version = "0.3" }
tower-test = { version = "0.4" }
tracing = { version = "0.1" }
[workspace.dependencies.http-body-util]
version = "0.1.3"
default-features = false
features = ["channel"]
[workspace.dependencies.hyper-util]
version = "0.1"
default-features = false
features = ["tokio", "tracing"]
[workspace.dependencies.linkerd2-proxy-api]
version = "0.17.0"

View File

@ -1,68 +1,58 @@
# syntax=docker/dockerfile:experimental
# syntax=docker/dockerfile:1.4
# Proxy build and runtime
#
# This is intended **DEVELOPMENT ONLY**, i.e. so that proxy developers can
# easily test the proxy in the context of the larger `linkerd2` project.
#
# This Dockerfile requires expirmental features to be enabled in both the
# Docker client and daemon. You MUST use buildkit to build this image. The
# simplest way to do this is to set the `DOCKER_BUILDKIT` environment variable:
#
# :; DOCKER_BUILDKIT=1 docker build .
#
# Alternatively, you can use `buildx`, which supports more complicated build
# configurations:
#
# :; docker buildx build . --load
# Please make changes via update-rust-version.sh
ARG RUST_IMAGE=rust:1.55.0-buster
ARG RUST_IMAGE=ghcr.io/linkerd/dev:v47-rust
# Use an arbitrary ~recent edge release image to get the proxy
# identity-initializing and linkerd-await wrappers.
ARG RUNTIME_IMAGE=ghcr.io/linkerd/proxy:edge-21.4.5
ARG LINKERD2_IMAGE=ghcr.io/linkerd/proxy:edge-23.11.2
# Build the proxy, leveraging (new, experimental) cache mounting.
#
# See: https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#run---mounttypecache
FROM $RUST_IMAGE as build
FROM $LINKERD2_IMAGE as linkerd2
# When set, causes the proxy to be compiled in development mode.
ARG PROXY_UNOPTIMIZED
FROM --platform=$BUILDPLATFORM $RUST_IMAGE as fetch
# Controls what features are enabled in the proxy.
ARG PROXY_FEATURES
ARG PROXY_FEATURES=""
ARG TARGETARCH="amd64"
RUN apt-get update && \
apt-get install -y time && \
if [[ "$PROXY_FEATURES" =~ .*meshtls-boring.* ]] ; then \
apt-get install -y golang ; \
fi && \
case "$TARGETARCH" in \
amd64) true ;; \
arm64) apt-get install --no-install-recommends -y binutils-aarch64-linux-gnu ;; \
esac && \
rm -rf /var/lib/apt/lists/*
RUN --mount=type=cache,target=/var/lib/apt/lists \
--mount=type=cache,target=/var/tmp \
apt update && apt install -y time cmake
ENV CARGO_NET_RETRY=10
ENV RUSTUP_MAX_RETRIES=10
WORKDIR /usr/src/linkerd2-proxy
WORKDIR /src
COPY . .
RUN --mount=type=cache,target=target \
--mount=type=cache,from=rust:1.55.0-buster,source=/usr/local/cargo,target=/usr/local/cargo \
mkdir -p /out && \
if [ -n "$PROXY_UNOPTIMIZED" ]; then \
(cd linkerd2-proxy && /usr/bin/time -v cargo build --locked --features="$PROXY_FEATURES") && \
mv target/debug/linkerd2-proxy /out/linkerd2-proxy ; \
else \
(cd linkerd2-proxy && /usr/bin/time -v cargo build --locked --release --features="$PROXY_FEATURES") && \
mv target/release/linkerd2-proxy /out/linkerd2-proxy ; \
fi
RUN --mount=type=cache,id=cargo,target=/usr/local/cargo/registry \
just fetch
## Install the proxy binary into the base runtime image.
FROM $RUNTIME_IMAGE as runtime
# When set, causes the proxy to remove the identity wrapper responsible for
# CSR and key generation.
ARG SKIP_IDENTITY_WRAPPER
# Build the proxy.
FROM fetch as build
ENV CARGO_INCREMENTAL=0
ENV RUSTFLAGS="-D warnings -A deprecated --cfg tokio_unstable"
ARG PROFILE="release"
ARG LINKERD2_PROXY_VERSION=""
ARG LINKERD2_PROXY_VENDOR=""
SHELL ["/bin/bash", "-c"]
RUN --mount=type=cache,id=cargo,target=/usr/local/cargo/registry \
if [[ "$PROXY_FEATURES" =~ .*pprof.* ]] ; then cmd=build-debug ; else cmd=build ; fi ; \
/usr/bin/time -v just arch="$TARGETARCH" features="$PROXY_FEATURES" profile="$PROFILE" "$cmd" && \
( mkdir -p /out ; \
mv $(just --evaluate profile="$PROFILE" _target_bin) /out/ ; \
du -sh /out/* )
# Install the proxy binary into a base image that we can at least get a shell
# for debugging.
FROM docker.io/library/debian:bookworm-slim as runtime
WORKDIR /linkerd
COPY --from=build /out/linkerd2-proxy /usr/lib/linkerd/linkerd2-proxy
ENV LINKERD2_PROXY_LOG=warn,linkerd=info
RUN if [ -n "$SKIP_IDENTITY_WRAPPER" ] ; then \
rm -f /usr/bin/linkerd2-proxy-run && \
ln /usr/lib/linkerd/linkerd2-proxy /usr/bin/linkerd2-proxy-run ; \
fi
# Inherits the ENTRYPOINT from the runtime image.
COPY --from=linkerd2 /usr/lib/linkerd/* /usr/lib/linkerd/
COPY --from=build /out/* /usr/lib/linkerd/
ENTRYPOINT ["/usr/lib/linkerd/linkerd2-proxy-identity"]

View File

@ -1 +1,3 @@
See https://github.com/linkerd/linkerd2/blob/main/GOVERNANCE.md
# Governance
See <https://github.com/linkerd/linkerd2/blob/main/GOVERNANCE.md>.

View File

@ -1 +1,3 @@
See https://github.com/linkerd/linkerd2/blob/main/MAINTAINERS.md
# Maintainers
See <https://github.com/linkerd/linkerd2/blob/main/MAINTAINERS.md>.

128
Makefile
View File

@ -1,128 +0,0 @@
CARGO_TARGET ?= $(shell rustup show |sed -n 's/^Default host: \(.*\)/\1/p')
TARGET = target/$(CARGO_TARGET)/debug
ifdef CARGO_RELEASE
RELEASE = --release
TARGET = target/$(CARGO_TARGET)/release
endif
ifndef PACKAGE_VERSION
PACKAGE_VERSION = $(shell git rev-parse --short HEAD)
endif
ARCH ?= amd64
STRIP ?= strip
PROFILING = profiling
TARGET_BIN = $(TARGET)/linkerd2-proxy
PKG_ROOT = $(TARGET)/package
PKG_NAME = linkerd2-proxy-$(PACKAGE_VERSION)-$(ARCH)
PKG_BASE = $(PKG_ROOT)/$(PKG_NAME)
PKG_CHECKSEC = $(PKG_BASE)-checksec.json
PKG = $(PKG_NAME).tar.gz
SHASUM = shasum -a 256
CARGO ?= cargo
CARGO_BUILD = $(CARGO) build --frozen $(RELEASE) --target $(CARGO_TARGET)
CARGO_TEST = $(CARGO) test --frozen $(RELEASE) --target $(CARGO_TARGET)
CARGO_FMT = $(CARGO) fmt --all
CARGO_CLIPPY = $(CARGO) clippy
DOCKER = docker
DOCKER_BUILD = docker build
ifdef DOCKER_TAG
DOCKER_BUILD = docker build -t $(DOCKER_TAG)
endif
ifdef DOCKER_UNOPTIMIZED
DOCKER_BUILD += --build-arg="PROXY_UNOPTIMIZED=$(DOCKER_UNOPTIMIZED)"
endif
RUSTCFLAGS ?=
ifdef CARGO_DEBUG
RUSTCFLAGS += -C debuginfo=2
endif
SHELLCHECK ?= shellcheck
SHELLCHECK_CMD = $(SHELLCHECK) -x -P "$(CURDIR)/profiling"
$(TARGET_BIN): fetch
$(CARGO_BUILD) -p linkerd2-proxy
$(PKG_ROOT)/$(PKG) $(PKG_CHECKSEC): $(TARGET_BIN)
mkdir -p $(PKG_BASE)/bin
cp LICENSE $(PKG_BASE)
cp $(TARGET_BIN) $(PKG_BASE)/bin/linkerd2-proxy
$(STRIP) $(PKG_BASE)/bin/linkerd2-proxy
ifdef CARGO_DEBUG
if which objcopy >/dev/null ; then \
objcopy $(TARGET_BIN) $(PKG_BASE)/linkerd2-proxy.obj ; \
chmod 644 $(PKG_BASE)/linkerd2-proxy.obj ; \
fi
endif
./checksec.sh $(PKG_BASE)/bin/linkerd2-proxy >$(PKG_CHECKSEC) || true
cd $(PKG_ROOT) && \
tar -czvf $(PKG) $(PKG_NAME) && \
($(SHASUM) $(PKG) >$(PKG_NAME).txt)
rm -rf $(PKG_BASE)
.PHONY: fetch
fetch: Cargo.lock
$(CARGO) fetch --locked
.PHONY: check
check: fetch
$(CARGO) check
.PHONY: build
build: $(TARGET_BIN)
.PHONY: clean
clean:
$(CARGO) clean --target-dir $(TARGET)
.PHONY: check-fmt
check-fmt:
$(CARGO_FMT) -- --check
.PHONY: fmt
fmt:
$(CARGO_FMT)
.PHONY: lint
lint:
$(CARGO_CLIPPY) --all-targets
.PHONY: shellcheck
shellcheck:
$(SHELLCHECK_CMD) $$(find "$(CURDIR)" -type f \
! -path "$(CURDIR)"/.git/hooks/\*.sample \
| while read -r f; do [ "$$(file -b --mime-type "$$f")" = 'text/x-shellscript' ] && printf '%s\0' "$$f"; done | xargs -0)
.PHONY: test
test: fetch
$(CARGO_TEST)
.PHONY: test-flakey
test-flakey: fetch
$(CARGO_TEST) --features linkerd-app-integration/flaky_tests
.PHONY: package
package: $(PKG_ROOT)/$(PKG)
.PHONY: clean-package
clean-package:
rm -rf $(PKG_ROOT)
.PHONY: clean-profile
clean-profile:
rm -rf target/release/profile*
rm -rf target/profile/*
.PHONY: docker
docker: Dockerfile Cargo.lock
DOCKER_BUILDKIT=1 $(DOCKER_BUILD) .
.PHONY: all
all: build test

View File

@ -1,7 +1,8 @@
# The Linkerd Proxy
![linkerd2][logo]
<!-- TODO [![Build Status][ci-badge]][ci] -->
[![GitHub license][license-badge]](LICENSE)
[![GitHub license](https://img.shields.io/github/license/linkerd/linkerd2-proxy.svg)](LICENSE)
[![Slack Status][slack-badge]][slack]
This repo contains the transparent proxy component of [Linkerd2][linkerd2].
@ -16,7 +17,7 @@ This proxy's features include:
* Transparent, zero-config WebSocket proxying;
* Automatic, latency-aware, layer-7 [load balancing][loadbalancing];
* Automatic layer-4 load balancing for non-HTTP traffic;
* Automatic TLS (experimental);
* Automatic Mutual TLS;
* An on-demand diagnostic `tap` API.
This proxy is primarily intended to run on Linux in containerized
@ -29,28 +30,33 @@ The proxy supports service discovery via DNS and the [linkerd2
The Linkerd project is hosted by the Cloud Native Computing Foundation
([CNCF][cncf]).
## Building the project
A `Makefile` is provided to automate most build tasks. It provides the
following targets:
We use [`just-cargo`][just-cargo] which provide a thin wrapper around `just` and
`cargo`.
* `make build` -- Compiles the proxy on your local system using `cargo`
* `make clean` -- Cleans the build target on the local system using `cargo clean`
* `make test` -- Runs unit and integration tests on your local system using `cargo`
* `make test-flakey` -- Runs _all_ tests, including those that may fail spuriously
* `make package` -- Builds a tarball at
`target/release/linkerd2-proxy-${PACKAGE_VERSION}.tar.gz`. If
`PACKAGE_VERSION` is not set in the environment, the local git SHA is used.
* `make docker` -- Builds a Docker container image that can be used for testing.
If the `DOCKER_TAG` environment variable is set, the image is given this
name. Otherwise, the image is not named.
We recommend that you use the included [`Dev Container`][devc] to avoid setting
up the complex development environment by hand.
### Just
A [`justfile`](./justfile) is provided to automate most build tasks. It provides
the following recipes:
* `just build` -- Compiles the proxy on your local system using `cargo`
* `just test` -- Runs unit and integration tests on your local system using `cargo`
* `just docker` -- Builds a Docker container image that can be used for testing.
### Cargo
Usually, [Cargo][cargo], Rust's package manager, is used to build and test this
project. If you don't have Cargo installed, we suggest getting it via
https://rustup.rs/.
<https://rustup.rs/>.
### Devcontainer
A Devcontainer is provided for use with Visual Studio Code. It includes all of
the tooling needed to build and test the proxy.
### Repository Structure
@ -60,7 +66,9 @@ targets are especially important:
* [`linkerd2-proxy`] contains the proxy executable;
* [`linkerd2-app-integration`] contains the proxy's integration tests;
* [`linkerd2-app`] bundles the [`linkerd2-app-inbound`] and [`linkerd2-app-outbound`] crates so that they may be run by the executable or integration tests.
* [`linkerd2-app`] bundles the [`linkerd2-app-inbound`] and
[`linkerd2-app-outbound`] crates so that they may be run by the executable or
integration tests.
[`linkerd2-proxy`]: linkerd2-proxy
[`linkerd2-app`]: linkerd/app
@ -73,13 +81,14 @@ targets are especially important:
This project is for everyone. We ask that our users and contributors take a few
minutes to review our [code of conduct][coc].
## Security
We test our code by way of fuzzing and this is described in [FUZZING.md](/docs/FUZZING.md).
A third party security audit focused on fuzzing Linkerd2-proxy was performed by Ada Logics in 2021. The full report is available [here](docs/linkerd2-proxy-fuzzing-report.pdf).
A third party security audit focused on fuzzing Linkerd2-proxy was performed by
Ada Logics in 2021. The
[full report](/docs/reports/linkerd2-proxy-fuzzing-report.pdf) can be found in
the `docs/reports/` directory.
## License
@ -96,22 +105,19 @@ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
<!-- refs -->
[cargo]: https://github.com/rust-lang/cargo/
[ci]: https://travis-ci.org/linkerd/linkerd2-proxy
<!-- TODO [ci-badge]: https://travis-ci.org/linkerd/linkerd2-proxy.svg?branch=master -->
[cncf]: https://cncf.io/
[coc]: https://github.com/linkerd/linkerd/wiki/Linkerd-code-of-conduct
[devc]: https://containers.dev/
[just-cargo]: https://github.com/linkerd/dev/tree/main/bin/just-cargo
[k8s]: https://kubernetes.io/
[license-badge]: https://img.shields.io/github/license/linkerd/linkerd2.svg
[linkerd1]: https://github.com/linkerd/linkerd
[linkerd2]: https://github.com/linkerd/linkerd2
[linkerd2-proxy-api]: https://github.com/linkerd/linkerd2-proxy-api
[loadbalancing]: https://linkerd.io/features/load-balancing/
[logo]: https://user-images.githubusercontent.com/9226/33582867-3e646e02-d90c-11e7-85a2-2e238737e859.png
[prom]: https://prometheus.io/
[rust]: https://www.rust-lang.org/
[slack-badge]: https://slack.linkerd.io/badge.svg
[slack]: https://slack.linkerd.io
[twitter]: https://twitter.com/linkerd/
[linkerd1]: <https://github.com/linkerd/linkerd>
[linkerd2]: <https://github.com/linkerd/linkerd2>
[linkerd2-proxy-api]: <https://github.com/linkerd/linkerd2-proxy-api>
[loadbalancing]: <https://linkerd.io/2.11/features/load-balancing/>
[logo]: <https://user-images.githubusercontent.com/9226/33582867-3e646e02-d90c-11e7-85a2-2e238737e859.png>
[prom]: <https://prometheus.io/>
[rust]: <https://www.rust-lang.org/>
[slack-badge]: <https://slack.linkerd.io/badge.svg>
[slack]: <https://slack.linkerd.io>

View File

@ -1,28 +0,0 @@
#!/bin/bash
set -eu
require_from() {
if ! command -v "$1" >/dev/null 2>/dev/null ; then
echo "Please acquire $1 from $2" >&2
exit 1
fi
}
require_from readelf binutils
require_from checksec https://github.com/slimm609/checksec.sh
require_from jq https://stedolan.github.io/jq/
if [ $# -ne 1 ]; then
echo "usage: $0 EXECUTABLE" >&2
exit 64
fi
path="$1"
if [ ! -x "$path" ]; then
echo "Executable not found: $path" >&2
exit 1
fi
out=$(checksec --output=json --file="$path")
echo "$out" | jq ".[\"$path\"] | del(.\"fortify-able\") | del(.fortified)"

View File

@ -1,42 +1,36 @@
[graph]
targets = [
{ triple = "x86_64-unknown-linux-gnu" },
{ triple = "aarch64-unknown-linux-gnu" },
{ triple = "armv7-unknown-linux-gnu" },
]
[advisories]
db-path = "~/.cargo/advisory-db"
db-urls = ["https://github.com/rustsec/advisory-db"]
vulnerability = "deny"
unmaintained = "warn"
yanked = "deny"
notice = "warn"
ignore = []
[licenses]
unlicensed = "deny"
allow = [
"Apache-2.0",
"BSD-2-Clause",
"BSD-3-Clause",
"ISC",
"MIT",
"Unicode-3.0",
"Zlib",
]
deny = []
copyleft = "deny"
allow-osi-fsf-free = "neither"
default = "deny"
# Ignore local workspace license values for unpublished crates.
private = { ignore = true }
confidence-threshold = 0.8
exceptions = [
{ allow = ["Zlib"], name = "adler32", version = "*" },
{ allow = ["ISC", "MIT", "OpenSSL"], name = "ring", version = "*" },
]
[[licenses.clarify]]
name = "ring"
version = "*"
expression = "MIT AND ISC AND OpenSSL"
license-files = [
{ path = "LICENSE", hash = 0xbd0eed23 }
{ allow = [
"ISC",
"OpenSSL",
], name = "aws-lc-sys", version = "*" },
{ allow = [
"ISC",
"OpenSSL",
], name = "aws-lc-fips-sys", version = "*" },
]
[bans]
@ -45,17 +39,38 @@ multiple-versions = "deny"
wildcards = "allow"
highlight = "all"
deny = [
{ name = "rustls", wrappers = ["tokio-rustls"] }
{ name = "rustls", wrappers = ["tokio-rustls"] },
# rustls-webpki should be used instead.
{ name = "webpki" },
# aws-lc-rs should be used instead.
{ name = "ring" }
]
skip = [
# `linkerd-trace-context`, `rustls-pemfile` and `tonic` depend on `base64`
# v0.13.1 while `rcgen` depends on v0.21.5
{ name = "base64" },
# tonic/axum depend on a newer `tower`, which we are still catching up to.
# see #3744.
{ name = "tower", version = "0.5" },
]
skip-tree = [
# thiserror v2 is still propagating through the ecosystem
{ name = "thiserror", version = "1" },
# rand v0.9 is still propagating through the ecosystem
{ name = "rand", version = "0.8" },
# rust v1.0 is still propagating through the ecosystem
{ name = "rustix", version = "0.38" },
# `pprof` uses a number of old dependencies. for now, we skip its subtree.
{ name = "pprof" },
# aws-lc-rs uses a slightly outdated version of bindgen
{ name = "bindgen", version = "0.69.5" },
# socket v0.6 is still propagating through the ecosystem
{ name = "socket2", version = "0.5" },
]
skip = []
skip-tree = []
[sources]
unknown-registry = "deny"
unknown-git = "deny"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
[sources.allow-org]
github = [
"linkerd",
allow-registry = [
"https://github.com/rust-lang/crates.io-index",
]

View File

@ -1,21 +1,35 @@
# Linkerd2-proxy fuzz testing
# Linkerd Proxy Fuzz Testing
The proxy is tested via fuzzing by way of [OSS-Fuzz](https://github.com/google/oss-fuzz) and we rely on [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) as our underlying fuzzing engine.
The proxy is tested via fuzzing by way of
[OSS-Fuzz](https://github.com/google/oss-fuzz) and we rely on
[cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) as our underlying fuzzing
engine.
## Fuzz tests
### Folder structure
We place the fuzz tests into folders within the individual crates that the fuzz tests target. For example, we have a fuzz test that that target the crate `/linkerd/addr` and the code in `/linkerd/addr/src` and thus the fuzz test that targets this crate is put in `/linkerd/addr/fuzz`. The folder set up we use for each of the fuzz tests is automatically generated by `cargo fuzz init` (described [here](https://github.com/rust-fuzz/cargo-fuzz#cargo-fuzz-init)).
We place the fuzz tests into folders within the individual crates that the fuzz
tests target. For example, we have a fuzz test that that target the crate
`/linkerd/addr` and the code in `/linkerd/addr/src` and thus the fuzz test that
targets this crate is put in `/linkerd/addr/fuzz`.
The folder structure for each of the fuzz tests is automatically generated by
`cargo fuzz init`. See cargo fuzz's
[`README.md`](https://github.com/rust-fuzz/cargo-fuzz#cargo-fuzz-init) for more
information.
### Fuzz targets
The general idea behind the fuzz tests is to follow the testing set up of the rest of the proxy. As such, we both have fuzz tests that resemble small unit-test-like code pieces, as well as fuzz tests that resemble larger integration-test-like code pieces.
The general idea behind the fuzz tests is to follow the testing set up of the
rest of the proxy. As such, we both have fuzz tests that resemble small
unit-test-like code pieces, as well as fuzz tests that resemble larger
integration-test-like code pieces.
#### Unit-test-like fuzzers
The code in `/linkerd/addr/fuzz/fuzz_targets/fuzz_target_1.rs` is an example of a unit-test-like fuzzer:
The code in `/linkerd/addr/fuzz/fuzz_targets/fuzz_target_1.rs` is an example of
a unit-test-like fuzzer:
```rust
#![no_main]
@ -32,7 +46,11 @@ fuzz_target!(|data: &[u8]| {
}
});
```
`fuzz_target` is the entrypoint of the fuzzer and is what the underlying fuzzing engine cargo-fuzz will call with pseudo-random data in the `data` argument. The fuzzer further calls into code in the `linkerd2_addr` module, which is defined as follows:
`fuzz_target` is the entrypoint of the fuzzer and is what the underlying fuzzing
engine cargo-fuzz will call with pseudo-random data in the `data` argument. The
fuzzer further calls into code in the `linkerd2_addr` module, which is defined
as follows:
```rust
#[cfg(fuzzing)]
@ -55,13 +73,15 @@ pub mod fuzz_logic {
}
```
We use this indirection of having fuzzing-related code in the modules themselves to align with the scoping of the proxy code.
We use this indirection of having fuzzing-related code in the modules themselves
to align with the scoping of the proxy code.
We wrap our fuzzing code in `[#cfg(fuzzing)]` to avoid shipping the fuzzing code when build the release binaries.
We wrap our fuzzing code in `[#cfg(fuzzing)]` to avoid shipping the fuzzing code
when build the release binaries.
We compile and run the above fuzzer with the following commands:
```
```shell
# Build the fuzzer
cd linkerd/addr
cargo +nightly fuzz build
@ -74,6 +94,10 @@ This is also the sequence of commands to use for running the fuzzers locally.
#### Integration-test-like fuzzers
The larger fuzzers we keep follow a similar structural set up as to the unit-test-like fuzzers, but are essentially just more substantial in nature. The idea behind these fuzzers is to test end-to-end concepts more so than individual components of the proxy.
The larger fuzzers we keep follow a similar structural set up as to the
unit-test-like fuzzers, but are essentially just more substantial in nature. The
idea behind these fuzzers is to test end-to-end concepts more so than individual
components of the proxy.
The inbound fuzzer [here](/linkerd/app/inbound/fuzz/fuzz_targets/fuzz_target_1.rs) is an example of this.
The [inbound fuzzer](/linkerd/app/inbound/fuzz/fuzz_targets/fuzz_target_1.rs)
is an example of this.

View File

@ -1,17 +1,18 @@
[package]
name = "hyper-balance"
version = "0.1.0"
authors = ["Linkerd Developers <cncf-linkerd-dev@lists.cncf.io>"]
license = "Apache-2.0"
edition = "2018"
publish = false
version = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
publish = { workspace = true }
[dependencies]
futures = { version = "0.3", default-features = false }
http = "0.2"
hyper = "0.14"
http = { workspace = true }
http-body = { workspace = true }
hyper = { workspace = true }
pin-project = "1"
tower = { version = "0.4.8", default-features = false, features = ["load"] }
tower = { workspace = true, default-features = false, features = ["load"] }
tokio = { version = "1", features = ["macros"] }
[dev-dependencies]

View File

@ -1,7 +1,7 @@
#![deny(warnings, rust_2018_idioms)]
#![deny(rust_2018_idioms, clippy::disallowed_methods, clippy::disallowed_types)]
#![forbid(unsafe_code)]
use hyper::body::HttpBody;
use http_body::Body;
use pin_project::pin_project;
use std::pin::Pin;
use std::task::{Context, Poll};
@ -34,11 +34,11 @@ pub struct PendingUntilEosBody<T, B> {
body: B,
}
// ==== PendingUntilFirstData ====
// === PendingUntilFirstData ===
impl<T, B> TrackCompletion<T, http::Response<B>> for PendingUntilFirstData
where
B: HttpBody,
B: Body,
{
type Output = http::Response<PendingUntilFirstDataBody<T, B>>;
@ -55,11 +55,11 @@ where
}
}
// ==== PendingUntilEos ====
// === PendingUntilEos ===
impl<T, B> TrackCompletion<T, http::Response<B>> for PendingUntilEos
where
B: HttpBody,
B: Body,
{
type Output = http::Response<PendingUntilEosBody<T, B>>;
@ -76,11 +76,11 @@ where
}
}
// ==== PendingUntilFirstDataBody ====
// === PendingUntilFirstDataBody ===
impl<T, B> Default for PendingUntilFirstDataBody<T, B>
where
B: HttpBody + Default,
B: Body + Default,
{
fn default() -> Self {
Self {
@ -90,9 +90,9 @@ where
}
}
impl<T, B> HttpBody for PendingUntilFirstDataBody<T, B>
impl<T, B> Body for PendingUntilFirstDataBody<T, B>
where
B: HttpBody,
B: Body,
T: Send + 'static,
{
type Data = B::Data;
@ -102,38 +102,31 @@ where
self.body.is_end_stream()
}
fn poll_data(
fn poll_frame(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Option<Result<Self::Data, Self::Error>>> {
) -> Poll<Option<Result<http_body::Frame<Self::Data>, Self::Error>>> {
let this = self.project();
let ret = futures::ready!(this.body.poll_data(cx));
let ret = futures::ready!(this.body.poll_frame(cx));
// Once a data frame is received, the handle is dropped. On subsequent calls, this
// Once a frame is received, the handle is dropped. On subsequent calls, this
// is a noop.
drop(this.handle.take());
Poll::Ready(ret)
}
fn poll_trailers(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<Option<http::HeaderMap>, Self::Error>> {
let this = self.project();
// If this is being called, the handle definitely should have been dropped
// already.
drop(this.handle.take());
this.body.poll_trailers(cx)
#[inline]
fn size_hint(&self) -> hyper::body::SizeHint {
self.body.size_hint()
}
}
// ==== PendingUntilEosBody ====
// === PendingUntilEosBody ===
impl<T, B> Default for PendingUntilEosBody<T, B>
where
B: HttpBody + Default,
B: Body + Default,
{
fn default() -> Self {
Self {
@ -143,43 +136,35 @@ where
}
}
impl<T: Send + 'static, B: HttpBody> HttpBody for PendingUntilEosBody<T, B> {
impl<T: Send + 'static, B: Body> Body for PendingUntilEosBody<T, B> {
type Data = B::Data;
type Error = B::Error;
#[inline]
fn is_end_stream(&self) -> bool {
self.body.is_end_stream()
}
fn poll_data(
fn poll_frame(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Option<Result<Self::Data, Self::Error>>> {
) -> Poll<Option<Result<http_body::Frame<Self::Data>, Self::Error>>> {
let mut this = self.project();
let body = &mut this.body;
tokio::pin!(body);
let ret = futures::ready!(body.poll_data(cx));
let frame = futures::ready!(body.poll_frame(cx));
// If this was the last frame, then drop the handle immediately.
if this.body.is_end_stream() {
drop(this.handle.take());
}
Poll::Ready(ret)
Poll::Ready(frame)
}
fn poll_trailers(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<Option<http::HeaderMap>, Self::Error>> {
let this = self.project();
let ret = futures::ready!(this.body.poll_trailers(cx));
// Once trailers are received, the handle is dropped immediately (in case the body
// is retained longer for some reason).
drop(this.handle.take());
Poll::Ready(ret)
#[inline]
fn size_hint(&self) -> hyper::body::SizeHint {
self.body.size_hint()
}
}
@ -187,7 +172,7 @@ impl<T: Send + 'static, B: HttpBody> HttpBody for PendingUntilEosBody<T, B> {
mod tests {
use super::{PendingUntilEos, PendingUntilFirstData};
use futures::future::poll_fn;
use hyper::body::HttpBody;
use http_body::{Body, Frame};
use std::collections::VecDeque;
use std::io::Cursor;
use std::pin::Pin;
@ -214,11 +199,13 @@ mod tests {
assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_data(cx)
body.poll_frame(cx)
}))
.poll())
.expect("data some")
.expect("data ok");
.expect("frame is some")
.expect("frame is ok")
.into_data()
.expect("frame is data");
assert!(wk.upgrade().is_none());
}
@ -271,10 +258,10 @@ mod tests {
let res = assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_data(cx)
body.poll_frame(cx)
}))
.poll());
assert!(res.expect("data is some").is_err());
assert!(res.expect("frame is some").is_err());
assert!(wk.upgrade().is_none());
}
@ -297,21 +284,21 @@ mod tests {
assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_data(cx)
body.poll_frame(cx)
}))
.poll())
.expect("data some")
.expect("data ok");
.expect("frame is some")
.expect("frame is ok");
assert!(wk.upgrade().is_some());
assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_data(cx)
body.poll_frame(cx)
}))
.poll())
.expect("data some")
.expect("data ok");
.expect("frame is some")
.expect("frame is ok");
assert!(wk.upgrade().is_none());
}
@ -344,40 +331,42 @@ mod tests {
assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_data(cx)
body.poll_frame(cx)
}))
.poll())
.expect("data")
.expect("data ok");
.expect("frame is some")
.expect("frame is ok");
assert!(wk.upgrade().is_some());
assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_data(cx)
body.poll_frame(cx)
}))
.poll())
.expect("data")
.expect("data ok");
.expect("frame is some")
.expect("frame is ok");
assert!(wk.upgrade().is_some());
assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_frame(cx)
}))
.poll())
.expect("frame is some")
.expect("frame is ok")
.into_trailers()
.expect("is trailers");
assert!(wk.upgrade().is_none());
let poll = assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_data(cx)
body.poll_frame(cx)
}))
.poll());
assert!(poll.is_none());
assert!(wk.upgrade().is_some());
assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_trailers(cx)
}))
.poll())
.expect("trailers ok")
.expect("trailers");
assert!(wk.upgrade().is_none());
}
@ -400,14 +389,14 @@ mod tests {
let poll = assert_ready!(task::spawn(poll_fn(|cx| {
let body = &mut body;
tokio::pin!(body);
body.poll_data(cx)
body.poll_frame(cx)
}))
.poll());
assert!(poll.expect("some").is_err());
assert!(wk.upgrade().is_none());
}
struct Handle(Arc<()>);
struct Handle(#[allow(dead_code)] Arc<()>);
impl Handle {
fn new() -> (Self, Weak<()>) {
let strong = Arc::new(());
@ -418,7 +407,7 @@ mod tests {
#[derive(Default)]
struct TestBody(VecDeque<&'static str>, Option<http::HeaderMap>);
impl HttpBody for TestBody {
impl Body for TestBody {
type Data = Cursor<&'static str>;
type Error = &'static str;
@ -426,26 +415,27 @@ mod tests {
self.0.is_empty() & self.1.is_none()
}
fn poll_data(
fn poll_frame(
mut self: Pin<&mut Self>,
_: &mut Context<'_>,
) -> Poll<Option<Result<Self::Data, Self::Error>>> {
Poll::Ready(self.as_mut().0.pop_front().map(Cursor::new).map(Ok))
}
fn poll_trailers(
mut self: Pin<&mut Self>,
_: &mut Context<'_>,
) -> Poll<Result<Option<http::HeaderMap>, Self::Error>> {
) -> Poll<Option<Result<http_body::Frame<Self::Data>, Self::Error>>> {
let mut this = self.as_mut();
assert!(this.0.is_empty());
Poll::Ready(Ok(this.1.take()))
// Return the next data frame from the sequence of chunks.
if let Some(chunk) = this.0.pop_front() {
let frame = Some(Ok(Frame::data(Cursor::new(chunk))));
return Poll::Ready(frame);
}
// Yield the trailers once all data frames have been yielded.
let trailers = this.1.take().map(Frame::<Self::Data>::trailers).map(Ok);
Poll::Ready(trailers)
}
}
#[derive(Default)]
struct ErrBody(Option<&'static str>);
impl HttpBody for ErrBody {
impl Body for ErrBody {
type Data = Cursor<&'static str>;
type Error = &'static str;
@ -453,18 +443,13 @@ mod tests {
self.0.is_none()
}
fn poll_data(
fn poll_frame(
mut self: Pin<&mut Self>,
_: &mut Context<'_>,
) -> Poll<Option<Result<Self::Data, Self::Error>>> {
Poll::Ready(Some(Err(self.as_mut().0.take().expect("err"))))
}
) -> Poll<Option<Result<http_body::Frame<Self::Data>, Self::Error>>> {
let err = self.as_mut().0.take().expect("err");
fn poll_trailers(
mut self: Pin<&mut Self>,
_: &mut Context<'_>,
) -> Poll<Result<Option<http::HeaderMap>, Self::Error>> {
Poll::Ready(Err(self.as_mut().0.take().expect("err")))
Poll::Ready(Some(Err(err)))
}
}
}

341
justfile Normal file
View File

@ -0,0 +1,341 @@
# See https://just.systems/man/en
#
# Configuration
#
export RUST_BACKTRACE := env_var_or_default("RUST_BACKTRACE", "short")
# Use the dev environment's version of protoc.
export PROTOC_NO_VENDOR := "1"
# By default we compile in development mode mode because it's faster.
profile := if env_var_or_default("RELEASE", "") == "" { "debug" } else { "release" }
toolchain := ""
features := ""
export LINKERD2_PROXY_VERSION := env_var_or_default("LINKERD2_PROXY_VERSION", "0.0.0-dev" + `git rev-parse --short HEAD`)
export LINKERD2_PROXY_VENDOR := env_var_or_default("LINKERD2_PROXY_VENDOR", `whoami` + "@" + `hostname`)
# TODO: these variables will be included in dev v48
export AWS_LC_SYS_CFLAGS_aarch64_unknown_linux_gnu := env_var_or_default("AWS_LC_SYS_CFLAGS_aarch64_unknown_linux_gnu", "-fuse-ld=/usr/aarch64-linux-gnu/bin/ld")
export AWS_LC_SYS_CFLAGS_aarch64_unknown_linux_musl := env_var_or_default("AWS_LC_SYS_CFLAGS_aarch64_unknown_linux_musl", "-fuse-ld=/usr/aarch64-linux-gnu/bin/ld")
# The version name to use for packages.
package_version := "v" + LINKERD2_PROXY_VERSION
# Docker image name & tag.
docker-repo := "localhost/linkerd/proxy"
docker-tag := `git rev-parse --abbrev-ref HEAD | sed 's|/|.|g'` + "." + `git rev-parse --short HEAD`
docker-image := docker-repo + ":" + docker-tag
# The architecture name to use for packages. Either 'amd64' or 'arm64'.
arch := "amd64"
# The OS name to use for packages. Either 'linux' or 'windows'.
os := "linux"
libc := 'gnu'
# If a `arch` is specified, then we change the default cargo `--target`
# to support cross-compilation. Otherwise, we use `rustup` to find the default.
_target := if os + '-' + arch == "linux-amd64" {
"x86_64-unknown-linux-" + libc
} else if os + '-' + arch == "linux-arm64" {
"aarch64-unknown-linux-" + libc
} else if os + '-' + arch == "windows-amd64" {
"x86_64-pc-windows-" + libc
} else {
error("unsupported: os=" + os + " arch=" + arch + " libc=" + libc)
}
_cargo := 'just-cargo profile=' + profile + ' target=' + _target + ' toolchain=' + toolchain
_target_dir := "target" / _target / profile
_target_bin := _target_dir / "linkerd2-proxy" + if os == 'windows' { '.exe' } else { '' }
_package_name := "linkerd2-proxy-" + package_version + "-" + os + "-" + arch + if libc == 'musl' { '-static' } else { '' }
_package_dir := "target/package" / _package_name
shasum := "shasum -a 256"
_features := if features == "all" {
"--all-features"
} else if features != "" {
"--no-default-features --features=" + features
} else { "" }
wait-timeout := env_var_or_default("WAIT_TIMEOUT", "1m")
export CXX := 'clang++-19'
#
# Recipes
#
rustup:
@{{ _cargo }} _target-installed
# Run all lints
lint: sh-lint md-lint clippy doc action-lint action-dev-check
# Fetch dependencies
fetch:
@{{ _cargo }} fetch --locked
fmt:
@{{ _cargo }} fmt
# Fails if the code does not match the expected format (via rustfmt).
check-fmt:
@{{ _cargo }} fmt -- --check
check *flags:
@{{ _cargo }} check --workspace --all-targets --frozen {{ flags }}
check-crate crate *flags:
@{{ _cargo }} check --package={{ crate }} --all-targets --frozen {{ _features }} {{ flags }}
clippy *flags:
@{{ _cargo }} clippy --workspace --all-targets --frozen {{ _features }} {{ flags }}
clippy-crate crate *flags:
@{{ _cargo }} clippy --package={{ crate }} --all-targets --frozen {{ _features }} {{ flags }}
clippy-dir dir *flags:
cd {{ dir }} && {{ _cargo }} clippy --all-targets --frozen {{ _features }} {{ flags }}
doc *flags:
@{{ _cargo }} doc --no-deps --workspace --frozen {{ _features }} {{ flags }}
doc-crate crate *flags:
@{{ _cargo }} doc --package={{ crate }} --all-targets --frozen {{ _features }} {{ flags }}
# Build all tests
test-build *flags:
@{{ _cargo }} test-build --workspace --frozen {{ _features }} {{ flags }}
# Run all tests
test *flags:
@{{ _cargo }} test --workspace --frozen {{ _features }} {{ flags }}
test-crate crate *flags:
@{{ _cargo }} test --package={{ crate }} --frozen {{ _features }} {{ flags }}
test-dir dir *flags:
cd {{ dir }} && {{ _cargo }} test --frozen {{ _features }} {{ flags }}
# Build the proxy
# XXX(ver) checksec doesn't work when profile=debug, so skip it.
build: _build _strip
# Build the proxy without stripping debug symbols
build-debug: _build
_build:
@rm -f {{ _target_bin }} {{ _target_bin }}.dbg
@{{ _cargo }} build --frozen --package=linkerd2-proxy {{ _features }}
_strip:
{{ _objcopy }} --only-keep-debug {{ _target_bin }} {{ _target_bin }}.dbg
{{ _objcopy }} --strip-unneeded {{ _target_bin }}
{{ _objcopy }} --add-gnu-debuglink={{ _target_bin }}.dbg {{ _target_bin }}
_package_bin := _package_dir / "bin" / "linkerd2-proxy"
# XXX aarch64-musl builds do not enable PIE, so we use target-specific
# files to document those differences.
_expected_checksec := '.checksec' / arch + '-' + libc + '.json'
# Check the security properties of the proxy binary.
checksec:
checksec --output=json --file='{{ _target_bin }}' \
| jq '.' | tee /dev/stderr \
| jq -S '.[] | del(."fortify_source") | del(."fortify-able") | del(.fortified) | del(.symbols)' \
| diff -u {{ _expected_checksec }} - >&2
_objcopy := 'llvm-objcopy-' + `just-cargo --evaluate _llvm-version`
# Build a package (i.e. for a release)
package: build
@mkdir -p {{ _package_dir }}/bin
cp LICENSE {{ _package_dir }}/
cp {{ _target_bin }} {{ _target_bin }}.dbg {{ _package_dir }}/
tar -czvf target/package/{{ _package_name }}.tar.gz -C target/package {{ _package_name }} >/dev/null
cd target/package && ({{ shasum }} {{ _package_name }}.tar.gz | tee {{ _package_name }}.txt)
@rm -rf {{ _package_dir }}
@du -h target/package/{{ _package_name }}.tar.gz
@tar tzvf target/package/{{ _package_name }}.tar.gz
# Build all of the fuzzers (SLOW).
fuzzers:
#!/usr/bin/env bash
set -euo pipefail
if [ "{{ toolchain }}" != "nightly" ]; then
echo "fuzzers must be run with nightly" >&2
exit 1
fi
for dir in $(find ./linkerd -type d -name fuzz); do
echo "cd $dir && cargo +nightly fuzz build"
( cd $dir ; cargo +nightly fuzz build \
{{ if profile == "release" { "--release" } else { "" } }} )
done
export DOCKER_BUILDX_CACHE_DIR := env_var_or_default('DOCKER_BUILDX_CACHE_DIR', '')
# Build a docker image (FOR TESTING ONLY)
docker *args='--output=type=docker': && _clean-cache
docker buildx build . \
--pull \
--tag={{ docker-image }} \
--build-arg PROFILE='{{ profile }}' \
--build-arg LINKERD2_PROXY_VENDOR='{{ LINKERD2_PROXY_VENDOR }}' \
--build-arg LINKERD2_PROXY_VERSION='{{ LINKERD2_PROXY_VERSION }}' \
--no-cache-filter=runtime \
{{ if linkerd-tag == '' { '' } else { '--build-arg=RUNTIME_IMAGE=ghcr.io/linkerd/proxy:' + linkerd-tag } }} \
{{ if features != "" { "--build-arg PROXY_FEATURES=" + features } else { "" } }} \
{{ if DOCKER_BUILDX_CACHE_DIR == '' { '' } else { '--cache-from=type=local,src=' + DOCKER_BUILDX_CACHE_DIR + ' --cache-to=type=local,dest=' + DOCKER_BUILDX_CACHE_DIR } }} \
{{ args }}
_clean-cache:
@{{ if DOCKER_BUILDX_CACHE_DIR == '' { 'true' } else { 'just-dev prune-action-cache ' + DOCKER_BUILDX_CACHE_DIR } }}
# Lints all shell scripts in the repo.
sh-lint:
@just-sh
md-lint:
@just-md
# Lints all GitHub Actions workflows
action-lint:
@just-dev lint-actions
action-dev-check:
#!/usr/bin/env bash
# TODO(ver) consolidate this again with just-dev
#@just-dev check-action-images
set -euo pipefail
VERSION=$(j5j .devcontainer/devcontainer.json |jq -r '.build.args["DEV_VERSION"]')
EX=0
while IFS= read filelineimg ; do
# Parse lines in the form `file:line img:tag`
fileline="${filelineimg%% *}"
file="${fileline%%:*}"
line="${fileline##*:}"
img="${filelineimg##* }"
name="${img%%:*}"
# Tag may be in the form of `version[-variant]`
tag="${img##*:}"
version="${tag%%-*}"
if [ "$name" = 'ghcr.io/linkerd/dev' ] && [ "$version" != "$VERSION" ]; then
if [ "${GITHUB_ACTIONS:-}" = "true" ]; then
echo "::error file=${file},line=${line}::Expected image 'ghcr.io/linkerd/dev:$VERSION'; found '${img}'" >&2
else
echo "${file}:${line}: Expected image 'ghcr.io/linkerd/dev:$VERSION'; found '${img}'" >&2
fi
EX=$(( EX+1 ))
fi
done < <( /usr/local/bin/action-images )
exit $EX
##
## Linkerd
##
linkerd-tag := env_var_or_default('LINKERD_TAG', '')
_controller-image := 'ghcr.io/linkerd/controller'
_policy-image := 'ghcr.io/linkerd/policy-controller'
_init-image := 'ghcr.io/linkerd/proxy-init'
_init-tag := 'v2.4.0'
_kubectl := 'just-k3d kubectl'
_linkerd := 'linkerd --context=k3d-$(just-k3d --evaluate K3D_CLUSTER_NAME)'
_tag-set:
#!/usr/bin/env bash
if [ -z '{{ linkerd-tag }}' ]; then
echo "linkerd-tag must be set" >&2
exit 1
fi
_k3d-ready:
@just-k3d ready
export K3D_CLUSTER_NAME := "l5d-proxy"
export K3D_CREATE_FLAGS := "--no-lb"
export K3S_DISABLE := "local-storage,traefik,servicelb,metrics-server@server:*"
k3d-create: && _k3d-ready
@just-k3d create
k3d-load-linkerd: _tag-set _k3d-ready
for i in \
'{{ _controller-image }}:{{ linkerd-tag }}' \
'{{ _policy-image }}:{{ linkerd-tag }}' \
'{{ _init-image }}:{{ _init-tag }}' \
; do \
docker pull -q "$i" ; \
done
@just-k3d import \
'{{ docker-image }}' \
'{{ _controller-image }}:{{ linkerd-tag }}' \
'{{ _policy-image }}:{{ linkerd-tag }}' \
'{{ _init-image }}:{{ _init-tag }}'
# Install crds on the test cluster.
_linkerd-crds-install: _k3d-ready
{{ _kubectl }} apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml
{{ _linkerd }} install --crds \
| {{ _kubectl }} apply -f -
{{ _kubectl }} wait crd --for condition=established \
--selector='linkerd.io/control-plane-ns' \
--timeout={{ wait-timeout }}
# Install linkerd on the test cluster using test images.
linkerd-install *args='': _tag-set k3d-load-linkerd _linkerd-crds-install && _linkerd-ready
{{ _linkerd }} install \
--set='imagePullPolicy=Never' \
--set='controllerImage={{ _controller-image }}' \
--set='linkerdVersion={{ linkerd-tag }}' \
--set='policyController.image.name={{ _policy-image }}' \
--set='policyController.image.version={{ linkerd-tag }}' \
--set='proxy.image.name={{ docker-repo }}' \
--set='proxy.image.version={{ docker-tag }}' \
--set='proxy.logLevel=linkerd=debug\,info' \
--set='proxyInit.image.name={{ _init-image }}' \
--set='proxyInit.image.version={{ _init-tag }}' \
{{ args }} \
| {{ _kubectl }} apply -f -
linkerd-uninstall:
{{ _linkerd }} uninstall \
| {{ _kubectl }} delete -f -
linkerd-check-control-plane-proxy:
#!/usr/bin/env bash
set -euo pipefail
check=$(mktemp --tmpdir check-XXXX.json)
{{ _linkerd }} check -o json > "$check"
result=$(jq -r \
'.categories[] | select(.categoryName == "linkerd-control-plane-proxy") | .checks[] | select(.description == "control plane proxies are healthy") | .result' \
"$check")
if [ "$result" != "success" ]; then
jq '.categories[] | .checks[] | select(.result != "success") | select(.hint | contains("-version") | not)' \
"$check" >&2
{{ _kubectl }} describe po -n linkerd >&2
exit 1
fi
rm "$check"
_linkerd-ready:
{{ _kubectl }} wait pod --for=condition=ready \
--namespace=linkerd --selector='linkerd.io/control-plane-component' \
--timeout={{ wait-timeout }}
#
# Dev Container
#
devcontainer-up:
devcontainer.js up --workspace-folder=.
devcontainer-exec container-id *args:
devcontainer.js exec --container-id={{ container-id }} {{ args }}

View File

@ -1,12 +1,16 @@
[package]
name = "linkerd-addr"
version = "0.1.0"
authors = ["Linkerd Developers <cncf-linkerd-dev@lists.cncf.io>"]
license = "Apache-2.0"
edition = "2018"
publish = false
version = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
publish = { workspace = true }
[dependencies]
http = "0.2"
http = { workspace = true }
ipnet = "2.11"
linkerd-dns-name = { path = "../dns/name" }
thiserror = "1.0"
thiserror = "2"
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] }

View File

@ -1,9 +1,10 @@
[package]
name = "linkerd-addr-fuzz"
version = "0.0.0"
authors = ["Linkerd Developers <cncf-linkerd-dev@lists.cncf.io>"]
publish = false
edition = "2018"
version = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
publish = { workspace = true }
[package.metadata]
cargo-fuzz = true
@ -12,7 +13,7 @@ cargo-fuzz = true
libfuzzer-sys = "0.4"
linkerd-addr = { path = ".." }
linkerd-tracing = { path = "../../tracing", features = ["ansi"] }
tracing = "0.1.26"
tracing = { workspace = true }
# Prevent this from interfering with workspaces
[workspace]

View File

@ -1,7 +1,7 @@
use crate::Addr;
use ipnet::IpNet;
use linkerd_addr::Addr;
use linkerd_dns::{Name, Suffix};
use std::{fmt, iter::FromIterator, net::IpAddr, sync::Arc};
use linkerd_dns_name::{Name, Suffix};
use std::{fmt, net::IpAddr, sync::Arc};
#[derive(Clone, Debug, Default)]
pub struct AddrMatch {

View File

@ -1,13 +1,17 @@
#![deny(warnings, rust_2018_idioms)]
#![deny(rust_2018_idioms, clippy::disallowed_methods, clippy::disallowed_types)]
#![forbid(unsafe_code)]
use linkerd_dns_name::Name;
use std::{
fmt,
net::{IpAddr, SocketAddr},
str::FromStr,
sync::Arc,
};
use thiserror::Error;
mod addr_match;
pub use self::addr_match::{AddrMatch, IpMatch, NameMatch};
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub enum Addr {
Name(NameAddr),
@ -16,7 +20,7 @@ pub enum Addr {
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub struct NameAddr {
name: Name,
name: Arc<Name>,
port: u16,
}
@ -96,15 +100,11 @@ impl Addr {
// them ourselves.
format!("[{}]", a.ip())
};
http::uri::Authority::from_str(&ip).unwrap_or_else(|err| {
panic!("SocketAddr ({}) must be valid authority: {}", a, err)
})
}
Addr::Socket(a) => {
http::uri::Authority::from_str(&a.to_string()).unwrap_or_else(|err| {
panic!("SocketAddr ({}) must be valid authority: {}", a, err)
})
http::uri::Authority::from_str(&ip)
.unwrap_or_else(|err| panic!("SocketAddr ({a}) must be valid authority: {err}"))
}
Addr::Socket(a) => http::uri::Authority::from_str(&a.to_string())
.unwrap_or_else(|err| panic!("SocketAddr ({a}) must be valid authority: {err}")),
}
}
@ -167,7 +167,10 @@ impl AsRef<Self> for Addr {
impl From<(Name, u16)> for NameAddr {
fn from((name, port): (Name, u16)) -> Self {
NameAddr { name, port }
NameAddr {
name: name.into(),
port,
}
}
}
@ -191,9 +194,8 @@ impl NameAddr {
return Err(Error::InvalidHost);
}
Name::from_str(host)
.map(|name| NameAddr { name, port })
.map_err(|_| Error::InvalidHost)
let name = Name::from_str(host).map_err(|_| Error::InvalidHost)?;
Ok((name, port).into())
}
pub fn from_authority_with_default_port(
@ -259,14 +261,14 @@ mod tests {
];
for (host, expected_result) in cases {
let a = Addr::from_str(host).unwrap();
assert_eq!(a.is_loopback(), *expected_result, "{:?}", host)
assert_eq!(a.is_loopback(), *expected_result, "{host:?}")
}
}
fn test_to_http_authority(cases: &[&str]) {
let width = cases.iter().map(|s| s.len()).max().unwrap_or(0);
for host in cases {
print!("trying {:1$} ... ", host, width);
print!("trying {host:width$} ... ");
Addr::from_str(host).unwrap().to_http_authority();
println!("ok");
}

View File

@ -1,10 +1,10 @@
[package]
name = "linkerd-app"
version = "0.1.0"
authors = ["Linkerd Developers <cncf-linkerd-dev@lists.cncf.io>"]
license = "Apache-2.0"
edition = "2018"
publish = false
version = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
publish = { workspace = true }
description = """
Configures and executes the proxy
@ -13,9 +13,12 @@ This is used by tests and the executable.
[features]
allow-loopback = ["linkerd-app-outbound/allow-loopback"]
log-streaming = ["linkerd-app-admin/log-streaming"]
pprof = ["linkerd-app-admin/pprof"]
[dependencies]
futures = { version = "0.3", default-features = false }
hyper-util = { workspace = true }
linkerd-app-admin = { path = "./admin" }
linkerd-app-core = { path = "./core" }
linkerd-app-gateway = { path = "./gateway" }
@ -23,10 +26,14 @@ linkerd-app-inbound = { path = "./inbound" }
linkerd-app-outbound = { path = "./outbound" }
linkerd-error = { path = "../error" }
linkerd-opencensus = { path = "../opencensus" }
regex = "1.5.4"
thiserror = "1.0"
linkerd-opentelemetry = { path = "../opentelemetry" }
linkerd-tonic-stream = { path = "../tonic-stream" }
linkerd-workers = { path = "../workers" }
rangemap = "1"
regex = "1"
thiserror = "2"
tokio = { version = "1", features = ["rt"] }
tokio-stream = { version = "0.1.7", features = ["time", "sync"] }
tonic = { version = "0.5", default-features = false, features = ["prost"] }
tower = "0.4.8"
tracing = "0.1.28"
tokio-stream = { version = "0.1", features = ["time", "sync"] }
tonic = { workspace = true, default-features = false, features = ["prost"] }
tower = { workspace = true }
tracing = { workspace = true }

View File

@ -1,27 +1,40 @@
[package]
name = "linkerd-app-admin"
version = "0.1.0"
authors = ["Linkerd Developers <cncf-linkerd-dev@lists.cncf.io>"]
license = "Apache-2.0"
edition = "2018"
publish = false
version = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
publish = { workspace = true }
description = """
The linkerd proxy's admin server.
"""
[features]
default = []
pprof = ["deflate", "dep:pprof"]
log-streaming = ["linkerd-tracing/stream"]
[dependencies]
html-escape = "0.2"
http = "0.2"
hyper = { version = "0.14", features = ["http1", "http2"] }
bytes = { workspace = true }
deflate = { version = "1", optional = true, features = ["gzip"] }
http = { workspace = true }
http-body = { workspace = true }
http-body-util = { workspace = true }
hyper = { workspace = true, features = ["http1", "http2"] }
futures = { version = "0.3", default-features = false }
pprof = { version = "0.15", optional = true, features = ["prost-codec"] }
serde = "1"
serde_json = "1"
thiserror = "2"
tokio = { version = "1", features = ["macros", "sync", "parking_lot"] }
tracing = { workspace = true }
linkerd-app-core = { path = "../core" }
linkerd-app-inbound = { path = "../inbound" }
thiserror = "1"
tokio = { version = "1", features = ["macros", "sync", "parking_lot"]}
tracing = "0.1"
linkerd-tracing = { path = "../../tracing" }
[dependencies.tower]
version = "0.4"
workspace = true
default-features = false
features = [
"buffer",
@ -30,4 +43,3 @@ features = [
"timeout",
"util",
]

View File

@ -1,6 +1,8 @@
#![deny(warnings, rust_2018_idioms)]
#![deny(rust_2018_idioms, clippy::disallowed_methods, clippy::disallowed_types)]
#![forbid(unsafe_code)]
#[cfg(feature = "pprof")]
mod pprof;
mod server;
mod stack;

View File

@ -0,0 +1,62 @@
use linkerd_app_core::Result;
#[derive(Copy, Clone, Debug)]
pub(crate) struct Pprof;
impl Pprof {
pub async fn profile<B>(self, req: http::Request<B>) -> Result<http::Response<hyper::Body>> {
use pprof::protos::Message;
fn query_param<'r, B>(req: &'r http::Request<B>, name: &'static str) -> Option<&'r str> {
let params = req.uri().path_and_query()?.query()?.split('&');
params
.filter_map(|p| p.strip_prefix(name)?.strip_prefix('='))
.next()
}
// TODO(ver) Pretty-up error handling if we ever expose this outside of
// development.
let duration = std::time::Duration::from_secs_f64(
query_param(&req, "seconds")
.map(|s| s.parse::<f64>())
.transpose()?
.unwrap_or(30.0),
);
let frequency = query_param(&req, "frequency")
.map(|s| s.parse::<i32>())
.transpose()?
// Go's default.
.unwrap_or(100);
tracing::info!(?duration, frequency, "Collecting");
let report = {
let guard = pprof::ProfilerGuard::new(frequency)?;
tokio::time::sleep(duration).await;
guard.report().build()?
};
tracing::info!(
?duration,
frequency,
frames = report.data.len(),
"Collected"
);
let pb_gz = {
let mut gz = deflate::write::GzEncoder::new(
Vec::<u8>::new(),
deflate::CompressionOptions::fast(),
);
std::io::Write::write_all(&mut gz, &{
let mut buf = Vec::new();
report.pprof()?.encode(&mut buf)?;
buf
})?;
gz.finish()?
};
Ok(http::Response::builder()
.header(http::header::CONTENT_TYPE, "application/octet-stream")
.body(hyper::Body::from(pb_gz))
.expect("response must be valid"))
}
}

View File

@ -0,0 +1,347 @@
//! Serves an HTTP admin server.
//!
//! * `GET /metrics` -- reports prometheus-formatted metrics.
//! * `GET /ready` -- returns 200 when the proxy is ready to participate in meshed
//! traffic.
//! * `GET /live` -- returns 200 when the proxy is live.
//! * `GET /proxy-log-level` -- returns the current proxy tracing filter.
//! * `PUT /proxy-log-level` -- sets a new tracing filter.
//! * `GET /tasks` -- returns a dump of spawned Tokio tasks (when enabled by the
//! tracing configuration).
//! * `POST /shutdown` -- shuts down the proxy.
use futures::future::{self, TryFutureExt};
use http::StatusCode;
use linkerd_app_core::{
metrics::{self as metrics, legacy::FmtMetrics},
proxy::http::{Body, BoxBody, ClientHandle, Request, Response},
trace, Error, Result,
};
use std::{
future::Future,
pin::Pin,
task::{Context, Poll},
};
use tokio::sync::mpsc;
mod json;
mod log;
mod readiness;
pub use self::readiness::{Latch, Readiness};
#[derive(Clone)]
pub struct Admin<M> {
metrics: metrics::legacy::Serve<M>,
tracing: trace::Handle,
ready: Readiness,
shutdown_tx: mpsc::UnboundedSender<()>,
enable_shutdown: bool,
#[cfg(feature = "pprof")]
pprof: Option<crate::pprof::Pprof>,
}
pub type ResponseFuture = Pin<Box<dyn Future<Output = Result<Response<BoxBody>>> + Send + 'static>>;
impl<M> Admin<M> {
pub fn new(
metrics: M,
ready: Readiness,
shutdown_tx: mpsc::UnboundedSender<()>,
enable_shutdown: bool,
tracing: trace::Handle,
) -> Self {
Self {
metrics: metrics::legacy::Serve::new(metrics),
ready,
shutdown_tx,
enable_shutdown,
tracing,
#[cfg(feature = "pprof")]
pprof: None,
}
}
#[cfg(feature = "pprof")]
pub fn with_profiling(mut self, enabled: bool) -> Self {
self.pprof = enabled.then_some(crate::pprof::Pprof);
self
}
fn ready_rsp(&self) -> Response<BoxBody> {
if self.ready.is_ready() {
Response::builder()
.status(StatusCode::OK)
.header(http::header::CONTENT_TYPE, "text/plain")
.body(BoxBody::from_static("ready\n"))
.expect("builder with known status code must not fail")
} else {
Response::builder()
.status(StatusCode::SERVICE_UNAVAILABLE)
.body(BoxBody::from_static("not ready\n"))
.expect("builder with known status code must not fail")
}
}
fn live_rsp() -> Response<BoxBody> {
Response::builder()
.status(StatusCode::OK)
.header(http::header::CONTENT_TYPE, "text/plain")
.body(BoxBody::from_static("live\n"))
.expect("builder with known status code must not fail")
}
fn env_rsp<B>(req: Request<B>) -> Response<BoxBody> {
use std::{collections::HashMap, env, ffi::OsString};
if req.method() != http::Method::GET {
return Self::method_not_allowed();
}
if let Err(not_acceptable) = json::accepts_json(&req) {
return not_acceptable;
}
fn unicode(s: OsString) -> String {
s.to_string_lossy().into_owned()
}
let query = req
.uri()
.path_and_query()
.and_then(http::uri::PathAndQuery::query);
let env = if let Some(query) = query {
if query.contains('=') {
return json::json_error_rsp(
"env.json query parameters may not contain key-value pairs",
StatusCode::BAD_REQUEST,
);
}
query
.split('&')
.map(|qparam| {
let var = match std::env::var(qparam) {
Err(env::VarError::NotPresent) => None,
Err(env::VarError::NotUnicode(bad)) => Some(unicode(bad)),
Ok(var) => Some(var),
};
(qparam.to_string(), var)
})
.collect::<HashMap<String, Option<String>>>()
} else {
std::env::vars_os()
.map(|(key, var)| (unicode(key), Some(unicode(var))))
.collect::<HashMap<String, Option<String>>>()
};
json::json_rsp(&env)
}
fn shutdown(&self) -> Response<BoxBody> {
if !self.enable_shutdown {
return Response::builder()
.status(StatusCode::NOT_FOUND)
.header(http::header::CONTENT_TYPE, "text/plain")
.body(BoxBody::from_static("shutdown endpoint is not enabled\n"))
.expect("builder with known status code must not fail");
}
if self.shutdown_tx.send(()).is_ok() {
Response::builder()
.status(StatusCode::OK)
.header(http::header::CONTENT_TYPE, "text/plain")
.body(BoxBody::from_static("shutdown\n"))
.expect("builder with known status code must not fail")
} else {
Response::builder()
.status(StatusCode::INTERNAL_SERVER_ERROR)
.header(http::header::CONTENT_TYPE, "text/plain")
.body(BoxBody::from_static("shutdown listener dropped\n"))
.expect("builder with known status code must not fail")
}
}
fn internal_error_rsp(error: impl ToString) -> http::Response<BoxBody> {
http::Response::builder()
.status(http::StatusCode::INTERNAL_SERVER_ERROR)
.header(http::header::CONTENT_TYPE, "text/plain")
.body(BoxBody::new(error.to_string()))
.expect("builder with known status code should not fail")
}
fn not_found() -> Response<BoxBody> {
Response::builder()
.status(http::StatusCode::NOT_FOUND)
.body(BoxBody::empty())
.expect("builder with known status code must not fail")
}
fn method_not_allowed() -> Response<BoxBody> {
Response::builder()
.status(http::StatusCode::METHOD_NOT_ALLOWED)
.body(BoxBody::empty())
.expect("builder with known status code must not fail")
}
fn forbidden_not_localhost() -> Response<BoxBody> {
Response::builder()
.status(http::StatusCode::FORBIDDEN)
.header(http::header::CONTENT_TYPE, "text/plain")
.body(BoxBody::new::<String>(
"Requests are only permitted from localhost.".into(),
))
.expect("builder with known status code must not fail")
}
fn client_is_localhost<B>(req: &Request<B>) -> bool {
req.extensions()
.get::<ClientHandle>()
.map(|a| match a.addr.ip() {
std::net::IpAddr::V4(v4) => v4.is_loopback(),
std::net::IpAddr::V6(v6) => {
if let Some(v4) = v6.to_ipv4_mapped() {
v4.is_loopback()
} else {
v6.is_loopback()
}
}
})
.unwrap_or(false)
}
}
impl<M, B> tower::Service<http::Request<B>> for Admin<M>
where
M: FmtMetrics,
B: Body + Send + 'static,
B::Error: Into<Error>,
B::Data: Send,
{
type Response = http::Response<BoxBody>;
type Error = Error;
type Future = ResponseFuture;
fn poll_ready(&mut self, _: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
Poll::Ready(Ok(()))
}
fn call(&mut self, req: Request<B>) -> Self::Future {
match req.uri().path() {
"/live" => Box::pin(future::ok(Self::live_rsp())),
"/ready" => Box::pin(future::ok(self.ready_rsp())),
"/metrics" => {
let rsp = self.metrics.serve(req).unwrap_or_else(|error| {
::tracing::error!(%error, "Failed to format metrics");
Self::internal_error_rsp(error)
});
Box::pin(future::ok(rsp))
}
"/proxy-log-level" => {
if !Self::client_is_localhost(&req) {
return Box::pin(future::ok(Self::forbidden_not_localhost()));
}
let level = match self.tracing.level() {
Some(level) => level.clone(),
None => return Box::pin(future::ok(Self::not_found())),
};
Box::pin(log::level::serve(level, req).or_else(|error| {
tracing::error!(error, "Failed to get/set tracing level");
future::ok(Self::internal_error_rsp(error))
}))
}
#[cfg(feature = "log-streaming")]
"/logs.json" => {
if !Self::client_is_localhost(&req) {
return Box::pin(future::ok(Self::forbidden_not_localhost()));
}
Box::pin(
log::stream::serve(self.tracing.clone(), req).or_else(|error| {
tracing::error!(error, "Failed to stream logs");
future::ok(Self::internal_error_rsp(error))
}),
)
}
"/env.json" => Box::pin(future::ok(Self::env_rsp(req))),
"/shutdown" => {
if req.method() == http::Method::POST {
if Self::client_is_localhost(&req) {
Box::pin(future::ok(self.shutdown()))
} else {
Box::pin(future::ok(Self::forbidden_not_localhost()))
}
} else {
Box::pin(future::ok(Self::method_not_allowed()))
}
}
#[cfg(feature = "pprof")]
"/debug/pprof/profile.pb.gz" if self.pprof.is_some() => {
let pprof = self.pprof.expect("unreachable");
if !Self::client_is_localhost(&req) {
return Box::pin(future::ok(Self::forbidden_not_localhost()));
}
if req.method() != http::Method::GET {
return Box::pin(future::ok(Self::method_not_allowed()));
}
Box::pin(async move {
Ok(pprof
.profile(req)
.await
.unwrap_or_else(Self::internal_error_rsp))
})
}
_ => Box::pin(future::ok(Self::not_found())),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use http::method::Method;
use std::time::Duration;
use tokio::time::timeout;
use tower::util::ServiceExt;
const TIMEOUT: Duration = Duration::from_secs(1);
#[tokio::test]
async fn ready_when_latches_dropped() {
let (r, l0) = Readiness::new();
let l1 = l0.clone();
let (_, t) = trace::Settings::default().build();
let (s, _) = mpsc::unbounded_channel();
let admin = Admin::new((), r, s, true, t);
macro_rules! call {
() => {{
let r = Request::builder()
.method(Method::GET)
.uri("http://0.0.0.0/ready")
.body(BoxBody::empty())
.unwrap();
let f = admin.clone().oneshot(r);
timeout(TIMEOUT, f).await.expect("timeout").expect("call")
}};
}
assert_eq!(call!().status(), StatusCode::SERVICE_UNAVAILABLE);
drop(l0);
assert_eq!(call!().status(), StatusCode::SERVICE_UNAVAILABLE);
drop(l1);
assert_eq!(call!().status(), StatusCode::OK);
}
}

View File

@ -0,0 +1,79 @@
static JSON_MIME: &str = "application/json";
pub(in crate::server) static JSON_HEADER_VAL: HeaderValue = HeaderValue::from_static(JSON_MIME);
use bytes::Bytes;
use hyper::{
header::{self, HeaderValue},
StatusCode,
};
use linkerd_app_core::proxy::http::BoxBody;
pub(crate) fn json_error_rsp(
error: impl ToString,
status: http::StatusCode,
) -> http::Response<BoxBody> {
mk_rsp(
status,
&serde_json::json!({
"error": error.to_string(),
"status": status.as_u16(),
}),
)
}
pub(crate) fn json_rsp(val: &impl serde::Serialize) -> http::Response<BoxBody> {
mk_rsp(StatusCode::OK, val)
}
#[allow(clippy::result_large_err)]
pub(crate) fn accepts_json<B>(req: &http::Request<B>) -> Result<(), http::Response<BoxBody>> {
if let Some(accept) = req.headers().get(header::ACCEPT) {
let accept = match std::str::from_utf8(accept.as_bytes()) {
Ok(accept) => accept,
Err(_) => {
tracing::warn!("Accept header is not valid UTF-8");
return Err(json_error_rsp(
"Accept header must be UTF-8",
StatusCode::BAD_REQUEST,
));
}
};
let will_accept_json = accept.contains(JSON_MIME)
|| accept.contains("application/*")
|| accept.contains("*/*");
if !will_accept_json {
tracing::warn!(?accept, "Accept header will not accept 'application/json'");
return Err(http::Response::builder()
.status(StatusCode::NOT_ACCEPTABLE)
.body(BoxBody::from_static(JSON_MIME))
.expect("builder with known status code must not fail"));
}
}
Ok(())
}
fn mk_rsp(status: StatusCode, val: &impl serde::Serialize) -> http::Response<BoxBody> {
// Serialize the value into JSON, and then place the bytes in a boxed response body.
let json = serde_json::to_vec(val)
.map(Bytes::from)
.map(http_body_util::Full::new)
.map(BoxBody::new);
match json {
Ok(body) => http::Response::builder()
.status(status)
.header(header::CONTENT_TYPE, JSON_HEADER_VAL.clone())
.body(body)
.expect("builder with known status code must not fail"),
Err(error) => {
tracing::warn!(?error, "failed to serialize JSON value");
http::Response::builder()
.status(StatusCode::INTERNAL_SERVER_ERROR)
.body(BoxBody::new(format!(
"failed to serialize JSON value: {error}"
)))
.expect("builder with known status code must not fail")
}
}
}

View File

@ -1,51 +0,0 @@
use hyper::{
body::{Buf, HttpBody},
Body,
};
use linkerd_app_core::{trace::level::Handle, Error};
use std::io;
pub(super) async fn serve<B>(
level: &Handle,
req: http::Request<B>,
) -> Result<http::Response<Body>, Error>
where
B: HttpBody,
B::Error: Into<Error>,
{
let mk_rsp = |status: http::StatusCode, body: Body| -> http::Response<Body> {
http::Response::builder()
.status(status)
.body(body)
.expect("builder with known status code must not fail")
};
let rsp = match *req.method() {
http::Method::GET => {
let level = level.current()?;
mk_rsp(http::StatusCode::OK, level.into())
}
http::Method::PUT => {
let body = hyper::body::aggregate(req.into_body())
.await
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
match level.set_from(body.chunk()) {
Ok(()) => mk_rsp(http::StatusCode::NO_CONTENT, Body::empty()),
Err(error) => {
tracing::warn!(%error, "Setting log level failed");
mk_rsp(http::StatusCode::BAD_REQUEST, error.into())
}
}
}
_ => http::Response::builder()
.status(http::StatusCode::METHOD_NOT_ALLOWED)
.header("allow", "GET")
.header("allow", "PUT")
.body(Body::empty())
.expect("builder with known status code must not fail"),
};
Ok(rsp)
}

View File

@ -0,0 +1,3 @@
pub(super) mod level;
#[cfg(feature = "log-streaming")]
pub(super) mod stream;

View File

@ -0,0 +1,60 @@
use bytes::Buf;
use http::{header, StatusCode};
use linkerd_app_core::{
proxy::http::{Body, BoxBody},
trace::level,
Error,
};
use std::io;
pub async fn serve<B>(
level: level::Handle,
req: http::Request<B>,
) -> Result<http::Response<BoxBody>, Error>
where
B: Body,
B::Error: Into<Error>,
{
Ok(match *req.method() {
http::Method::GET => {
let level = level.current()?;
mk_rsp(StatusCode::OK, level)
}
http::Method::PUT => {
use http_body_util::BodyExt;
let body = req
.into_body()
.collect()
.await
.map_err(io::Error::other)?
.aggregate();
match level.set_from(body.chunk()) {
Ok(_) => mk_rsp(StatusCode::NO_CONTENT, BoxBody::empty()),
Err(error) => {
tracing::warn!(%error, "Setting log level failed");
mk_rsp(StatusCode::BAD_REQUEST, error)
}
}
}
_ => http::Response::builder()
.status(StatusCode::METHOD_NOT_ALLOWED)
.header(header::ALLOW, "GET")
.header(header::ALLOW, "PUT")
.body(BoxBody::empty())
.expect("builder with known status code must not fail"),
})
}
fn mk_rsp<B>(status: StatusCode, body: B) -> http::Response<BoxBody>
where
B: Body + Send + 'static,
B::Data: Send + 'static,
B::Error: Into<Error>,
{
http::Response::builder()
.status(status)
.body(BoxBody::new(body))
.expect("builder with known status code must not fail")
}

View File

@ -0,0 +1,144 @@
use crate::server::json;
use bytes::{Buf, Bytes};
use futures::FutureExt;
use hyper::{header, StatusCode};
use linkerd_app_core::{
proxy::http::{Body, BoxBody},
trace::{self},
Error,
};
use trace::EnvFilter;
use tracing::instrument::WithSubscriber;
macro_rules! recover {
($thing:expr, $msg:literal, $status:expr $(,)?) => {
match $thing {
Ok(val) => val,
Err(error) => {
tracing::warn!(%error, status = %$status, message = %$msg);
return Ok(json::json_error_rsp(error, $status));
}
}
}
}
// If log streaming support is enabled, start a new log stream
pub async fn serve<B>(
handle: trace::Handle,
req: http::Request<B>,
) -> Result<http::Response<BoxBody>, Error>
where
B: Body,
B::Error: Into<Error>,
{
let handle = handle.into_stream();
if let Err(not_acceptable) = json::accepts_json(&req) {
return Ok(not_acceptable);
}
let try_filter = match req.method() {
// If the request is a GET, use the query string as the requested log filter.
&http::Method::GET => {
let query = req
.uri()
.query()
.ok_or("Missing query string for log-streaming filter");
tracing::trace!(req.query = ?query);
let query = recover!(query, "Missing query string", StatusCode::BAD_REQUEST);
parse_filter(query)
}
// If the request is a QUERY, use the request body
method if method.as_str() == "QUERY" => {
// TODO(eliza): validate that the request has a content-length...
use http_body_util::BodyExt;
let body = recover!(
req.into_body()
.collect()
.await
.map_err(Into::into)
.map(http_body_util::Collected::aggregate),
"Reading log stream request body",
StatusCode::BAD_REQUEST
);
let body_str = recover!(
std::str::from_utf8(body.chunk()),
"Parsing log stream filter",
StatusCode::BAD_REQUEST,
);
parse_filter(body_str)
}
method => {
tracing::warn!(?method, "Unsupported method");
return Ok(http::Response::builder()
.status(StatusCode::METHOD_NOT_ALLOWED)
.header(header::ALLOW, "GET")
.header(header::ALLOW, "QUERY")
.body(BoxBody::empty())
.expect("builder with known status code must not fail"));
}
};
let filter = recover!(
try_filter,
"Parsing log stream filter",
StatusCode::BAD_REQUEST,
);
let rx = recover!(
handle.add_stream(filter),
"Starting log stream",
StatusCode::INTERNAL_SERVER_ERROR
);
// TODO(eliza): it's currently a bit sad that we have to use `Body::channel`
// and spawn a worker task to poll from the log stream and write to the
// request body using `Bytes::copy_from_slice` --- this allocates and
// `memcpy`s the buffer, which is unfortunate.
//
// https://github.com/hawkw/thingbuf/issues/62 would allow us to avoid the
// copy by passing the channel's pooled buffer directly to hyper, and
// returning it to the channel to be reused when hyper is done with it.
let (mut tx, body) = http_body_util::channel::Channel::<Bytes, Error>::new(1024);
tokio::spawn(
async move {
// TODO(eliza): we could definitely implement some batching here.
while let Some(line) = rx.next_line().await {
tx.send_data(Bytes::copy_from_slice(line.as_ref())).await?;
// if any log events were dropped, report that to the client
let dropped = rx.take_dropped_count();
if dropped > 0 {
let json =
serde_json::to_vec(&serde_json::json!({ "dropped_events": dropped }))?;
tx.send_data(Bytes::from(json)).await?;
}
}
Ok(())
}
// send any logs generated by the log streaming task to /dev/null
.with_subscriber(tracing::subscriber::NoSubscriber::default())
.map(|res: Result<(), Error>| {
tracing::debug!(?res, "Log stream completed");
}),
);
Ok(mk_rsp(StatusCode::OK, BoxBody::new(body)))
}
fn parse_filter(filter_str: &str) -> Result<EnvFilter, impl std::error::Error> {
let filter = EnvFilter::builder().with_regex(false).parse(filter_str);
tracing::trace!(?filter, ?filter_str);
filter
}
fn mk_rsp<B>(status: StatusCode, body: B) -> http::Response<B> {
http::Response::builder()
.status(status)
.header(header::CONTENT_TYPE, json::JSON_HEADER_VAL.clone())
.body(body)
.expect("builder with known status code must not fail")
}

View File

@ -1,251 +0,0 @@
//! Serves an HTTP admin server.
//!
//! * `GET /metrics` -- reports prometheus-formatted metrics.
//! * `GET /ready` -- returns 200 when the proxy is ready to participate in meshed
//! traffic.
//! * `GET /live` -- returns 200 when the proxy is live.
//! * `GET /proxy-log-level` -- returns the current proxy tracing filter.
//! * `PUT /proxy-log-level` -- sets a new tracing filter.
//! * `GET /tasks` -- returns a dump of spawned Tokio tasks (when enabled by the
//! tracing configuration).
//! * `POST /shutdown` -- shuts down the proxy.
use futures::future;
use http::StatusCode;
use hyper::{
body::{Body, HttpBody},
Request, Response,
};
use linkerd_app_core::{
metrics::{self as metrics, FmtMetrics},
proxy::http::ClientHandle,
trace, Error,
};
use std::{
future::Future,
net::SocketAddr,
pin::Pin,
task::{Context, Poll},
};
use tokio::sync::mpsc;
mod level;
mod readiness;
pub use self::readiness::{Latch, Readiness};
#[derive(Clone)]
pub struct Admin<M> {
metrics: metrics::Serve<M>,
tracing: trace::Handle,
ready: Readiness,
shutdown_tx: mpsc::UnboundedSender<()>,
}
#[derive(Clone)]
pub struct Accept<S> {
service: S,
server: hyper::server::conn::Http,
}
#[derive(Clone)]
pub struct Serve<S> {
client_addr: SocketAddr,
inner: S,
}
pub type ResponseFuture =
Pin<Box<dyn Future<Output = Result<Response<Body>, Error>> + Send + 'static>>;
impl<M> Admin<M> {
pub fn new(
metrics: M,
ready: Readiness,
shutdown_tx: mpsc::UnboundedSender<()>,
tracing: trace::Handle,
) -> Self {
Self {
metrics: metrics::Serve::new(metrics),
ready,
shutdown_tx,
tracing,
}
}
fn ready_rsp(&self) -> Response<Body> {
if self.ready.is_ready() {
Response::builder()
.status(StatusCode::OK)
.header(http::header::CONTENT_TYPE, "text/plain")
.body("ready\n".into())
.expect("builder with known status code must not fail")
} else {
Response::builder()
.status(StatusCode::SERVICE_UNAVAILABLE)
.body("not ready\n".into())
.expect("builder with known status code must not fail")
}
}
fn live_rsp() -> Response<Body> {
Response::builder()
.status(StatusCode::OK)
.header(http::header::CONTENT_TYPE, "text/plain")
.body("live\n".into())
.expect("builder with known status code must not fail")
}
fn shutdown(&self) -> Response<Body> {
if self.shutdown_tx.send(()).is_ok() {
Response::builder()
.status(StatusCode::OK)
.header(http::header::CONTENT_TYPE, "text/plain")
.body("shutdown\n".into())
.expect("builder with known status code must not fail")
} else {
Response::builder()
.status(StatusCode::INTERNAL_SERVER_ERROR)
.header(http::header::CONTENT_TYPE, "text/plain")
.body("shutdown listener dropped\n".into())
.expect("builder with known status code must not fail")
}
}
fn internal_error_rsp(error: impl ToString) -> http::Response<Body> {
http::Response::builder()
.status(http::StatusCode::INTERNAL_SERVER_ERROR)
.header(http::header::CONTENT_TYPE, "text/plain")
.body(error.to_string().into())
.expect("builder with known status code should not fail")
}
fn not_found() -> Response<Body> {
Response::builder()
.status(http::StatusCode::NOT_FOUND)
.body(Body::empty())
.expect("builder with known status code must not fail")
}
fn method_not_allowed() -> Response<Body> {
Response::builder()
.status(http::StatusCode::METHOD_NOT_ALLOWED)
.body(Body::empty())
.expect("builder with known status code must not fail")
}
fn forbidden_not_localhost() -> Response<Body> {
Response::builder()
.status(http::StatusCode::FORBIDDEN)
.header(http::header::CONTENT_TYPE, "text/plain")
.body("Requests are only permitted from localhost.".into())
.expect("builder with known status code must not fail")
}
fn client_is_localhost<B>(req: &Request<B>) -> bool {
req.extensions()
.get::<ClientHandle>()
.map(|a| a.addr.ip().is_loopback())
.unwrap_or(false)
}
}
impl<M, B> tower::Service<http::Request<B>> for Admin<M>
where
M: FmtMetrics,
B: HttpBody + Send + Sync + 'static,
B::Error: Into<Error>,
B::Data: Send,
{
type Response = http::Response<Body>;
type Error = Error;
type Future = ResponseFuture;
fn poll_ready(&mut self, _: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
Poll::Ready(Ok(()))
}
fn call(&mut self, req: Request<B>) -> Self::Future {
match req.uri().path() {
"/live" => Box::pin(future::ok(Self::live_rsp())),
"/ready" => Box::pin(future::ok(self.ready_rsp())),
"/metrics" => {
let rsp = self.metrics.serve(req).unwrap_or_else(|error| {
::tracing::error!(%error, "Failed to format metrics");
Self::internal_error_rsp(error)
});
Box::pin(future::ok(rsp))
}
"/proxy-log-level" => {
if Self::client_is_localhost(&req) {
let level = self.tracing.level().cloned();
Box::pin(async move {
let rsp = match level {
Some(level) => {
level::serve(&level, req).await.unwrap_or_else(|error| {
tracing::error!(%error, "Failed to get/set tracing level");
Self::internal_error_rsp(error)
})
}
None => Self::not_found(),
};
Ok(rsp)
})
} else {
Box::pin(future::ok(Self::forbidden_not_localhost()))
}
}
"/shutdown" => {
if req.method() == http::Method::POST {
if Self::client_is_localhost(&req) {
Box::pin(future::ok(self.shutdown()))
} else {
Box::pin(future::ok(Self::forbidden_not_localhost()))
}
} else {
Box::pin(future::ok(Self::method_not_allowed()))
}
}
_ => Box::pin(future::ok(Self::not_found())),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use http::method::Method;
use std::time::Duration;
use tokio::{sync::mpsc, time::timeout};
use tower::util::ServiceExt;
const TIMEOUT: Duration = Duration::from_secs(1);
#[tokio::test]
async fn ready_when_latches_dropped() {
let (r, l0) = Readiness::new();
let l1 = l0.clone();
let (_, t) = trace::Settings::default().build();
let (s, _) = mpsc::unbounded_channel();
let admin = Admin::new((), r, s, t);
macro_rules! call {
() => {{
let r = Request::builder()
.method(Method::GET)
.uri("http://0.0.0.0/ready")
.body(Body::empty())
.unwrap();
let f = admin.clone().oneshot(r);
timeout(TIMEOUT, f).await.expect("timeout").expect("call")
};};
}
assert_eq!(call!().status(), StatusCode::SERVICE_UNAVAILABLE);
drop(l0);
assert_eq!(call!().status(), StatusCode::SERVICE_UNAVAILABLE);
drop(l1);
assert_eq!(call!().status(), StatusCode::OK);
}
}

View File

@ -8,7 +8,7 @@ pub struct Readiness(Weak<()>);
/// When all latches are dropped, the process is considered ready.
#[derive(Clone, Debug)]
pub struct Latch(Arc<()>);
pub struct Latch(#[allow(dead_code)] Arc<()>);
impl Readiness {
pub fn new() -> (Readiness, Latch) {

View File

@ -1,13 +1,15 @@
use linkerd_app_core::{
classify,
config::ServerConfig,
detect, drain, errors,
metrics::{self, FmtMetrics},
proxy::{http, identity::LocalCrtKey},
drain, errors, identity,
metrics::{self, legacy::FmtMetrics},
proxy::http,
serve,
svc::{self, ExtractParam, InsertParam, Param},
tls, trace,
transport::{self, listen::Bind, ClientAddr, Local, OrigDstAddr, Remote, ServerAddr},
transport::{
self, addrs::AddrPair, listen::Bind, ClientAddr, Local, OrigDstAddr, Remote, ServerAddr,
},
Error, Result,
};
use linkerd_app_inbound as inbound;
@ -20,6 +22,9 @@ use tracing::debug;
pub struct Config {
pub server: ServerConfig,
pub metrics_retain_idle: Duration,
#[cfg(feature = "pprof")]
pub enable_profiling: bool,
pub enable_shutdown: bool,
}
pub struct Task {
@ -34,7 +39,7 @@ struct NonHttpClient(Remote<ClientAddr>);
#[derive(Debug, Error)]
#[error("Unexpected TLS connection to {} from {}", self.0, self.1)]
struct UnexpectedSni(tls::ServerId, Remote<ClientAddr>);
struct UnexpectedSni(tls::ServerName, Remote<ClientAddr>);
#[derive(Clone, Debug)]
struct Tcp {
@ -47,18 +52,18 @@ struct Tcp {
#[derive(Clone, Debug)]
struct Http {
tcp: Tcp,
version: http::Version,
version: http::Variant,
}
#[derive(Clone, Debug)]
struct Permitted {
permit: inbound::policy::Permit,
permit: inbound::policy::HttpRoutePermit,
http: Http,
}
#[derive(Clone)]
struct TlsParams {
identity: Option<LocalCrtKey>,
identity: identity::Server,
}
const DETECT_TIMEOUT: Duration = Duration::from_secs(1);
@ -73,40 +78,70 @@ impl Config {
pub fn build<B, R>(
self,
bind: B,
policy: impl inbound::policy::CheckPolicy,
identity: Option<LocalCrtKey>,
policy: impl inbound::policy::GetPolicy,
identity: identity::Server,
report: R,
metrics: inbound::Metrics,
metrics: inbound::InboundMetrics,
trace: trace::Handle,
drain: drain::Watch,
shutdown: mpsc::UnboundedSender<()>,
) -> Result<Task>
where
R: FmtMetrics + Clone + Send + Sync + Unpin + 'static,
B: Bind<ServerConfig>,
B::Addrs: svc::Param<Remote<ClientAddr>> + svc::Param<Local<ServerAddr>>,
B: Bind<ServerConfig, BoundAddrs = Local<ServerAddr>>,
B::Addrs: svc::Param<Remote<ClientAddr>>,
B::Addrs: svc::Param<Local<ServerAddr>>,
B::Addrs: svc::Param<AddrPair>,
{
let (listen_addr, listen) = bind.bind(&self.server)?;
// Get the policy for the admin server.
let policy = policy.check_policy(OrigDstAddr(listen_addr.into()))?;
let policy = policy.get_policy(OrigDstAddr(listen_addr.into()));
let (ready, latch) = crate::server::Readiness::new();
let admin = crate::server::Admin::new(report, ready, shutdown, trace);
let admin = svc::stack(move |_| admin.clone())
.push(metrics.proxy.http_endpoint.to_layer::<classify::Response, _, Permitted>())
#[cfg_attr(not(feature = "pprof"), allow(unused_mut))]
let admin = crate::server::Admin::new(report, ready, shutdown, self.enable_shutdown, trace);
#[cfg(feature = "pprof")]
let admin = admin.with_profiling(self.enable_profiling);
let http = svc::stack(move |_| admin.clone())
.push(
metrics
.proxy
.http_endpoint
.to_layer::<classify::Response, _, Permitted>(),
)
.push(classify::NewClassify::layer_default())
.push_map_target(|(permit, http)| Permitted { permit, http })
.push(inbound::policy::NewAuthorizeHttp::layer(metrics.http_authz.clone()))
.push(inbound::policy::NewHttpPolicy::layer(
metrics.http_authz.clone(),
))
.push(Rescue::layer())
.push_on_service(http::BoxResponse::layer())
.push(http::NewServeHttp::layer(Default::default(), drain.clone()))
.push_request_filter(
.arc_new_clone_http();
let inbound::DetectMetrics(detect_metrics) = metrics.detect.clone();
let tcp = http
.unlift_new()
.push(http::NewServeHttp::layer({
let drain = drain.clone();
move |t: &Http| {
http::ServerParams {
version: t.version,
http2: Default::default(),
drain: drain.clone(),
}
}
}))
.push_filter(
|(http, tcp): (
Result<Option<http::Version>, detect::DetectTimeoutError<_>>,
http::Detection,
Tcp,
)| {
match http {
Ok(Some(version)) => Ok(Http { version, tcp }),
http::Detection::Http(version) => Ok(Http { version, tcp }),
// If detection timed out, we can make an educated guess at the proper
// behavior:
// - If the connection was meshed, it was most likely transported over
@ -114,12 +149,12 @@ impl Config {
// - If the connection was unmeshed, it was mostly likely HTTP/1.
// - If we received some unexpected SNI, the client is mostly likely
// confused/stale.
Err(_timeout) => {
let version = match tcp.tls.clone() {
tls::ConditionalServerTls::None(_) => http::Version::Http1,
http::Detection::ReadTimeout(_timeout) => {
let version = match tcp.tls {
tls::ConditionalServerTls::None(_) => http::Variant::Http1,
tls::ConditionalServerTls::Some(tls::ServerTls::Established {
..
}) => http::Version::H2,
}) => http::Variant::H2,
tls::ConditionalServerTls::Some(tls::ServerTls::Passthru {
sni,
}) => {
@ -127,12 +162,12 @@ impl Config {
return Err(Error::from(UnexpectedSni(sni, tcp.client)));
}
};
debug!(%version, "HTTP detection timed out; assuming HTTP");
debug!(?version, "HTTP detection timed out; assuming HTTP");
Ok(Http { version, tcp })
}
// If the connection failed HTTP detection, check if we detected TLS for
// another target. This might indicate that the client is confused/stale.
Ok(None) => match tcp.tls {
http::Detection::NotHttp => match tcp.tls {
tls::ConditionalServerTls::Some(tls::ServerTls::Passthru { sni }) => {
Err(UnexpectedSni(sni, tcp.client).into())
}
@ -141,8 +176,14 @@ impl Config {
}
},
)
.push(svc::ArcNewService::layer())
.push(detect::NewDetectService::layer(svc::stack::CloneParam::from(detect::Config::<http::DetectHttp>::from_timeout(DETECT_TIMEOUT))))
.arc_new_tcp()
.lift_new_with_target()
.push(http::NewDetect::layer(move |tcp: &Tcp| {
http::DetectParams {
read_timeout: DETECT_TIMEOUT,
metrics: detect_metrics.metrics(tcp.policy.server_label())
}
}))
.push(transport::metrics::NewServer::layer(metrics.proxy.transport))
.push_map_target(move |(tls, addrs): (tls::ConditionalServerTls, B::Addrs)| {
Tcp {
@ -152,13 +193,14 @@ impl Config {
policy: policy.clone(),
}
})
.push(svc::ArcNewService::layer())
.push(tls::NewDetectTls::layer(TlsParams {
.arc_new_tcp()
.push(tls::NewDetectTls::<identity::Server, _, _>::layer(TlsParams {
identity,
}))
.arc_new_tcp()
.into_inner();
let serve = Box::pin(serve::serve(listen, admin, drain.signaled()));
let serve = Box::pin(serve::serve(listen, tcp, drain.signaled()));
Ok(Task {
listen_addr,
latch,
@ -172,7 +214,7 @@ impl Config {
impl Param<transport::labels::Key> for Tcp {
fn param(&self) -> transport::labels::Key {
transport::labels::Key::inbound_server(
self.tls.clone(),
self.tls.as_ref().map(|t| t.labels()),
self.addr.into(),
self.policy.server_label(),
)
@ -181,8 +223,8 @@ impl Param<transport::labels::Key> for Tcp {
// === impl Http ===
impl Param<http::Version> for Http {
fn param(&self) -> http::Version {
impl Param<http::Variant> for Http {
fn param(&self) -> http::Variant {
self.version
}
}
@ -199,6 +241,14 @@ impl Param<Remote<ClientAddr>> for Http {
}
}
impl Param<AddrPair> for Http {
fn param(&self) -> AddrPair {
let Remote(client) = self.tcp.client;
let Local(server) = self.tcp.addr;
AddrPair(client, server)
}
}
impl Param<tls::ConditionalServerTls> for Http {
fn param(&self) -> tls::ConditionalServerTls {
self.tcp.tls.clone()
@ -222,7 +272,7 @@ impl Param<metrics::ServerLabel> for Http {
impl Param<metrics::EndpointLabels> for Permitted {
fn param(&self) -> metrics::EndpointLabels {
metrics::InboundEndpointLabels {
tls: self.http.tcp.tls.clone(),
tls: self.http.tcp.tls.as_ref().map(|t| t.labels()),
authority: None,
target_addr: self.http.tcp.addr.into(),
policy: self.permit.labels.clone(),
@ -240,9 +290,9 @@ impl<T> ExtractParam<tls::server::Timeout, T> for TlsParams {
}
}
impl<T> ExtractParam<Option<LocalCrtKey>, T> for TlsParams {
impl<T> ExtractParam<identity::Server, T> for TlsParams {
#[inline]
fn extract_param(&self, _: &T) -> Option<LocalCrtKey> {
fn extract_param(&self, _: &T) -> identity::Server {
self.identity.clone()
}
}
@ -291,12 +341,15 @@ impl<T: Param<tls::ConditionalServerTls>> ExtractParam<errors::respond::EmitHead
impl errors::HttpRescue<Error> for Rescue {
fn rescue(&self, error: Error) -> Result<errors::SyntheticHttpResponse> {
let cause = errors::root_cause(&*error);
if cause.is::<inbound::policy::DeniedUnauthorized>() {
return Ok(errors::SyntheticHttpResponse::permission_denied(error));
if let Some(cause) = errors::cause_ref::<inbound::policy::HttpRouteNotFound>(&*error) {
return Ok(errors::SyntheticHttpResponse::not_found(cause));
}
tracing::warn!(%error, "Unexpected error");
if let Some(cause) = errors::cause_ref::<inbound::policy::HttpRouteUnauthorized>(&*error) {
return Ok(errors::SyntheticHttpResponse::permission_denied(cause));
}
tracing::warn!(error, "Unexpected error");
Ok(errors::SyntheticHttpResponse::unexpected_error())
}
}

View File

@ -1,10 +1,10 @@
[package]
name = "linkerd-app-core"
version = "0.1.0"
authors = ["Linkerd Developers <cncf-linkerd-dev@lists.cncf.io>"]
license = "Apache-2.0"
edition = "2018"
publish = false
version = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
publish = { workspace = true }
description = """
Core infrastructure for the proxy application
@ -13,43 +13,50 @@ independently of the inbound and outbound proxy logic.
"""
[dependencies]
bytes = "1"
drain = { version = "0.1.0", features = ["retain"] }
http = "0.2"
http-body = "0.4"
hyper = { version = "0.14.13", features = ["http1", "http2"] }
drain = { workspace = true, features = ["retain"] }
http = { workspace = true }
http-body = { workspace = true }
hyper = { workspace = true, features = ["http1", "http2"] }
futures = { version = "0.3", default-features = false }
ipnet = "2.3"
ipnet = "2.11"
prometheus-client = { workspace = true }
thiserror = "2"
tokio = { version = "1", features = ["macros", "sync", "parking_lot"] }
tokio-stream = { version = "0.1", features = ["time"] }
tonic = { workspace = true, default-features = false, features = ["prost"] }
tracing = { workspace = true }
pin-project = "1"
linkerd-addr = { path = "../../addr" }
linkerd-cache = { path = "../../cache" }
linkerd-conditional = { path = "../../conditional" }
linkerd-dns = { path = "../../dns" }
linkerd-detect = { path = "../../detect" }
linkerd-duplex = { path = "../../duplex" }
linkerd-errno = { path = "../../errno" }
linkerd-error = { path = "../../error" }
linkerd-error-respond = { path = "../../error-respond" }
linkerd-exp-backoff = { path = "../../exp-backoff" }
linkerd-http-classify = { path = "../../http-classify" }
linkerd-http-metrics = { path = "../../http-metrics" }
linkerd-http-retry = { path = "../../http-retry" }
linkerd-http-metrics = { path = "../../http/metrics" }
linkerd-identity = { path = "../../identity" }
linkerd-idle-cache = { path = "../../idle-cache" }
linkerd-io = { path = "../../io" }
linkerd-metrics = { path = "../../metrics", features = ["linkerd-stack"] }
linkerd-meshtls = { path = "../../meshtls", default-features = false }
linkerd-metrics = { path = "../../metrics", features = ["process", "stack"] }
linkerd-opencensus = { path = "../../opencensus" }
linkerd-proxy-core = { path = "../../proxy/core" }
linkerd-opentelemetry = { path = "../../opentelemetry" }
linkerd-proxy-api-resolve = { path = "../../proxy/api-resolve" }
linkerd-proxy-discover = { path = "../../proxy/discover" }
linkerd-proxy-identity = { path = "../../proxy/identity" }
linkerd-proxy-http = { path = "../../proxy/http" }
linkerd-proxy-resolve = { path = "../../proxy/resolve" }
linkerd-proxy-balance = { path = "../../proxy/balance" }
linkerd-proxy-core = { path = "../../proxy/core" }
linkerd-proxy-client-policy = { path = "../../proxy/client-policy" }
linkerd-proxy-dns-resolve = { path = "../../proxy/dns-resolve" }
linkerd-proxy-http = { path = "../../proxy/http" }
linkerd-proxy-identity-client = { path = "../../proxy/identity-client" }
linkerd-proxy-spire-client = { path = "../../proxy/spire-client" }
linkerd-proxy-resolve = { path = "../../proxy/resolve" }
linkerd-proxy-server-policy = { path = "../../proxy/server-policy" }
linkerd-proxy-tap = { path = "../../proxy/tap" }
linkerd-proxy-tcp = { path = "../../proxy/tcp" }
linkerd-proxy-transport = { path = "../../proxy/transport" }
linkerd-reconnect = { path = "../../reconnect" }
linkerd-retry = { path = "../../retry" }
linkerd-server-policy = { path = "../../server-policy" }
linkerd-router = { path = "../../router" }
linkerd-rustls = { path = "../../rustls" }
linkerd-service-profiles = { path = "../../service-profiles" }
linkerd-stack = { path = "../../stack" }
linkerd-stack-metrics = { path = "../../stack/metrics" }
@ -59,30 +66,16 @@ linkerd-transport-header = { path = "../../transport-header" }
linkerd-transport-metrics = { path = "../../transport-metrics" }
linkerd-tls = { path = "../../tls" }
linkerd-trace-context = { path = "../../trace-context" }
regex = "1.5.4"
serde_json = "1"
thiserror = "1.0"
tokio = { version = "1", features = ["macros", "sync", "parking_lot"]}
tokio-stream = { version = "0.1.7", features = ["time"] }
tonic = { version = "0.5", default-features = false, features = ["prost"] }
tracing = "0.1.28"
parking_lot = "0.11"
pin-project = "1"
[dependencies.tower]
version = "0.4.8"
workspace = true
default-features = false
features = [
"buffer",
"make",
"spawn-ready",
"timeout",
"util",
"limit",
]
features = ["make", "spawn-ready", "timeout", "util", "limit"]
[target.'cfg(target_os = "linux")'.dependencies]
linkerd-system = { path = "../../system" }
[build-dependencies]
semver = "1"
[dev-dependencies]
quickcheck = { version = "1", default-features = false }
bytes = { workspace = true }
http-body-util = { workspace = true }
linkerd-mock-http-body = { path = "../../mock/http-body" }

View File

@ -1,32 +1,48 @@
use std::process::Command;
use std::string::String;
fn set_env(name: &str, cmd: &mut Command) {
let value = match cmd.output() {
Ok(output) => String::from_utf8(output.stdout).unwrap(),
Err(err) => {
println!("cargo:warning={}", err);
println!("cargo:warning={err}");
"".to_string()
}
};
println!("cargo:rustc-env={}={}", name, value);
println!("cargo:rustc-env={name}={value}");
}
fn version() -> String {
if let Ok(v) = std::env::var("LINKERD2_PROXY_VERSION") {
if !v.is_empty() {
if let Err(err) = semver::Version::parse(&v) {
panic!("LINKERD2_PROXY_VERSION must be semver: version='{v}' error='{err}'");
}
return v;
}
}
"0.0.0-dev".to_string()
}
fn vendor() -> String {
std::env::var("LINKERD2_PROXY_VENDOR").unwrap_or_default()
}
fn main() {
set_env(
"GIT_BRANCH",
Command::new("git").args(&["rev-parse", "--abbrev-ref", "HEAD"]),
);
set_env(
"GIT_SHA",
Command::new("git").args(&["rev-parse", "--short", "HEAD"]),
Command::new("git").args(["rev-parse", "--short", "HEAD"]),
);
set_env(
"GIT_VERSION",
Command::new("git").args(&["describe", "--always", "HEAD"]),
);
set_env("RUST_VERSION", Command::new("rustc").arg("--version"));
let profile = std::env::var("PROFILE").unwrap();
println!("cargo:rustc-env=PROFILE={}", profile);
// Capture the ISO 8601 formatted UTC time.
set_env(
"LINKERD2_PROXY_BUILD_DATE",
Command::new("date").args(["-u", "+%Y-%m-%dT%H:%M:%SZ"]),
);
println!("cargo:rustc-env=LINKERD2_PROXY_VERSION={}", version());
println!("cargo:rustc-env=LINKERD2_PROXY_VENDOR={}", vendor());
let profile = std::env::var("PROFILE").expect("PROFILE must be set");
println!("cargo:rustc-env=PROFILE={profile}");
}

View File

@ -0,0 +1,28 @@
use linkerd_metrics::prom::{self, encoding::EncodeLabelSet};
pub const BUILD_INFO: BuildInfo = BuildInfo {
date: env!("LINKERD2_PROXY_BUILD_DATE"),
git_sha: env!("GIT_SHA"),
profile: env!("PROFILE"),
vendor: env!("LINKERD2_PROXY_VENDOR"),
version: env!("LINKERD2_PROXY_VERSION"),
};
#[derive(Copy, Clone, Debug, Default, Hash, PartialEq, Eq, EncodeLabelSet)]
pub struct BuildInfo {
pub date: &'static str,
pub git_sha: &'static str,
pub profile: &'static str,
pub vendor: &'static str,
pub version: &'static str,
}
impl BuildInfo {
pub fn metric(&self) -> prom::Family<BuildInfo, prom::ConstGauge> {
let fam = prom::Family::<Self, prom::ConstGauge>::new_with_constructor(|| {
prom::ConstGauge::new(1)
});
let _ = fam.get_or_create(self);
fam
}
}

View File

@ -1,67 +1,63 @@
use crate::profiles;
use linkerd_error::Error;
use linkerd_http_classify as classify;
pub use linkerd_http_classify::{CanClassify, NewClassify};
use linkerd_proxy_http::{HasH2Reason, ResponseTimeoutError};
use linkerd_proxy_client_policy as client_policy;
use linkerd_proxy_http::{classify, HasH2Reason, ResponseTimeoutError};
use std::borrow::Cow;
use tonic as grpc;
use tracing::trace;
#[derive(Clone, Debug)]
pub type NewClassify<N, X = ()> = classify::NewInsertClassifyResponse<Request, X, N>;
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum Request {
Default,
Profile(profiles::http::ResponseClasses),
ClientPolicy(ClientPolicy),
}
#[derive(Clone, Debug)]
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum Response {
Default,
Grpc,
Http(client_policy::http::StatusRanges),
Grpc(client_policy::grpc::Codes),
Profile(profiles::http::ResponseClasses),
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum ClientPolicy {
Grpc(client_policy::grpc::Codes),
Http(client_policy::http::StatusRanges),
}
#[derive(Clone, Debug)]
pub enum Eos {
Default(http::StatusCode),
Grpc(GrpcEos),
Profile(Class),
Error(&'static str),
Class(Class),
GrpcOpen(client_policy::grpc::Codes),
ProfileUnmatched(Class),
}
#[derive(Clone, Debug)]
pub enum GrpcEos {
NoBody(Class),
Open,
}
pub type Result<T> = std::result::Result<T, T>;
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
pub enum Class {
Default(SuccessOrFailure),
Grpc(SuccessOrFailure, u32),
Stream(SuccessOrFailure, Cow<'static, str>),
}
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
pub enum SuccessOrFailure {
Success,
Failure,
Http(Result<http::StatusCode>),
Grpc(Result<grpc::Code>),
Error(Cow<'static, str>),
}
// === impl Request ===
impl From<profiles::http::ResponseClasses> for Request {
fn from(classes: profiles::http::ResponseClasses) -> Self {
if classes.is_empty() {
Request::Default
} else {
Request::Profile(classes)
if !classes.is_empty() {
return Self::Profile(classes);
}
Self::Default
}
}
impl Default for Request {
fn default() -> Self {
Request::Default
Self::Default
}
}
@ -72,20 +68,21 @@ impl classify::Classify for Request {
fn classify<B>(&self, req: &http::Request<B>) -> Self::ClassifyResponse {
match self {
Request::Profile(classes) => Response::Profile(classes.clone()),
Request::Default => {
let is_grpc = req
.headers()
.get(http::header::CONTENT_TYPE)
.and_then(|v| v.to_str().ok())
.map(|ct| ct.starts_with("application/grpc+"))
.unwrap_or(false);
Self::Profile(classes) => Response::Profile(classes.clone()),
if is_grpc {
Response::Grpc
} else {
Response::Default
Self::ClientPolicy(ClientPolicy::Http(policy)) => {
if is_grpc(req.headers()) {
return Response::Grpc(Default::default());
}
Response::Http(policy.clone())
}
Self::ClientPolicy(ClientPolicy::Grpc(policy)) => Response::Grpc(policy.clone()),
Self::Default => {
if is_grpc(req.headers()) {
return Response::Grpc(Default::default());
}
Response::default()
}
}
}
@ -95,9 +92,7 @@ impl classify::Classify for Request {
impl Default for Response {
fn default() -> Self {
// By default, simply perform HTTP classification. This only applies
// when no `insert` layer is present.
Response::Default
Self::Http(client_policy::http::StatusRanges::default())
}
}
@ -108,12 +103,12 @@ impl Response {
) -> Option<Class> {
for class in classes {
if class.is_match(rsp) {
let result = if class.is_failure() {
SuccessOrFailure::Failure
let res = if class.is_failure() {
Err(rsp.status())
} else {
SuccessOrFailure::Success
Ok(rsp.status())
};
return Some(Class::Default(result));
return Some(Class::Http(res));
}
}
@ -126,19 +121,36 @@ impl classify::ClassifyResponse for Response {
type ClassifyEos = Eos;
fn start<B>(self, rsp: &http::Response<B>) -> Eos {
let status = rsp.status();
match self {
Response::Default => grpc_class(rsp.headers())
.map(|c| Eos::Grpc(GrpcEos::NoBody(c)))
.unwrap_or_else(|| Eos::Default(rsp.status())),
Response::Grpc => grpc_class(rsp.headers())
.map(|c| Eos::Grpc(GrpcEos::NoBody(c)))
.unwrap_or(Eos::Grpc(GrpcEos::Open)),
Response::Profile(ref classes) => Self::match_class(rsp, classes.as_ref())
.map(Eos::Profile)
Self::Http(statuses) => Eos::Class(Class::Http(if statuses.contains(status) {
Err(status)
} else {
Ok(status)
})),
Self::Grpc(codes) => grpc_code(rsp.headers())
.map(|c| Eos::Class(Class::Grpc(if codes.contains(c) { Err(c) } else { Ok(c) })))
.unwrap_or(Eos::GrpcOpen(codes)),
Self::Profile(ref classes) => Self::match_class(rsp, classes.as_ref())
.map(Eos::Class)
.unwrap_or_else(|| {
grpc_class(rsp.headers())
.map(|c| Eos::Grpc(GrpcEos::NoBody(c)))
.unwrap_or_else(|| Eos::Default(rsp.status()))
if let Some(code) = grpc_code(rsp.headers()) {
let codes = client_policy::grpc::Codes::default();
return Eos::Class(Class::Grpc(if codes.contains(code) {
Err(code)
} else {
Ok(code)
}));
}
let http = Class::Http(if status.is_server_error() {
Err(status)
} else {
Ok(status)
});
Eos::ProfileUnmatched(http)
}),
}
}
@ -149,8 +161,7 @@ impl classify::ClassifyResponse for Response {
} else {
h2_error(err).into()
};
Class::Stream(SuccessOrFailure::Failure, msg)
Class::Error(msg)
}
}
@ -159,82 +170,94 @@ impl classify::ClassifyResponse for Response {
impl classify::ClassifyEos for Eos {
type Class = Class;
fn eos(self, trailers: Option<&http::HeaderMap>) -> Self::Class {
fn eos(self, trailers: Option<&http::HeaderMap>) -> Class {
match self {
Eos::Default(status) if status.is_server_error() => {
Class::Default(SuccessOrFailure::Failure)
Self::Class(class) => class,
Self::GrpcOpen(codes) => {
let code = match trailers.and_then(grpc_code) {
None => return Class::Grpc(Ok(grpc::Code::Unknown)),
Some(code) => code,
};
if codes.contains(code) {
return Class::Grpc(Err(code));
}
Class::Grpc(Ok(code))
}
Self::ProfileUnmatched(http_class) => {
if let Some(code) = trailers.and_then(grpc_code) {
let codes = client_policy::grpc::Codes::default();
return Class::Grpc(if codes.contains(code) {
Err(code)
} else {
Ok(code)
});
}
http_class
}
Eos::Default(_) => trailers
.and_then(grpc_class)
.unwrap_or(Class::Default(SuccessOrFailure::Success)),
Eos::Grpc(GrpcEos::NoBody(class)) => class,
Eos::Grpc(GrpcEos::Open) => trailers
.and_then(grpc_class)
.unwrap_or(Class::Grpc(SuccessOrFailure::Success, 0)),
Eos::Profile(class) => class,
Eos::Error(msg) => Class::Stream(SuccessOrFailure::Failure, msg.into()),
}
}
fn error(self, err: &Error) -> Self::Class {
Class::Stream(SuccessOrFailure::Failure, h2_error(err).into())
fn error(self, err: &Error) -> Class {
Class::Error(h2_error(err).into())
}
}
fn grpc_class(headers: &http::HeaderMap) -> Option<Class> {
headers
.get("grpc-status")
fn grpc_code(hdrs: &http::HeaderMap) -> Option<grpc::Code> {
hdrs.get("grpc-status")
.and_then(|v| v.to_str().ok())
.and_then(|s| s.parse::<u32>().ok())
.map(|grpc_status| {
let ok = match grpc::Code::from_i32(grpc_status as i32) {
grpc::Code::Unknown
| grpc::Code::DeadlineExceeded
| grpc::Code::Internal
| grpc::Code::Unavailable
| grpc::Code::PermissionDenied
| grpc::Code::DataLoss => SuccessOrFailure::Failure,
_ => SuccessOrFailure::Success,
};
Class::Grpc(ok, grpc_status)
})
.and_then(|s| s.parse::<u16>().ok())
.map(|code| grpc::Code::from_i32(code as i32))
}
fn h2_error(err: &Error) -> String {
if let Some(reason) = err.h2_reason() {
// This should output the error code in the same format as the spec,
// for example: PROTOCOL_ERROR
format!("h2({:?})", reason)
format!("h2({reason:?})")
} else {
trace!("classifying found non-h2 error: {:?}", err);
String::from("unclassified")
}
}
fn is_grpc(hdrs: &http::HeaderMap) -> bool {
hdrs.get(http::header::CONTENT_TYPE)
.and_then(|v| v.to_str().ok())
.map(|ct| ct.starts_with("application/grpc"))
.unwrap_or(false)
}
// === impl Class ===
impl Class {
pub(super) fn is_failure(&self) -> bool {
#[inline]
pub fn is_success(&self) -> bool {
!self.is_failure()
}
#[inline]
pub fn is_failure(&self) -> bool {
matches!(
self,
Class::Default(SuccessOrFailure::Failure)
| Class::Grpc(SuccessOrFailure::Failure, _)
| Class::Stream(SuccessOrFailure::Failure, _)
Class::Http(Err(_)) | Class::Grpc(Err(_)) | Class::Error(_),
)
}
}
#[cfg(test)]
mod tests {
use super::{Class, SuccessOrFailure};
use http::{HeaderMap, Response, StatusCode};
use linkerd_http_classify::{ClassifyEos, ClassifyResponse};
use super::Class;
use http::{HeaderMap, Request, Response, StatusCode};
use linkerd_proxy_http::{
classify::{ClassifyEos, ClassifyResponse},
Classify,
};
#[test]
fn http_response_status_ok() {
let rsp = Response::builder().status(StatusCode::OK).body(()).unwrap();
let class = super::Response::Default.start(&rsp).eos(None);
assert_eq!(class, Class::Default(SuccessOrFailure::Success));
let class = super::Response::default().start(&rsp).eos(None);
assert_eq!(class, Class::Http(Ok(http::StatusCode::OK)));
}
#[test]
@ -243,8 +266,8 @@ mod tests {
.status(StatusCode::BAD_REQUEST)
.body(())
.unwrap();
let class = super::Response::Default.start(&rsp).eos(None);
assert_eq!(class, Class::Default(SuccessOrFailure::Success));
let class = super::Response::default().start(&rsp).eos(None);
assert_eq!(class, Class::Http(Ok(StatusCode::BAD_REQUEST)));
}
#[test]
@ -253,8 +276,8 @@ mod tests {
.status(StatusCode::INTERNAL_SERVER_ERROR)
.body(())
.unwrap();
let class = super::Response::Default.start(&rsp).eos(None);
assert_eq!(class, Class::Default(SuccessOrFailure::Failure));
let class = super::Response::default().start(&rsp).eos(None);
assert_eq!(class, Class::Http(Err(StatusCode::INTERNAL_SERVER_ERROR)));
}
#[test]
@ -264,8 +287,10 @@ mod tests {
.status(StatusCode::OK)
.body(())
.unwrap();
let class = super::Response::Grpc.start(&rsp).eos(None);
assert_eq!(class, Class::Grpc(SuccessOrFailure::Success, 0));
let class = super::Response::Grpc(Default::default())
.start(&rsp)
.eos(None);
assert_eq!(class, Class::Grpc(Ok(tonic::Code::Ok)));
}
#[test]
@ -275,8 +300,10 @@ mod tests {
.status(StatusCode::OK)
.body(())
.unwrap();
let class = super::Response::Grpc.start(&rsp).eos(None);
assert_eq!(class, Class::Grpc(SuccessOrFailure::Failure, 2));
let class = super::Response::Grpc(Default::default())
.start(&rsp)
.eos(None);
assert_eq!(class, Class::Grpc(Err(tonic::Code::Unknown)));
}
#[test]
@ -285,8 +312,10 @@ mod tests {
let mut trailers = HeaderMap::new();
trailers.insert("grpc-status", 0.into());
let class = super::Response::Grpc.start(&rsp).eos(Some(&trailers));
assert_eq!(class, Class::Grpc(SuccessOrFailure::Success, 0));
let class = super::Response::Grpc(Default::default())
.start(&rsp)
.eos(Some(&trailers));
assert_eq!(class, Class::Grpc(Ok(tonic::Code::Ok)));
}
#[test]
@ -295,16 +324,20 @@ mod tests {
let mut trailers = HeaderMap::new();
trailers.insert("grpc-status", 4.into());
let class = super::Response::Grpc.start(&rsp).eos(Some(&trailers));
assert_eq!(class, Class::Grpc(SuccessOrFailure::Failure, 4));
let class = super::Response::Grpc(Default::default())
.start(&rsp)
.eos(Some(&trailers));
assert_eq!(class, Class::Grpc(Err(tonic::Code::DeadlineExceeded)));
}
#[test]
fn grpc_response_trailer_missing() {
let rsp = Response::builder().status(StatusCode::OK).body(()).unwrap();
let trailers = HeaderMap::new();
let class = super::Response::Grpc.start(&rsp).eos(Some(&trailers));
assert_eq!(class, Class::Grpc(SuccessOrFailure::Success, 0));
let class = super::Response::Grpc(Default::default())
.start(&rsp)
.eos(Some(&trailers));
assert_eq!(class, Class::Grpc(Ok(tonic::Code::Unknown)));
}
#[test]
@ -316,6 +349,40 @@ mod tests {
let class = super::Response::Profile(Default::default())
.start(&rsp)
.eos(Some(&trailers));
assert_eq!(class, Class::Grpc(SuccessOrFailure::Failure, 4));
assert_eq!(class, Class::Grpc(Err(tonic::Code::DeadlineExceeded)));
}
#[test]
fn grpc_over_http_trailer_ok() {
let req = Request::builder()
.header(http::header::CONTENT_TYPE, "application/grpc+proto")
.body(())
.unwrap();
let rsp = Response::builder().status(StatusCode::OK).body(()).unwrap();
let mut trailers = HeaderMap::new();
trailers.insert("grpc-status", 0.into());
let class = super::Request::ClientPolicy(super::ClientPolicy::Http(Default::default()))
.classify(&req)
.start(&rsp)
.eos(Some(&trailers));
assert_eq!(class, Class::Grpc(Ok(tonic::Code::Ok)));
}
#[test]
fn grpc_over_http_trailer_error() {
let req = Request::builder()
.header(http::header::CONTENT_TYPE, "application/grpc+proto")
.body(())
.unwrap();
let rsp = Response::builder().status(StatusCode::OK).body(()).unwrap();
let mut trailers = HeaderMap::new();
trailers.insert("grpc-status", 4.into());
let class = super::Request::ClientPolicy(super::ClientPolicy::Http(Default::default()))
.classify(&req)
.start(&rsp)
.eos(Some(&trailers));
assert_eq!(class, Class::Grpc(Err(tonic::Code::DeadlineExceeded)));
}
}

View File

@ -1,16 +1,17 @@
pub use crate::exp_backoff::ExponentialBackoff;
use crate::{
proxy::http::{self, h1, h2},
svc::{stack::CloneParam, Param},
transport::{Keepalive, ListenAddr},
proxy::http::{h1, h2},
svc::{queue, ExtractParam, Param},
transport::{DualListenAddr, Keepalive, ListenAddr, UserTimeout},
};
use std::time::Duration;
#[derive(Clone, Debug)]
pub struct ServerConfig {
pub addr: ListenAddr,
pub addr: DualListenAddr,
pub keepalive: Keepalive,
pub h2_settings: h2::Settings,
pub user_timeout: UserTimeout,
pub http2: h2::ServerParams,
}
#[derive(Clone, Debug)]
@ -18,34 +19,57 @@ pub struct ConnectConfig {
pub backoff: ExponentialBackoff,
pub timeout: Duration,
pub keepalive: Keepalive,
pub h1_settings: h1::PoolSettings,
pub h2_settings: h2::Settings,
pub user_timeout: UserTimeout,
pub http1: h1::PoolSettings,
pub http2: h2::ClientParams,
}
#[derive(Clone, Debug)]
pub struct ProxyConfig {
pub server: ServerConfig,
pub connect: ConnectConfig,
pub buffer_capacity: usize,
pub cache_max_idle_age: Duration,
pub dispatch_timeout: Duration,
pub max_in_flight_requests: usize,
pub detect_protocol_timeout: Duration,
}
// === impl ProxyConfig ===
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub struct QueueConfig {
/// The number of requests (or connections, depending on the context) that
/// may be buffered
pub capacity: usize,
impl ProxyConfig {
pub fn detect_http(&self) -> CloneParam<linkerd_detect::Config<http::DetectHttp>> {
linkerd_detect::Config::from_timeout(self.detect_protocol_timeout).into()
/// The maximum amount of time a request may be buffered before failfast
/// errors are emitted.
pub failfast_timeout: Duration,
}
// === impl QueueConfig ===
impl<T> ExtractParam<queue::Capacity, T> for QueueConfig {
#[inline]
fn extract_param(&self, _: &T) -> queue::Capacity {
queue::Capacity(self.capacity)
}
}
impl<T> ExtractParam<queue::Timeout, T> for QueueConfig {
#[inline]
fn extract_param(&self, _: &T) -> queue::Timeout {
queue::Timeout(self.failfast_timeout)
}
}
// === impl ServerConfig ===
impl Param<DualListenAddr> for ServerConfig {
fn param(&self) -> DualListenAddr {
self.addr
}
}
impl Param<ListenAddr> for ServerConfig {
fn param(&self) -> ListenAddr {
self.addr
ListenAddr(self.addr.0)
}
}
@ -54,3 +78,9 @@ impl Param<Keepalive> for ServerConfig {
self.keepalive
}
}
impl Param<UserTimeout> for ServerConfig {
fn param(&self) -> UserTimeout {
self.user_timeout
}
}

View File

@ -1,18 +1,19 @@
use crate::{
classify, config, control, dns, metrics, proxy::http, svc, tls, transport::ConnectTcp, Addr,
classify, config, dns, identity, metrics, proxy::http, svc, tls, transport::ConnectTcp, Addr,
Error,
};
use futures::future::Either;
use linkerd_metrics::prom;
use std::fmt;
use tokio::time;
use tokio_stream::{wrappers::IntervalStream, StreamExt};
use tracing::warn;
use tracing::{info_span, warn};
#[derive(Clone, Debug)]
pub struct Config {
pub addr: ControlAddr,
pub connect: config::ConnectConfig,
pub buffer_capacity: usize,
pub buffer: config::QueueConfig,
}
#[derive(Clone, Debug)]
@ -21,57 +22,99 @@ pub struct ControlAddr {
pub identity: tls::ConditionalClientTls,
}
#[derive(Debug, thiserror::Error)]
#[error("controller {addr}: {source}")]
pub struct ControlError {
addr: Addr,
#[source]
source: Error,
}
#[derive(Debug, thiserror::Error)]
#[error("endpoint {addr}: {source}")]
struct EndpointError {
addr: std::net::SocketAddr,
#[source]
source: Error,
}
impl svc::Param<Addr> for ControlAddr {
fn param(&self) -> Addr {
self.addr.clone()
}
}
impl svc::Param<svc::queue::Capacity> for ControlAddr {
fn param(&self) -> svc::queue::Capacity {
svc::queue::Capacity(1_000)
}
}
impl svc::Param<svc::queue::Timeout> for ControlAddr {
fn param(&self) -> svc::queue::Timeout {
const FAILFAST: time::Duration = time::Duration::from_secs(30);
svc::queue::Timeout(FAILFAST)
}
}
impl svc::Param<http::balance::EwmaConfig> for ControlAddr {
fn param(&self) -> http::balance::EwmaConfig {
EWMA_CONFIG
}
}
impl fmt::Display for ControlAddr {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Display::fmt(&self.addr, f)
}
}
type BalanceBody =
http::balance::PendingUntilFirstDataBody<tower::load::peak_ewma::Handle, hyper::Body>;
pub type RspBody = linkerd_http_metrics::requests::ResponseBody<
http::balance::Body<hyper::body::Incoming>,
classify::Eos,
>;
pub type RspBody = linkerd_http_metrics::requests::ResponseBody<BalanceBody, classify::Eos>;
#[derive(Clone, Debug, Default)]
pub struct Metrics {
balance: balance::Metrics,
}
const EWMA_CONFIG: http::balance::EwmaConfig = http::balance::EwmaConfig {
default_rtt: time::Duration::from_millis(30),
decay: time::Duration::from_secs(10),
};
impl Metrics {
pub fn register(registry: &mut prom::Registry) -> Self {
Metrics {
balance: balance::Metrics::register(registry.sub_registry_with_prefix("balancer")),
}
}
}
impl Config {
pub fn build<L>(
pub fn build(
self,
dns: dns::Resolver,
metrics: metrics::ControlHttp,
identity: Option<L>,
legacy_metrics: metrics::ControlHttp,
metrics: Metrics,
identity: identity::NewClient,
) -> svc::ArcNewService<
(),
impl svc::Service<
http::Request<tonic::body::BoxBody>,
Response = http::Response<RspBody>,
Error = Error,
Future = impl Send,
> + Clone,
>
where
L: Clone + svc::Param<tls::client::Config> + Send + Sync + 'static,
{
svc::BoxCloneSyncService<http::Request<tonic::body::Body>, http::Response<RspBody>>,
> {
let addr = self.addr;
tracing::trace!(%addr, "Building");
// When a DNS resolution fails, log the error and use the TTL, if there
// is one, to drive re-resolution attempts.
let resolve_backoff = {
let backoff = self.connect.backoff;
move |error: Error| {
warn!(%error, "Failed to resolve control-plane component");
if let Some(e) = error.downcast_ref::<dns::ResolveError>() {
if let dns::ResolveErrorKind::NoRecordsFound {
negative_ttl: Some(ttl_secs),
..
} = e.kind()
{
let ttl = time::Duration::from_secs(*ttl_secs as u64);
return Ok(Either::Left(
warn!(error, "Failed to resolve control-plane component");
if let Some(e) = crate::errors::cause_ref::<dns::ResolveError>(&*error) {
if let Some(ttl) = e.negative_ttl() {
return Ok::<_, Error>(Either::Left(
IntervalStream::new(time::interval(ttl)).map(|_| ()),
));
}
@ -83,37 +126,68 @@ impl Config {
}
};
svc::stack(ConnectTcp::new(self.connect.keepalive))
.push(tls::Client::layer(identity))
.push_connect_timeout(self.connect.timeout)
.push(self::client::layer())
.push_on_service(svc::MapErr::layer(Into::into))
.into_new_service()
// Ensure that connection is driven independently of the load balancer; but don't drive
// reconnection independently of the balancer. This ensures that new connections are
// only initiated when the balancer tries to move pending endpoints to ready (i.e. after
// checking for discovery updates); but we don't want to continually reconnect without
// checking for discovery updates.
let client = svc::stack(ConnectTcp::new(
self.connect.keepalive,
self.connect.user_timeout,
))
.push(tls::Client::layer(identity))
.push_connect_timeout(self.connect.timeout) // Client<NewClient, ConnectTcp>
.push_map_target(|(_version, target)| target)
.push(self::client::layer::<_, _>(self.connect.http2))
.push_on_service(svc::MapErr::layer_boxed())
.into_new_service();
let endpoint = client
// Ensure that connection is driven independently of the load
// balancer; but don't drive reconnection independently of the
// balancer. This ensures that new connections are only initiated
// when the balancer tries to move pending endpoints to ready (i.e.
// after checking for discovery updates); but we don't want to
// continually reconnect without checking for discovery updates.
.push_on_service(svc::layer::mk(svc::SpawnReady::new))
.push(svc::NewMapErr::layer_from_target::<EndpointError, _>())
.push_new_reconnect(self.connect.backoff)
.instrument(|t: &self::client::Target| tracing::info_span!("endpoint", addr = %t.addr))
.push(self::resolve::layer(dns, resolve_backoff))
.push_on_service(self::control::balance::layer())
.into_new_service()
.push(metrics.to_layer::<classify::Response, _, _>())
.instrument(|t: &self::client::Target| info_span!("endpoint", addr = %t.addr));
let balance = endpoint
.lift_new()
.push(self::balance::layer(metrics.balance, dns, resolve_backoff))
.push(legacy_metrics.to_layer::<classify::Response, _, _>())
.push(classify::NewClassify::layer_default());
balance
.push(self::add_origin::layer())
.push_on_service(svc::layers().push_spawn_buffer(self.buffer_capacity))
.instrument(|c: &ControlAddr| tracing::info_span!("controller", addr = %c.addr))
.push(svc::NewMapErr::layer_from_target::<ControlError, _>())
.instrument(|c: &ControlAddr| info_span!("controller", addr = %c.addr))
.push_map_target(move |()| addr.clone())
.push_on_service(svc::BoxCloneSyncService::layer())
.push(svc::ArcNewService::layer())
.into_inner()
}
}
impl From<(&ControlAddr, Error)> for ControlError {
fn from((controller, source): (&ControlAddr, Error)) -> Self {
Self {
addr: controller.addr.clone(),
source,
}
}
}
impl From<(&self::client::Target, Error)> for EndpointError {
fn from((target, source): (&self::client::Target, Error)) -> Self {
Self {
addr: target.addr,
source,
}
}
}
/// Sets the request's URI from `Config`.
mod add_origin {
use super::ControlAddr;
use linkerd_stack::{layer, NewService};
use crate::svc::{layer, NewService};
use std::task::{Context, Poll};
pub fn layer<M>() -> impl layer::Layer<M, Service = NewAddOrigin<M>> + Clone {
@ -169,68 +243,88 @@ mod add_origin {
}
}
mod resolve {
use super::client::Target;
mod balance {
use super::{client::Target, ControlAddr};
use crate::{
dns,
proxy::{
discover,
dns_resolve::DnsResolve,
resolve::{map_endpoint, recover},
},
svc,
metrics::prom::encoding::EncodeLabelSet,
proxy::{dns_resolve::DnsResolve, http, resolve::recover},
svc, tls,
};
use linkerd_error::Recover;
use linkerd_stack::ExtractParam;
use std::net::SocketAddr;
pub fn layer<M, R>(
pub(super) type Metrics = http::balance::MetricFamilies<Labels>;
pub fn layer<B, R: Clone, N>(
metrics: Metrics,
dns: dns::Resolver,
recover: R,
) -> impl svc::Layer<M, Service = Discover<M, R>>
where
R: Recover + Clone,
R::Backoff: Unpin,
{
svc::layer::mk(move |endpoint| {
discover::resolve(
endpoint,
map_endpoint::Resolve::new(
IntoTarget(()),
recover::Resolve::new(recover.clone(), DnsResolve::new(dns.clone())),
),
) -> impl svc::Layer<
N,
Service = http::NewBalance<B, Params, recover::Resolve<R, DnsResolve>, NewIntoTarget<N>>,
> {
let resolve = recover::Resolve::new(recover, DnsResolve::new(dns));
svc::layer::mk(move |inner| {
http::NewBalance::new(
NewIntoTarget { inner },
resolve.clone(),
Params(metrics.clone()),
)
})
}
type Discover<M, R> = discover::MakeEndpoint<
discover::FromResolve<
map_endpoint::Resolve<IntoTarget, recover::Resolve<R, DnsResolve>>,
Target,
>,
M,
>;
#[derive(Clone, Debug)]
pub struct Params(http::balance::MetricFamilies<Labels>);
#[derive(Copy, Clone, Debug)]
pub struct IntoTarget(());
#[derive(Clone, Debug)]
pub struct NewIntoTarget<N> {
inner: N,
}
impl map_endpoint::MapEndpoint<super::ControlAddr, ()> for IntoTarget {
type Out = Target;
#[derive(Clone, Debug)]
pub struct IntoTarget<N> {
inner: N,
server_id: tls::ConditionalClientTls,
}
fn map_endpoint(&self, control: &super::ControlAddr, addr: SocketAddr, _: ()) -> Self::Out {
Target::new(addr, control.identity.clone())
#[derive(Clone, Debug, Hash, PartialEq, Eq, EncodeLabelSet)]
pub(super) struct Labels {
addr: String,
}
// === impl NewIntoTarget ===
impl<N: svc::NewService<ControlAddr>> svc::NewService<ControlAddr> for NewIntoTarget<N> {
type Service = IntoTarget<N::Service>;
fn new_service(&self, control: ControlAddr) -> Self::Service {
IntoTarget {
server_id: control.identity.clone(),
inner: self.inner.new_service(control),
}
}
}
}
mod balance {
use crate::proxy::http;
use std::time::Duration;
// === impl IntoTarget ===
const EWMA_DEFAULT_RTT: Duration = Duration::from_millis(30);
const EWMA_DECAY: Duration = Duration::from_secs(10);
impl<N: svc::NewService<Target>> svc::NewService<(SocketAddr, ())> for IntoTarget<N> {
type Service = N::Service;
pub fn layer<A, B>() -> http::balance::Layer<A, B> {
http::balance::layer(EWMA_DEFAULT_RTT, EWMA_DECAY)
fn new_service(&self, (addr, ()): (SocketAddr, ())) -> Self::Service {
self.inner
.new_service(Target::new(addr, self.server_id.clone()))
}
}
// === impl Metrics ===
impl ExtractParam<http::balance::Metrics, ControlAddr> for Params {
fn extract_param(&self, tgt: &ControlAddr) -> http::balance::Metrics {
self.0.metrics(&Labels {
addr: tgt.addr.to_string(),
})
}
}
}
@ -241,11 +335,7 @@ mod client {
svc, tls,
transport::{Remote, ServerAddr},
};
use linkerd_proxy_http::h2::Settings as H2Settings;
use std::{
net::SocketAddr,
task::{Context, Poll},
};
use std::net::SocketAddr;
#[derive(Clone, Hash, Debug, Eq, PartialEq)]
pub struct Target {
@ -259,11 +349,6 @@ mod client {
}
}
#[derive(Debug)]
pub struct Client<C, B> {
inner: http::h2::Connect<C, B>,
}
// === impl Target ===
impl svc::Param<Remote<ServerAddr>> for Target {
@ -286,47 +371,12 @@ mod client {
// === impl Layer ===
pub fn layer<C, B>() -> impl svc::Layer<C, Service = Client<C, B>> + Copy
pub fn layer<C, B>(
h2: http::h2::ClientParams,
) -> impl svc::Layer<C, Service = http::h2::Connect<C, B>> + Clone
where
http::h2::Connect<C, B>: tower::Service<Target>,
{
svc::layer::mk(|mk_conn| {
let inner = http::h2::Connect::new(mk_conn, H2Settings::default());
Client { inner }
})
}
// === impl Client ===
impl<C, B> tower::Service<Target> for Client<C, B>
where
http::h2::Connect<C, B>: tower::Service<Target>,
{
type Response = <http::h2::Connect<C, B> as tower::Service<Target>>::Response;
type Error = <http::h2::Connect<C, B> as tower::Service<Target>>::Error;
type Future = <http::h2::Connect<C, B> as tower::Service<Target>>::Future;
#[inline]
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
self.inner.poll_ready(cx)
}
#[inline]
fn call(&mut self, target: Target) -> Self::Future {
self.inner.call(target)
}
}
// A manual impl is needed since derive adds `B: Clone`, but that's just
// a PhantomData.
impl<C, B> Clone for Client<C, B>
where
http::h2::Connect<C, B>: Clone,
{
fn clone(&self) -> Self {
Client {
inner: self.inner.clone(),
}
}
svc::layer::mk(move |mk_conn| http::h2::Connect::new(mk_conn, h2.clone()))
}
}

View File

@ -0,0 +1,159 @@
//! A specialized `NewIdleCache` to manage discovery stae, usually from a
//! control plane client.
use futures::TryFutureExt;
use linkerd_error::Error;
use linkerd_idle_cache::{Cached, NewIdleCached};
use linkerd_stack::{
layer, queue, CloneParam, FutureService, MapErrBoxed, NewQueueWithoutTimeout, NewService,
Oneshot, Param, QueueWithoutTimeout, Service, ServiceExt, ThunkClone,
};
use std::{fmt, hash::Hash, task, time};
/// A [`NewService`] that extracts a `K`-typed key from each target to build a
/// [`Cached`]<[`DiscoverThunk`]>.
#[derive(Clone)]
pub struct NewCachedDiscover<K, D, N>
where
K: Clone + fmt::Debug + Eq + Hash + Send + Sync + 'static,
D: Service<K, Error = Error> + Clone + Send + Sync + 'static,
D::Response: Clone + Send + Sync,
D::Future: Send + Unpin,
{
// NewService<K, Service<(), D::Response>>
cache: NewIdleCached<K, NewQueueThunk<NewDiscoverThunk<D>>>,
// NewService<D::Response>
inner: N,
}
/// The future that drives discovery to build an new inner service wrapped
/// in the [`Cached`] decorator from the discovery lookup, preventing the
/// cache's idle timeout from starting until returned services are dropped.
#[derive(Debug)]
#[pin_project::pin_project]
pub struct CachedDiscoverFuture<D: Service<()>, N> {
// NewService<D::Response>
inner: N,
// Holds a cache handle so that we can carry that forward with the returned
// service.
cached: Cached<D>,
// A future that obtains a `D::Response` and produces an `N::Service`.
#[pin]
future: Oneshot<Cached<D>, ()>,
}
/// A [`Service<()>`] that uses a `D`-typed discovery service to build a new
/// inner service wrapped in the discovery service's cache handle.
pub type CachedDiscover<D, N, S> = FutureService<CachedDiscoverFuture<QueueThunk<D>, N>, Cached<S>>;
/// A [`Service<()>`] that discovers a `Rsp` and returns a clone of it for each
/// call.
pub type DiscoverThunk<Req, Rsp, S> = FutureService<
futures::future::MapOk<Oneshot<S, Req>, fn(Rsp) -> MapErrBoxed<ThunkClone<Rsp>>>,
MapErrBoxed<ThunkClone<Rsp>>,
>;
#[derive(Clone, Debug)]
struct NewDiscoverThunk<D> {
discover: D,
}
// We do not enforce any timeouts on discovery. Nor are we concerned with load
// shedding. `NewCachedDiscover` returns a `FutureService`, so the internal
// queue's capacity can exert backpressure into `Service::poll_ready`. This is
// a good thing. That service stack can determine its own load shedding and
// failfast semantics independently. The queue capacity is purely to avoid
// contention across clones.
type NewQueueThunk<D> = NewQueueWithoutTimeout<CloneParam<queue::Capacity>, (), D>;
type QueueThunk<D> = QueueWithoutTimeout<(), D>;
const QUEUE_CAPACITY: queue::Capacity = queue::Capacity(10);
// === impl NewCachedDiscover ===
impl<K, D, N> NewCachedDiscover<K, D, N>
where
K: Clone + fmt::Debug + Eq + Hash + Send + Sync + 'static,
D: Service<K, Error = Error> + Clone + Send + Sync + 'static,
D::Response: Clone + Send + Sync,
D::Future: Send + Unpin,
{
pub fn new(inner: N, discover: D, timeout: time::Duration) -> Self {
let queue = NewQueueThunk::new(
NewDiscoverThunk { discover },
CloneParam::from(QUEUE_CAPACITY),
);
Self {
inner,
cache: NewIdleCached::new(queue, timeout),
}
}
pub fn layer(disco: D, idle: time::Duration) -> impl layer::Layer<N, Service = Self> + Clone {
layer::mk(move |inner| Self::new(inner, disco.clone(), idle))
}
}
impl<T, K, D, M, N> NewService<T> for NewCachedDiscover<K, D, M>
where
T: Param<K> + Clone,
K: Clone + fmt::Debug + Eq + Hash + Send + Sync + 'static,
D: Service<K, Error = Error> + Clone + Send + Sync + 'static,
D::Response: Clone + Send + Sync + 'static,
D::Future: Send + Unpin,
M: NewService<T, Service = N> + Clone,
N: NewService<D::Response> + Clone + Send + 'static,
{
type Service = CachedDiscover<D::Response, N, N::Service>;
fn new_service(&self, target: T) -> Self::Service {
let key = target.param();
let cached = self.cache.new_service(key);
let inner = self.inner.new_service(target);
let future = cached.clone().oneshot(());
FutureService::new(CachedDiscoverFuture {
future,
cached,
inner,
})
}
}
// === impl NewDiscoverThunk ===
impl<T, D> NewService<T> for NewDiscoverThunk<D>
where
D: Service<T, Error = Error> + Clone,
D::Response: Clone,
D::Future: Unpin,
{
type Service = DiscoverThunk<T, D::Response, D>;
fn new_service(&self, target: T) -> Self::Service {
let disco = self.discover.clone().oneshot(target);
FutureService::new(disco.map_ok(|rsp| ThunkClone::new(rsp).into()))
}
}
// === impl DiscoverFUture ===
impl<D, N> std::future::Future for CachedDiscoverFuture<D, N>
where
D: Service<()>,
N: NewService<D::Response>,
{
type Output = Result<Cached<N::Service>, D::Error>;
fn poll(
self: std::pin::Pin<&mut Self>,
cx: &mut task::Context<'_>,
) -> task::Poll<Self::Output> {
let this = self.project();
let discovery = futures::ready!(this.future.poll(cx))?;
let inner = this.inner.new_service(discovery);
let cached = this.cached.clone_with(inner);
task::Poll::Ready(Ok(cached))
}
}

View File

@ -1,30 +1,55 @@
pub use linkerd_dns::*;
use std::path::PathBuf;
use self::metrics::Labels;
use linkerd_metrics::prom::{Counter, Family, Registry};
use std::time::Duration;
pub use linkerd_dns::*;
mod metrics;
#[derive(Clone, Debug)]
pub struct Config {
pub min_ttl: Option<Duration>,
pub max_ttl: Option<Duration>,
pub resolv_conf_path: PathBuf,
}
pub struct Dns {
pub resolver: Resolver,
resolver: Resolver,
resolutions: Family<Labels, Counter>,
}
// === impl Dns ===
impl Dns {
/// Returns a new [`Resolver`].
pub fn resolver(&self, client: &'static str) -> Resolver {
let metrics = self.metrics(client);
self.resolver.clone().with_metrics(metrics)
}
}
// === impl Config ===
impl Config {
pub fn build(self) -> Dns {
pub fn build(self, registry: &mut Registry) -> Dns {
let resolutions = Family::default();
registry.register(
"resolutions",
"Counts the number of DNS records that have been resolved.",
resolutions.clone(),
);
let resolver =
Resolver::from_system_config_with(&self).expect("system DNS config must be valid");
Dns { resolver }
Dns {
resolver,
resolutions,
}
}
}
impl ConfigureResolver for Config {
/// Modify a `trust-dns-resolver::config::ResolverOpts` to reflect
/// Modify a `hickory-resolver::config::ResolverOpts` to reflect
/// the configured minimum and maximum DNS TTL values.
fn configure_resolver(&self, opts: &mut ResolverOpts) {
opts.positive_min_ttl = self.min_ttl;

View File

@ -0,0 +1,115 @@
use super::{Dns, Metrics};
use linkerd_metrics::prom::encoding::{
EncodeLabel, EncodeLabelSet, EncodeLabelValue, LabelSetEncoder, LabelValueEncoder,
};
use std::fmt::{Display, Write};
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub(super) struct Labels {
client: &'static str,
record_type: RecordType,
result: Outcome,
}
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
enum RecordType {
A,
Srv,
}
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
enum Outcome {
Ok,
NotFound,
}
// === impl Dns ===
impl Dns {
pub(super) fn metrics(&self, client: &'static str) -> Metrics {
let family = &self.resolutions;
let a_records_resolved = (*family.get_or_create(&Labels {
client,
record_type: RecordType::A,
result: Outcome::Ok,
}))
.clone();
let a_records_not_found = (*family.get_or_create(&Labels {
client,
record_type: RecordType::A,
result: Outcome::NotFound,
}))
.clone();
let srv_records_resolved = (*family.get_or_create(&Labels {
client,
record_type: RecordType::Srv,
result: Outcome::Ok,
}))
.clone();
let srv_records_not_found = (*family.get_or_create(&Labels {
client,
record_type: RecordType::Srv,
result: Outcome::NotFound,
}))
.clone();
Metrics {
a_records_resolved,
a_records_not_found,
srv_records_resolved,
srv_records_not_found,
}
}
}
// === impl Labels ===
impl EncodeLabelSet for Labels {
fn encode(&self, mut encoder: LabelSetEncoder<'_>) -> Result<(), std::fmt::Error> {
let Self {
client,
record_type,
result,
} = self;
("client", *client).encode(encoder.encode_label())?;
("record_type", record_type).encode(encoder.encode_label())?;
("result", result).encode(encoder.encode_label())?;
Ok(())
}
}
// === impl Outcome ===
impl EncodeLabelValue for &Outcome {
fn encode(&self, encoder: &mut LabelValueEncoder<'_>) -> Result<(), std::fmt::Error> {
encoder.write_str(self.to_string().as_str())
}
}
impl Display for Outcome {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
Self::Ok => "ok",
Self::NotFound => "not_found",
})
}
}
// === impl RecordType ===
impl EncodeLabelValue for &RecordType {
fn encode(&self, encoder: &mut LabelValueEncoder<'_>) -> Result<(), std::fmt::Error> {
encoder.write_str(self.to_string().as_str())
}
}
impl Display for RecordType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
Self::A => "A/AAAA",
Self::Srv => "SRV",
})
}
}

View File

@ -1,28 +0,0 @@
use super::classify;
use crate::profiles;
use linkerd_http_classify::CanClassify;
use linkerd_proxy_http as http;
use linkerd_stack::Param;
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct Route {
pub addr: profiles::LogicalAddr,
pub route: profiles::http::Route,
pub direction: super::metrics::Direction,
}
// === impl Route ===
impl CanClassify for Route {
type Classify = classify::Request;
fn classify(&self) -> classify::Request {
self.route.response_classes().clone().into()
}
}
impl Param<http::ResponseTimeout> for Route {
fn param(&self) -> http::ResponseTimeout {
http::ResponseTimeout(self.route.timeout())
}
}

View File

@ -0,0 +1,55 @@
pub mod body;
pub mod respond;
pub use self::respond::{HttpRescue, NewRespond, NewRespondService, SyntheticHttpResponse};
pub use linkerd_error::{cause_ref, is_caused_by};
pub use linkerd_proxy_http::h2::H2Error;
pub use linkerd_stack::{FailFastError, LoadShedError};
pub use tonic::Code as Grpc;
/// Header names and values related to error responses.
pub mod header {
use http::header::{HeaderName, HeaderValue};
pub const L5D_PROXY_CONNECTION: HeaderName = HeaderName::from_static("l5d-proxy-connection");
pub const L5D_PROXY_ERROR: HeaderName = HeaderName::from_static("l5d-proxy-error");
pub(super) const GRPC_CONTENT_TYPE: HeaderValue = HeaderValue::from_static("application/grpc");
pub(super) const GRPC_MESSAGE: HeaderName = HeaderName::from_static("grpc-message");
pub(super) const GRPC_STATUS: HeaderName = HeaderName::from_static("grpc-status");
}
#[derive(Debug, thiserror::Error)]
#[error("connect timed out after {0:?}")]
pub struct ConnectTimeout(pub(crate) std::time::Duration);
/// Returns `true` if `error` was caused by a gRPC error with the provided
/// status code.
#[inline]
pub fn has_grpc_status(error: &crate::Error, code: tonic::Code) -> bool {
cause_ref::<tonic::Status>(error.as_ref())
.map(|s| s.code() == code)
.unwrap_or(false)
}
// Copied from tonic, where it's private.
fn code_header(code: tonic::Code) -> http::HeaderValue {
use {http::HeaderValue, tonic::Code};
match code {
Code::Ok => HeaderValue::from_static("0"),
Code::Cancelled => HeaderValue::from_static("1"),
Code::Unknown => HeaderValue::from_static("2"),
Code::InvalidArgument => HeaderValue::from_static("3"),
Code::DeadlineExceeded => HeaderValue::from_static("4"),
Code::NotFound => HeaderValue::from_static("5"),
Code::AlreadyExists => HeaderValue::from_static("6"),
Code::PermissionDenied => HeaderValue::from_static("7"),
Code::ResourceExhausted => HeaderValue::from_static("8"),
Code::FailedPrecondition => HeaderValue::from_static("9"),
Code::Aborted => HeaderValue::from_static("10"),
Code::OutOfRange => HeaderValue::from_static("11"),
Code::Unimplemented => HeaderValue::from_static("12"),
Code::Internal => HeaderValue::from_static("13"),
Code::Unavailable => HeaderValue::from_static("14"),
Code::DataLoss => HeaderValue::from_static("15"),
Code::Unauthenticated => HeaderValue::from_static("16"),
}
}

View File

@ -0,0 +1,314 @@
use super::{
header::{GRPC_MESSAGE, GRPC_STATUS},
respond::{HttpRescue, SyntheticHttpResponse},
};
use http::header::HeaderValue;
use http_body::Frame;
use linkerd_error::{Error, Result};
use pin_project::pin_project;
use std::{
pin::Pin,
task::{Context, Poll},
};
use tracing::{debug, warn};
/// Returns a "gRPC rescue" body.
///
/// This returns a body that, should the inner `B`-typed body return an error when polling for
/// DATA frames, will "rescue" the stream and return a TRAILERS frame that describes the error.
#[pin_project(project = ResponseBodyProj)]
pub struct ResponseBody<R, B>(#[pin] Inner<R, B>);
#[pin_project(project = InnerProj)]
enum Inner<R, B> {
/// An inert body that delegates directly down to the underlying body `B`.
Passthru(#[pin] B),
/// A body that will be rescued if it yields an error.
GrpcRescue {
#[pin]
inner: B,
/// An error response [strategy][HttpRescue].
rescue: R,
emit_headers: bool,
},
/// The underlying body `B` yielded an error and was "rescued".
Rescued,
}
// === impl ResponseBody ===
impl<R, B> ResponseBody<R, B> {
/// Returns a body in "passthru" mode.
pub fn passthru(inner: B) -> Self {
Self(Inner::Passthru(inner))
}
/// Returns a "gRPC rescue" body.
pub fn grpc_rescue(inner: B, rescue: R, emit_headers: bool) -> Self {
Self(Inner::GrpcRescue {
inner,
rescue,
emit_headers,
})
}
}
impl<R, B: Default + linkerd_proxy_http::Body> Default for ResponseBody<R, B> {
fn default() -> Self {
Self(Inner::Passthru(B::default()))
}
}
impl<R, B> linkerd_proxy_http::Body for ResponseBody<R, B>
where
B: linkerd_proxy_http::Body<Error = Error>,
R: HttpRescue<B::Error>,
{
type Data = B::Data;
type Error = B::Error;
fn poll_frame(
mut self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Option<std::result::Result<http_body::Frame<Self::Data>, Self::Error>>> {
let ResponseBodyProj(inner) = self.as_mut().project();
match inner.project() {
InnerProj::Passthru(inner) => inner.poll_frame(cx),
InnerProj::GrpcRescue {
inner,
rescue,
emit_headers,
} => match inner.poll_frame(cx) {
Poll::Ready(Some(Err(error))) => {
// The inner body has yielded an error, which we will try to rescue. If so,
// yield synthetic trailers reporting the error.
let trailers = Self::rescue(error, rescue, *emit_headers)?;
self.set(Self(Inner::Rescued));
Poll::Ready(Some(Ok(Frame::trailers(trailers))))
}
poll => poll,
},
InnerProj::Rescued => Poll::Ready(None),
}
}
#[inline]
fn is_end_stream(&self) -> bool {
let Self(inner) = self;
match inner {
Inner::Passthru(inner) => inner.is_end_stream(),
Inner::GrpcRescue { inner, .. } => inner.is_end_stream(),
Inner::Rescued => true,
}
}
#[inline]
fn size_hint(&self) -> http_body::SizeHint {
let Self(inner) = self;
match inner {
Inner::Passthru(inner) => inner.size_hint(),
Inner::GrpcRescue { inner, .. } => inner.size_hint(),
Inner::Rescued => http_body::SizeHint::with_exact(0),
}
}
}
impl<R, B> ResponseBody<R, B>
where
B: http_body::Body,
R: HttpRescue<B::Error>,
{
/// Maps an error yielded by the inner body to a collection of gRPC trailers.
///
/// This function returns `Ok(trailers)` if the given [`HttpRescue<E>`] strategy could identify
/// a cause for an error yielded by the inner `B`-typed body.
fn rescue(
error: B::Error,
rescue: &R,
emit_headers: bool,
) -> Result<http::HeaderMap, B::Error> {
let SyntheticHttpResponse {
grpc_status,
message,
..
} = rescue.rescue(error)?;
debug!(grpc.status = ?grpc_status, "Synthesizing gRPC trailers");
let mut t = http::HeaderMap::new();
t.insert(GRPC_STATUS, super::code_header(grpc_status));
if emit_headers {
// A gRPC message trailer is only included if instructed to emit additional headers.
t.insert(
GRPC_MESSAGE,
HeaderValue::from_str(&message).unwrap_or_else(|error| {
warn!(%error, "Failed to encode error header");
HeaderValue::from_static("Unexpected error")
}),
);
}
Ok(t)
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::errors::header::{GRPC_MESSAGE, GRPC_STATUS};
use http::HeaderMap;
use linkerd_mock_http_body::MockBody;
struct MockRescue;
impl<E> HttpRescue<E> for MockRescue {
/// Attempts to synthesize a response from the given error.
fn rescue(&self, _: E) -> Result<SyntheticHttpResponse, E> {
let synthetic = SyntheticHttpResponse::internal_error("MockRescue::rescue");
Ok(synthetic)
}
}
#[tokio::test]
async fn rescue_body_recovers_from_error_without_grpc_message() {
let (_guard, _handle) = linkerd_tracing::test::trace_init();
let trailers = {
let mut trls = HeaderMap::with_capacity(1);
let value = HeaderValue::from_static("caboose");
trls.insert("trailer", value);
trls
};
let rescue = {
let inner = MockBody::default()
.then_yield_data(Poll::Ready(Some(Ok("inter".into()))))
.then_yield_data(Poll::Ready(Some(Err("an error midstream".into()))))
.then_yield_data(Poll::Ready(Some(Ok("rupted".into()))))
.then_yield_trailer(Poll::Ready(Some(Ok(trailers))));
let rescue = MockRescue;
let emit_headers = false;
ResponseBody::grpc_rescue(inner, rescue, emit_headers)
};
let (data, Some(trailers)) = body_to_string(rescue).await else {
panic!("trailers should exist");
};
assert_eq!(data, "inter");
assert_eq!(
trailers[GRPC_STATUS],
i32::from(tonic::Code::Internal).to_string()
);
assert_eq!(trailers.get(GRPC_MESSAGE), None);
}
#[tokio::test]
async fn rescue_body_recovers_from_error_emitting_message() {
let (_guard, _handle) = linkerd_tracing::test::trace_init();
let trailers = {
let mut trls = HeaderMap::with_capacity(1);
let value = HeaderValue::from_static("caboose");
trls.insert("trailer", value);
trls
};
let rescue = {
let inner = MockBody::default()
.then_yield_data(Poll::Ready(Some(Ok("inter".into()))))
.then_yield_data(Poll::Ready(Some(Err("an error midstream".into()))))
.then_yield_data(Poll::Ready(Some(Ok("rupted".into()))))
.then_yield_trailer(Poll::Ready(Some(Ok(trailers))));
let rescue = MockRescue;
let emit_headers = true;
ResponseBody::grpc_rescue(inner, rescue, emit_headers)
};
let (data, Some(trailers)) = body_to_string(rescue).await else {
panic!("trailers should exist");
};
assert_eq!(data, "inter");
assert_eq!(
trailers[GRPC_STATUS],
i32::from(tonic::Code::Internal).to_string()
);
assert_eq!(trailers[GRPC_MESSAGE], "MockRescue::rescue");
}
#[tokio::test]
async fn rescue_body_works_for_empty() {
let (_guard, _handle) = linkerd_tracing::test::trace_init();
let rescue = {
let inner = MockBody::default();
let rescue = MockRescue;
let emit_headers = false;
ResponseBody::grpc_rescue(inner, rescue, emit_headers)
};
let (data, trailers) = body_to_string(rescue).await;
assert_eq!(data, "");
assert_eq!(trailers, None);
}
#[tokio::test]
async fn rescue_body_works_for_body_with_data() {
let (_guard, _handle) = linkerd_tracing::test::trace_init();
let rescue = {
let inner = MockBody::default().then_yield_data(Poll::Ready(Some(Ok("unary".into()))));
let rescue = MockRescue;
let emit_headers = false;
ResponseBody::grpc_rescue(inner, rescue, emit_headers)
};
let (data, trailers) = body_to_string(rescue).await;
assert_eq!(data, "unary");
assert_eq!(trailers, None);
}
#[tokio::test]
async fn rescue_body_works_for_body_with_trailers() {
let (_guard, _handle) = linkerd_tracing::test::trace_init();
let trailers = {
let mut trls = HeaderMap::with_capacity(1);
let value = HeaderValue::from_static("caboose");
trls.insert("trailer", value);
trls
};
let rescue = {
let inner = MockBody::default().then_yield_trailer(Poll::Ready(Some(Ok(trailers))));
let rescue = MockRescue;
let emit_headers = false;
ResponseBody::grpc_rescue(inner, rescue, emit_headers)
};
let (data, trailers) = body_to_string(rescue).await;
assert_eq!(data, "");
assert_eq!(trailers.expect("has trailers")["trailer"], "caboose");
}
async fn body_to_string<B>(mut body: B) -> (String, Option<HeaderMap>)
where
B: http_body::Body + Unpin,
B::Error: std::fmt::Debug,
{
use http_body_util::BodyExt;
let mut data = String::new();
let mut trailers = None;
// Continue reading frames from the body until it is finished.
while let Some(frame) = body
.frame()
.await
.transpose()
.expect("reading a frame succeeds")
{
match frame.into_data().map(|mut buf| {
use bytes::Buf;
let bytes = buf.copy_to_bytes(buf.remaining());
String::from_utf8(bytes.to_vec()).unwrap()
}) {
Ok(ref s) => data.push_str(s),
Err(frame) => {
let trls = frame
.into_trailers()
.map_err(drop)
.expect("test frame is either data or trailers");
trailers = Some(trls);
}
}
}
tracing::info!(?data, ?trailers, "finished reading body");
(data, trailers)
}
}

View File

@ -1,21 +0,0 @@
pub mod respond;
pub use self::respond::{HttpRescue, NewRespond, NewRespondService, SyntheticHttpResponse};
pub use linkerd_proxy_http::h2::H2Error;
pub use linkerd_stack::FailFastError;
use thiserror::Error;
pub use tonic::Code as Grpc;
#[derive(Debug, Error)]
#[error("connect timed out after {0:?}")]
pub struct ConnectTimeout(pub(crate) std::time::Duration);
/// Obtain the source error at the end of a chain of `Error`s.
pub fn root_cause<'e>(
mut error: &'e (dyn std::error::Error + 'static),
) -> &'e (dyn std::error::Error + 'static) {
while let Some(e) = error.source() {
error = e;
}
error
}

View File

@ -1,20 +1,16 @@
use super::{
body::ResponseBody,
header::{GRPC_CONTENT_TYPE, GRPC_MESSAGE, GRPC_STATUS, L5D_PROXY_CONNECTION, L5D_PROXY_ERROR},
};
use crate::svc;
use http::header::HeaderValue;
use http::header::{HeaderValue, LOCATION};
use linkerd_error::{Error, Result};
use linkerd_error_respond as respond;
pub use linkerd_proxy_http::{ClientHandle, HasH2Reason};
use linkerd_proxy_http::{orig_proto, ClientHandle};
use linkerd_stack::ExtractParam;
use pin_project::pin_project;
use std::{
borrow::Cow,
pin::Pin,
task::{Context, Poll},
};
use std::borrow::Cow;
use tracing::{debug, info_span, warn};
pub const L5D_PROXY_CONNECTION: &str = "l5d-proxy-connection";
pub const L5D_PROXY_ERROR: &str = "l5d-proxy-error";
pub fn layer<R, P: Clone, N>(
params: P,
) -> impl svc::layer::Layer<N, Service = NewRespondService<R, P, N>> + Clone {
@ -33,9 +29,10 @@ pub trait HttpRescue<E> {
#[derive(Clone, Debug)]
pub struct SyntheticHttpResponse {
pub grpc_status: tonic::Code,
pub http_status: http::StatusCode,
pub close_connection: bool,
http_status: http::StatusCode,
close_connection: bool,
pub message: Cow<'static, str>,
location: Option<HeaderValue>,
}
#[derive(Copy, Clone, Debug)]
@ -55,26 +52,11 @@ pub struct Respond<R> {
rescue: R,
version: http::Version,
is_grpc: bool,
is_orig_proto_upgrade: bool,
client: Option<ClientHandle>,
emit_headers: bool,
}
#[pin_project(project = ResponseBodyProj)]
pub enum ResponseBody<R, B> {
Passthru(#[pin] B),
GrpcRescue {
#[pin]
inner: B,
trailers: Option<http::HeaderMap>,
rescue: R,
emit_headers: bool,
},
}
const GRPC_CONTENT_TYPE: &str = "application/grpc";
const GRPC_STATUS: &str = "grpc-status";
const GRPC_MESSAGE: &str = "grpc-message";
// === impl HttpRescue ===
impl<E, F> HttpRescue<E> for F
@ -90,11 +72,16 @@ where
impl SyntheticHttpResponse {
pub fn unexpected_error() -> Self {
Self::internal_error("unexpected error")
}
pub fn internal_error(msg: impl Into<Cow<'static, str>>) -> Self {
Self {
close_connection: true,
http_status: http::StatusCode::INTERNAL_SERVER_ERROR,
grpc_status: tonic::Code::Internal,
message: Cow::Borrowed("unexpected error"),
message: msg.into(),
location: None,
}
}
@ -104,6 +91,7 @@ impl SyntheticHttpResponse {
http_status: http::StatusCode::BAD_GATEWAY,
grpc_status: tonic::Code::Unavailable,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
@ -111,8 +99,29 @@ impl SyntheticHttpResponse {
Self {
close_connection: true,
http_status: http::StatusCode::GATEWAY_TIMEOUT,
grpc_status: tonic::Code::DeadlineExceeded,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
pub fn gateway_timeout_nonfatal(msg: impl ToString) -> Self {
Self {
close_connection: false,
http_status: http::StatusCode::GATEWAY_TIMEOUT,
grpc_status: tonic::Code::DeadlineExceeded,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
pub fn unavailable(msg: impl ToString) -> Self {
Self {
close_connection: true,
http_status: http::StatusCode::SERVICE_UNAVAILABLE,
grpc_status: tonic::Code::Unavailable,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
@ -122,6 +131,7 @@ impl SyntheticHttpResponse {
grpc_status: tonic::Code::Unauthenticated,
close_connection: false,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
@ -131,6 +141,17 @@ impl SyntheticHttpResponse {
grpc_status: tonic::Code::PermissionDenied,
close_connection: false,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
pub fn rate_limited(msg: impl ToString) -> Self {
Self {
http_status: http::StatusCode::TOO_MANY_REQUESTS,
grpc_status: tonic::Code::ResourceExhausted,
close_connection: false,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
@ -140,6 +161,7 @@ impl SyntheticHttpResponse {
grpc_status: tonic::Code::Aborted,
close_connection: true,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
@ -149,6 +171,40 @@ impl SyntheticHttpResponse {
grpc_status: tonic::Code::NotFound,
close_connection: false,
message: Cow::Owned(msg.to_string()),
location: None,
}
}
pub fn redirect(http_status: http::StatusCode, location: &http::Uri) -> Self {
Self {
http_status,
grpc_status: tonic::Code::NotFound,
close_connection: false,
message: Cow::Borrowed("redirected"),
location: Some(
HeaderValue::try_from(location.to_string())
.expect("location must be a valid header value"),
),
}
}
pub fn response(http_status: http::StatusCode, message: impl Into<Cow<'static, str>>) -> Self {
Self {
http_status,
location: None,
grpc_status: tonic::Code::FailedPrecondition,
close_connection: false,
message: message.into(),
}
}
pub fn grpc(grpc_status: tonic::Code, message: impl Into<Cow<'static, str>>) -> Self {
Self {
grpc_status,
http_status: http::StatusCode::OK,
location: None,
close_connection: false,
message: message.into(),
}
}
@ -156,7 +212,7 @@ impl SyntheticHttpResponse {
fn message(&self) -> HeaderValue {
match self.message {
Cow::Borrowed(msg) => HeaderValue::from_static(msg),
Cow::Owned(ref msg) => HeaderValue::from_str(&*msg).unwrap_or_else(|error| {
Cow::Owned(ref msg) => HeaderValue::from_str(msg).unwrap_or_else(|error| {
warn!(%error, "Failed to encode error header");
HeaderValue::from_static("unexpected error")
}),
@ -170,7 +226,7 @@ impl SyntheticHttpResponse {
.version(http::Version::HTTP_2)
.header(http::header::CONTENT_LENGTH, "0")
.header(http::header::CONTENT_TYPE, GRPC_CONTENT_TYPE)
.header(GRPC_STATUS, code_header(self.grpc_status));
.header(GRPC_STATUS, super::code_header(self.grpc_status));
if emit_headers {
rsp = rsp
@ -192,8 +248,14 @@ impl SyntheticHttpResponse {
&self,
version: http::Version,
emit_headers: bool,
is_orig_proto_upgrade: bool,
) -> http::Response<B> {
debug!(status = %self.http_status, ?version, close = %self.close_connection, "Handling error on HTTP connection");
debug!(
status = %self.http_status,
?version,
close = %self.close_connection,
"Handling error on HTTP connection"
);
let mut rsp = http::Response::builder()
.status(self.http_status)
.version(version)
@ -204,7 +266,7 @@ impl SyntheticHttpResponse {
}
if self.close_connection {
if version == http::Version::HTTP_11 {
if version == http::Version::HTTP_11 && !is_orig_proto_upgrade {
// Notify the (proxy or non-proxy) client that the connection will be closed.
rsp = rsp.header(http::header::CONNECTION, "close");
}
@ -217,6 +279,10 @@ impl SyntheticHttpResponse {
}
}
if let Some(loc) = &self.location {
rsp = rsp.header(LOCATION, loc);
}
rsp.body(B::default())
.expect("error response must be valid")
}
@ -259,23 +325,36 @@ where
let is_grpc = req
.headers()
.get(http::header::CONTENT_TYPE)
.and_then(|v| v.to_str().ok().map(|s| s.starts_with(GRPC_CONTENT_TYPE)))
.and_then(|v| {
v.to_str().ok().map(|s| {
s.starts_with(
GRPC_CONTENT_TYPE
.to_str()
.expect("GRPC_CONTENT_TYPE only contains visible ASCII"),
)
})
})
.unwrap_or(false);
Respond {
client,
rescue,
is_grpc,
is_orig_proto_upgrade: false,
version: http::Version::HTTP_2,
emit_headers,
}
}
version => Respond {
client,
rescue,
version,
is_grpc: false,
emit_headers,
},
version => {
let is_h2_upgrade = req.extensions().get::<orig_proto::WasUpgrade>().is_some();
Respond {
client,
rescue,
version,
is_grpc: false,
is_orig_proto_upgrade: is_h2_upgrade,
emit_headers,
}
}
}
}
}
@ -296,7 +375,7 @@ impl<R> Respond<R> {
impl<B, R> respond::Respond<http::Response<B>, Error> for Respond<R>
where
B: Default + hyper::body::HttpBody,
B: Default + linkerd_proxy_http::Body,
R: HttpRescue<Error> + Clone,
{
type Response = http::Response<ResponseBody<R, B>>;
@ -304,26 +383,26 @@ where
fn respond(&self, res: Result<http::Response<B>>) -> Result<Self::Response> {
let error = match res {
Ok(rsp) => {
return Ok(rsp.map(|b| match self {
return Ok(rsp.map(|inner| match self {
Respond {
is_grpc: true,
rescue,
emit_headers,
..
} => ResponseBody::GrpcRescue {
inner: b,
trailers: None,
rescue: rescue.clone(),
emit_headers: *emit_headers,
},
_ => ResponseBody::Passthru(b),
} => ResponseBody::grpc_rescue(inner, rescue.clone(), *emit_headers),
_ => ResponseBody::passthru(inner),
}));
}
Err(error) => error,
};
let rsp = info_span!("rescue", client.addr = %self.client_addr()).in_scope(|| {
tracing::info!(%error, "Request failed");
if !self.is_grpc {
let version = self.version;
tracing::info!(error, "{version:?} request failed",);
} else {
tracing::info!(error, "gRPC request failed");
};
self.rescue.rescue(error)
})?;
@ -338,133 +417,9 @@ where
let rsp = if self.is_grpc {
rsp.grpc_response(self.emit_headers)
} else {
rsp.http_response(self.version, self.emit_headers)
rsp.http_response(self.version, self.emit_headers, self.is_orig_proto_upgrade)
};
Ok(rsp)
}
}
// === impl ResponseBody ===
impl<R, B: Default + hyper::body::HttpBody> Default for ResponseBody<R, B> {
fn default() -> Self {
ResponseBody::Passthru(B::default())
}
}
impl<R, B> hyper::body::HttpBody for ResponseBody<R, B>
where
B: hyper::body::HttpBody<Error = Error>,
R: HttpRescue<B::Error>,
{
type Data = B::Data;
type Error = B::Error;
fn poll_data(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Option<Result<Self::Data, Self::Error>>> {
match self.project() {
ResponseBodyProj::Passthru(inner) => inner.poll_data(cx),
ResponseBodyProj::GrpcRescue {
inner,
trailers,
rescue,
emit_headers,
} => {
// should not be calling poll_data if we have set trailers derived from an error
assert!(trailers.is_none());
match inner.poll_data(cx) {
Poll::Ready(Some(Err(error))) => {
let SyntheticHttpResponse {
grpc_status,
message,
..
} = rescue.rescue(error)?;
let t = Self::grpc_trailers(grpc_status, &*message, *emit_headers);
*trailers = Some(t);
Poll::Ready(None)
}
data => data,
}
}
}
}
#[inline]
fn poll_trailers(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<Option<http::HeaderMap>, Self::Error>> {
match self.project() {
ResponseBodyProj::Passthru(inner) => inner.poll_trailers(cx),
ResponseBodyProj::GrpcRescue {
inner, trailers, ..
} => match trailers.take() {
Some(t) => Poll::Ready(Ok(Some(t))),
None => inner.poll_trailers(cx),
},
}
}
#[inline]
fn is_end_stream(&self) -> bool {
match self {
Self::Passthru(inner) => inner.is_end_stream(),
Self::GrpcRescue {
inner, trailers, ..
} => trailers.is_none() && inner.is_end_stream(),
}
}
#[inline]
fn size_hint(&self) -> http_body::SizeHint {
match self {
Self::Passthru(inner) => inner.size_hint(),
Self::GrpcRescue { inner, .. } => inner.size_hint(),
}
}
}
impl<R, B> ResponseBody<R, B> {
fn grpc_trailers(code: tonic::Code, message: &str, emit_headers: bool) -> http::HeaderMap {
debug!(grpc.status = ?code, "Synthesizing gRPC trailers");
let mut t = http::HeaderMap::new();
t.insert(GRPC_STATUS, code_header(code));
if emit_headers {
t.insert(
GRPC_MESSAGE,
HeaderValue::from_str(message).unwrap_or_else(|error| {
warn!(%error, "Failed to encode error header");
HeaderValue::from_static("Unexpected error")
}),
);
}
t
}
}
// Copied from tonic, where it's private.
fn code_header(code: tonic::Code) -> HeaderValue {
use tonic::Code;
match code {
Code::Ok => HeaderValue::from_static("0"),
Code::Cancelled => HeaderValue::from_static("1"),
Code::Unknown => HeaderValue::from_static("2"),
Code::InvalidArgument => HeaderValue::from_static("3"),
Code::DeadlineExceeded => HeaderValue::from_static("4"),
Code::NotFound => HeaderValue::from_static("5"),
Code::AlreadyExists => HeaderValue::from_static("6"),
Code::PermissionDenied => HeaderValue::from_static("7"),
Code::ResourceExhausted => HeaderValue::from_static("8"),
Code::FailedPrecondition => HeaderValue::from_static("9"),
Code::Aborted => HeaderValue::from_static("10"),
Code::OutOfRange => HeaderValue::from_static("11"),
Code::Unimplemented => HeaderValue::from_static("12"),
Code::Internal => HeaderValue::from_static("13"),
Code::Unavailable => HeaderValue::from_static("14"),
Code::DataLoss => HeaderValue::from_static("15"),
Code::Unauthenticated => HeaderValue::from_static("16"),
}
}

View File

@ -1,139 +1,76 @@
use linkerd_error::Error;
use linkerd_opencensus::proto::trace::v1 as oc;
use linkerd_stack::layer;
use linkerd_trace_context::{self as trace_context, TraceContext};
use std::{collections::HashMap, sync::Arc};
use thiserror::Error;
use linkerd_trace_context::{
self as trace_context,
export::{ExportSpan, SpanKind, SpanLabels},
Span, TraceContext,
};
use std::{str::FromStr, sync::Arc};
use tokio::sync::mpsc;
pub type OpenCensusSink = Option<mpsc::Sender<oc::Span>>;
pub type Labels = Arc<HashMap<String, String>>;
/// SpanConverter converts trace_context::Span objects into OpenCensus agent
/// protobuf span objects. SpanConverter receives trace_context::Span objects by
/// implmenting the SpanSink trait. For each span that it receives, it converts
/// it to an OpenCensus span and then sends it on the provided mpsc::Sender.
#[derive(Clone)]
pub struct SpanConverter {
kind: Kind,
sink: mpsc::Sender<oc::Span>,
labels: Labels,
#[derive(Debug, Copy, Clone, Default)]
pub enum CollectorProtocol {
#[default]
OpenCensus,
OpenTelemetry,
}
#[derive(Debug, Error)]
#[error("ID '{:?} should have {} bytes, but it has {}", self.id, self.expected_size, self.actual_size)]
pub struct IdLengthError {
id: Vec<u8>,
expected_size: usize,
actual_size: usize,
impl FromStr for CollectorProtocol {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
if s.eq_ignore_ascii_case("opencensus") {
Ok(Self::OpenCensus)
} else if s.eq_ignore_ascii_case("opentelemetry") {
Ok(Self::OpenTelemetry)
} else {
Err(())
}
}
}
pub type SpanSink = mpsc::Sender<ExportSpan>;
pub fn server<S>(
sink: OpenCensusSink,
labels: impl Into<Labels>,
sink: Option<SpanSink>,
labels: impl Into<SpanLabels>,
) -> impl layer::Layer<S, Service = TraceContext<Option<SpanConverter>, S>> + Clone {
SpanConverter::layer(Kind::Server, sink, labels)
TraceContext::layer(sink.map(move |sink| SpanConverter {
kind: SpanKind::Server,
sink,
labels: labels.into(),
}))
}
pub fn client<S>(
sink: OpenCensusSink,
labels: impl Into<Labels>,
sink: Option<SpanSink>,
labels: impl Into<SpanLabels>,
) -> impl layer::Layer<S, Service = TraceContext<Option<SpanConverter>, S>> + Clone {
SpanConverter::layer(Kind::Client, sink, labels)
TraceContext::layer(sink.map(move |sink| SpanConverter {
kind: SpanKind::Client,
sink,
labels: labels.into(),
}))
}
#[derive(Copy, Clone, Debug, PartialEq)]
enum Kind {
Server = 1,
Client = 2,
}
impl SpanConverter {
fn layer<S>(
kind: Kind,
sink: OpenCensusSink,
labels: impl Into<Labels>,
) -> impl layer::Layer<S, Service = TraceContext<Option<Self>, S>> + Clone {
TraceContext::layer(sink.map(move |sink| Self {
kind,
sink,
labels: labels.into(),
}))
}
fn mk_span(&self, mut span: trace_context::Span) -> Result<oc::Span, IdLengthError> {
let mut attributes = HashMap::<String, oc::AttributeValue>::new();
for (k, v) in self.labels.iter() {
attributes.insert(
k.clone(),
oc::AttributeValue {
value: Some(oc::attribute_value::Value::StringValue(truncatable(
v.clone(),
))),
},
);
}
for (k, v) in span.labels.drain() {
attributes.insert(
k.to_string(),
oc::AttributeValue {
value: Some(oc::attribute_value::Value::StringValue(truncatable(v))),
},
);
}
Ok(oc::Span {
trace_id: into_bytes(span.trace_id, 16)?,
span_id: into_bytes(span.span_id, 8)?,
tracestate: None,
parent_span_id: into_bytes(span.parent_id, 8)?,
name: Some(truncatable(span.span_name)),
kind: self.kind as i32,
start_time: Some(span.start.into()),
end_time: Some(span.end.into()),
attributes: Some(oc::span::Attributes {
attribute_map: attributes,
dropped_attributes_count: 0,
}),
stack_trace: None,
time_events: None,
links: None,
status: None, // TODO: this is gRPC status; we must read response trailers to populate this
resource: None,
same_process_as_parent_span: Some(self.kind == Kind::Client),
child_span_count: None,
})
}
#[derive(Clone)]
pub struct SpanConverter {
kind: SpanKind,
sink: SpanSink,
labels: SpanLabels,
}
impl trace_context::SpanSink for SpanConverter {
#[inline]
fn is_enabled(&self) -> bool {
true
}
fn try_send(&mut self, span: trace_context::Span) -> Result<(), Error> {
let span = self.mk_span(span)?;
self.sink.try_send(span).map_err(Into::into)
}
}
fn into_bytes(id: trace_context::Id, size: usize) -> Result<Vec<u8>, IdLengthError> {
let bytes: Vec<u8> = id.into();
if bytes.len() == size {
Ok(bytes)
} else {
let actual_size = bytes.len();
Err(IdLengthError {
id: bytes,
expected_size: size,
actual_size,
})
}
}
fn truncatable(value: String) -> oc::TruncatableString {
oc::TruncatableString {
value,
truncated_byte_count: 0,
fn try_send(&mut self, span: Span) -> Result<(), Error> {
self.sink.try_send(ExportSpan {
span,
kind: self.kind,
labels: Arc::clone(&self.labels),
})?;
Ok(())
}
}

View File

@ -7,22 +7,40 @@
//! - Tap
//! - Metric labeling
#![deny(warnings, rust_2018_idioms)]
#![deny(rust_2018_idioms, clippy::disallowed_methods, clippy::disallowed_types)]
#![allow(opaque_hidden_inferred_bound)]
#![forbid(unsafe_code)]
use thiserror::Error;
mod build_info;
pub mod classify;
pub mod config;
pub mod control;
pub mod disco_cache;
pub mod dns;
pub mod errors;
pub mod http_tracing;
pub mod metrics;
pub mod proxy;
pub mod serve;
pub mod svc;
pub mod tls_info;
pub mod transport;
pub use self::build_info::{BuildInfo, BUILD_INFO};
pub use drain;
pub use ipnet::{IpNet, Ipv4Net, Ipv6Net};
pub use linkerd_addr::{self as addr, Addr, NameAddr};
pub use linkerd_cache as cache;
pub use linkerd_addr::{self as addr, Addr, AddrMatch, IpMatch, NameAddr, NameMatch};
pub use linkerd_conditional::Conditional;
pub use linkerd_detect as detect;
pub use linkerd_dns;
pub use linkerd_error::{is_error, Error, Infallible, Recover, Result};
pub use linkerd_error::{cause_ref, is_caused_by, Error, Infallible, Recover, Result};
pub use linkerd_exp_backoff as exp_backoff;
pub use linkerd_http_metrics as http_metrics;
pub use linkerd_identity as identity;
pub use linkerd_idle_cache as idle_cache;
pub use linkerd_io as io;
pub use linkerd_opencensus as opencensus;
pub use linkerd_opentelemetry as opentelemetry;
pub use linkerd_service_profiles as profiles;
pub use linkerd_stack_metrics as stack_metrics;
pub use linkerd_stack_tracing as stack_tracing;
@ -30,25 +48,14 @@ pub use linkerd_tls as tls;
pub use linkerd_tracing as trace;
pub use linkerd_transport_header as transport_header;
use thiserror::Error;
mod addr_match;
pub mod classify;
pub mod config;
pub mod control;
pub mod dns;
pub mod dst;
pub mod errors;
pub mod http_tracing;
pub mod metrics;
pub mod proxy;
pub mod retry;
pub mod serve;
pub mod svc;
pub mod telemetry;
pub mod transport;
pub use self::addr_match::{AddrMatch, IpMatch, NameMatch};
pub mod identity {
pub use linkerd_identity::*;
pub use linkerd_meshtls::*;
pub mod client {
pub use linkerd_proxy_identity_client as linkerd;
pub use linkerd_proxy_spire_client as spire;
}
}
pub const CANONICAL_DST_HEADER: &str = "l5d-dst-canonical";
@ -56,10 +63,10 @@ const DEFAULT_PORT: u16 = 80;
#[derive(Clone, Debug)]
pub struct ProxyRuntime {
pub identity: Option<proxy::identity::LocalCrtKey>,
pub identity: identity::creds::Receiver,
pub metrics: metrics::Proxy,
pub tap: proxy::tap::Registry,
pub span_sink: http_tracing::OpenCensusSink,
pub span_sink: Option<http_tracing::SpanSink>,
pub drain: drain::Watch,
}
@ -71,9 +78,9 @@ pub fn http_request_authority_addr<B>(req: &http::Request<B>) -> Result<Addr, ad
}
pub fn http_request_host_addr<B>(req: &http::Request<B>) -> Result<Addr, addr::Error> {
use crate::proxy::http::h1;
use crate::proxy::http;
h1::authority_from_host(req)
http::authority_from_header(req, http::header::HOST)
.ok_or(addr::Error::InvalidHost)
.and_then(|a| Addr::from_authority_and_default_port(&a, DEFAULT_PORT))
}

View File

@ -0,0 +1,538 @@
//! This module provides most of the metrics infrastructure for both inbound &
//! outbound proxies.
//!
//! This is less than ideal. Instead of having common metrics with differing
//! labels for inbound & outbound, we should instead have distinct metrics for
//! each case. And the metric registries should be instantiated in the
//! inbound/outbound crates, etc.
pub use crate::transport::labels::{TargetAddr, TlsAccept};
use crate::{
classify::Class,
control, http_metrics, opencensus, opentelemetry, profiles, proxy, stack_metrics, svc, tls,
transport::{self, labels::TlsConnect},
};
use linkerd_addr::Addr;
pub use linkerd_metrics::*;
use linkerd_proxy_server_policy as policy;
use prometheus_client::encoding::{EncodeLabelSet, EncodeLabelValue};
use std::{
fmt::{self, Write},
net::SocketAddr,
sync::Arc,
time::Duration,
};
pub type ControlHttp = http_metrics::Requests<ControlLabels, Class>;
pub type HttpEndpoint = http_metrics::Requests<EndpointLabels, Class>;
pub type HttpProfileRoute = http_metrics::Requests<ProfileRouteLabels, Class>;
pub type HttpProfileRouteRetry = http_metrics::Retries<ProfileRouteLabels>;
pub type Stack = stack_metrics::Registry<StackLabels>;
#[derive(Clone, Debug)]
pub struct Metrics {
pub proxy: Proxy,
pub control: ControlHttp,
pub opencensus: opencensus::metrics::Registry,
pub opentelemetry: opentelemetry::metrics::Registry,
}
#[derive(Clone, Debug)]
pub struct Proxy {
pub http_profile_route: HttpProfileRoute,
pub http_profile_route_actual: HttpProfileRoute,
pub http_profile_route_retry: HttpProfileRouteRetry,
pub http_endpoint: HttpEndpoint,
pub transport: transport::Metrics,
pub stack: Stack,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct ControlLabels {
addr: Addr,
server_id: tls::ConditionalClientTlsLabels,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum EndpointLabels {
Inbound(InboundEndpointLabels),
Outbound(OutboundEndpointLabels),
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct InboundEndpointLabels {
pub tls: tls::ConditionalServerTlsLabels,
pub authority: Option<http::uri::Authority>,
pub target_addr: SocketAddr,
pub policy: RouteAuthzLabels,
}
/// A label referencing an inbound `Server` (i.e. for policy).
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct ServerLabel(pub Arc<policy::Meta>, pub u16);
/// Labels referencing an inbound server and authorization.
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct ServerAuthzLabels {
pub server: ServerLabel,
pub authz: Arc<policy::Meta>,
}
/// Labels referencing an inbound server and route.
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct RouteLabels {
pub server: ServerLabel,
pub route: Arc<policy::Meta>,
}
/// Labels referencing an inbound server, route, and authorization.
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct RouteAuthzLabels {
pub route: RouteLabels,
pub authz: Arc<policy::Meta>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct OutboundEndpointLabels {
pub server_id: tls::ConditionalClientTlsLabels,
pub authority: Option<http::uri::Authority>,
pub labels: Option<String>,
pub zone_locality: OutboundZoneLocality,
pub target_addr: SocketAddr,
}
#[derive(Debug, Copy, Clone, Default, Hash, Eq, PartialEq, EncodeLabelValue)]
pub enum OutboundZoneLocality {
#[default]
Unknown,
Local,
Remote,
}
impl OutboundZoneLocality {
pub fn new(metadata: &proxy::api_resolve::Metadata) -> Self {
if let Some(is_zone_local) = metadata.is_zone_local() {
if is_zone_local {
OutboundZoneLocality::Local
} else {
OutboundZoneLocality::Remote
}
} else {
OutboundZoneLocality::Unknown
}
}
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct StackLabels {
pub direction: Direction,
pub protocol: &'static str,
pub name: &'static str,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct ProfileRouteLabels {
direction: Direction,
addr: profiles::LogicalAddr,
labels: Option<String>,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum Direction {
In,
Out,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
struct Authority<'a>(&'a http::uri::Authority);
pub fn prefix_labels<'i, I>(prefix: &str, mut labels_iter: I) -> Option<String>
where
I: Iterator<Item = (&'i String, &'i String)>,
{
let (k0, v0) = labels_iter.next()?;
let mut out = format!("{prefix}_{k0}=\"{v0}\"");
for (k, v) in labels_iter {
write!(out, ",{prefix}_{k}=\"{v}\"").expect("label concat must succeed");
}
Some(out)
}
// === impl Metrics ===
impl Metrics {
pub fn new(retain_idle: Duration) -> (Self, impl legacy::FmtMetrics + Clone + Send + 'static) {
let (control, control_report) = {
let m = http_metrics::Requests::<ControlLabels, Class>::default();
let r = m.clone().into_report(retain_idle).with_prefix("control");
(m, r)
};
let (http_endpoint, endpoint_report) = {
let m = http_metrics::Requests::<EndpointLabels, Class>::default();
let r = m.clone().into_report(retain_idle);
(m, r)
};
let (http_profile_route, profile_route_report) = {
let m = http_metrics::Requests::<ProfileRouteLabels, Class>::default();
let r = m.clone().into_report(retain_idle).with_prefix("route");
(m, r)
};
let (http_profile_route_retry, retry_report) = {
let m = http_metrics::Retries::<ProfileRouteLabels>::default();
let r = m.clone().into_report(retain_idle).with_prefix("route");
(m, r)
};
let (http_profile_route_actual, actual_report) = {
let m = http_metrics::Requests::<ProfileRouteLabels, Class>::default();
let r = m
.clone()
.into_report(retain_idle)
.with_prefix("route_actual");
(m, r.without_latencies())
};
let stack = stack_metrics::Registry::default();
let (transport, transport_report) = transport::Metrics::new(retain_idle);
let proxy = Proxy {
http_endpoint,
http_profile_route,
http_profile_route_retry,
http_profile_route_actual,
stack: stack.clone(),
transport,
};
let (opencensus, opencensus_report) = opencensus::metrics::new();
let (opentelemetry, opentelemetry_report) = opentelemetry::metrics::new();
let metrics = Metrics {
proxy,
control,
opencensus,
opentelemetry,
};
use legacy::FmtMetrics as _;
let report = endpoint_report
.and_report(profile_route_report)
.and_report(retry_report)
.and_report(actual_report)
.and_report(control_report)
.and_report(transport_report)
.and_report(opencensus_report)
.and_report(opentelemetry_report)
.and_report(stack);
(metrics, report)
}
}
// === impl CtlLabels ===
impl svc::Param<ControlLabels> for control::ControlAddr {
fn param(&self) -> ControlLabels {
ControlLabels {
addr: self.addr.clone(),
server_id: self.identity.as_ref().map(tls::ClientTls::labels),
}
}
}
impl legacy::FmtLabels for ControlLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self { addr, server_id } = self;
write!(f, "addr=\"{addr}\",")?;
TlsConnect::from(server_id).fmt_labels(f)?;
Ok(())
}
}
// === impl ProfileRouteLabels ===
impl ProfileRouteLabels {
pub fn inbound(addr: profiles::LogicalAddr, route: &profiles::http::Route) -> Self {
let labels = prefix_labels("rt", route.labels().iter());
Self {
addr,
labels,
direction: Direction::In,
}
}
pub fn outbound(addr: profiles::LogicalAddr, route: &profiles::http::Route) -> Self {
let labels = prefix_labels("rt", route.labels().iter());
Self {
addr,
labels,
direction: Direction::Out,
}
}
}
impl legacy::FmtLabels for ProfileRouteLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self {
direction,
addr,
labels,
} = self;
direction.fmt_labels(f)?;
write!(f, ",dst=\"{addr}\"")?;
if let Some(labels) = labels.as_ref() {
write!(f, ",{labels}")?;
}
Ok(())
}
}
// === impl EndpointLabels ===
impl From<InboundEndpointLabels> for EndpointLabels {
fn from(i: InboundEndpointLabels) -> Self {
Self::Inbound(i)
}
}
impl From<OutboundEndpointLabels> for EndpointLabels {
fn from(i: OutboundEndpointLabels) -> Self {
Self::Outbound(i)
}
}
impl legacy::FmtLabels for EndpointLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Inbound(i) => (Direction::In, i).fmt_labels(f),
Self::Outbound(o) => (Direction::Out, o).fmt_labels(f),
}
}
}
impl legacy::FmtLabels for InboundEndpointLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self {
tls,
authority,
target_addr,
policy,
} = self;
if let Some(a) = authority.as_ref() {
Authority(a).fmt_labels(f)?;
write!(f, ",")?;
}
((TargetAddr(*target_addr), TlsAccept::from(tls)), policy).fmt_labels(f)?;
Ok(())
}
}
impl legacy::FmtLabels for ServerLabel {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self(meta, port) = self;
write!(
f,
"srv_group=\"{}\",srv_kind=\"{}\",srv_name=\"{}\",srv_port=\"{}\"",
meta.group(),
meta.kind(),
meta.name(),
port
)
}
}
impl EncodeLabelSet for ServerLabel {
fn encode(&self, mut enc: prometheus_client::encoding::LabelSetEncoder<'_>) -> fmt::Result {
prom::EncodeLabelSetMut::encode_label_set(self, &mut enc)
}
}
impl prom::EncodeLabelSetMut for ServerLabel {
fn encode_label_set(&self, enc: &mut prom::encoding::LabelSetEncoder<'_>) -> fmt::Result {
use prometheus_client::encoding::EncodeLabel;
("srv_group", self.0.group()).encode(enc.encode_label())?;
("srv_kind", self.0.kind()).encode(enc.encode_label())?;
("srv_name", self.0.name()).encode(enc.encode_label())?;
("srv_port", self.1).encode(enc.encode_label())?;
Ok(())
}
}
impl legacy::FmtLabels for ServerAuthzLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self { server, authz } = self;
server.fmt_labels(f)?;
write!(
f,
",authz_group=\"{}\",authz_kind=\"{}\",authz_name=\"{}\"",
authz.group(),
authz.kind(),
authz.name()
)
}
}
impl legacy::FmtLabels for RouteLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self { server, route } = self;
server.fmt_labels(f)?;
write!(
f,
",route_group=\"{}\",route_kind=\"{}\",route_name=\"{}\"",
route.group(),
route.kind(),
route.name(),
)
}
}
impl legacy::FmtLabels for RouteAuthzLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self { route, authz } = self;
route.fmt_labels(f)?;
write!(
f,
",authz_group=\"{}\",authz_kind=\"{}\",authz_name=\"{}\"",
authz.group(),
authz.kind(),
authz.name(),
)
}
}
impl svc::Param<OutboundZoneLocality> for OutboundEndpointLabels {
fn param(&self) -> OutboundZoneLocality {
self.zone_locality
}
}
impl legacy::FmtLabels for OutboundEndpointLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self {
server_id,
authority,
labels,
// TODO(kate): this label is not currently emitted.
zone_locality: _,
target_addr,
} = self;
if let Some(a) = authority.as_ref() {
Authority(a).fmt_labels(f)?;
write!(f, ",")?;
}
let ta = TargetAddr(*target_addr);
let tls = TlsConnect::from(server_id);
(ta, tls).fmt_labels(f)?;
if let Some(labels) = labels.as_ref() {
write!(f, ",{labels}")?;
}
Ok(())
}
}
impl fmt::Display for Direction {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::In => write!(f, "inbound"),
Self::Out => write!(f, "outbound"),
}
}
}
impl legacy::FmtLabels for Direction {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "direction=\"{self}\"")
}
}
impl legacy::FmtLabels for Authority<'_> {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self(authority) = self;
write!(f, "authority=\"{authority}\"")
}
}
impl legacy::FmtLabels for Class {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let class = |ok: bool| if ok { "success" } else { "failure" };
match self {
Class::Http(res) => write!(
f,
"classification=\"{}\",grpc_status=\"\",error=\"\"",
class(res.is_ok())
),
Class::Grpc(res) => write!(
f,
"classification=\"{}\",grpc_status=\"{}\",error=\"\"",
class(res.is_ok()),
match res {
Ok(code) | Err(code) => <i32>::from(*code),
}
),
Class::Error(msg) => write!(
f,
"classification=\"failure\",grpc_status=\"\",error=\"{msg}\""
),
}
}
}
// === impl StackLabels ===
impl StackLabels {
pub fn inbound(protocol: &'static str, name: &'static str) -> Self {
Self {
name,
protocol,
direction: Direction::In,
}
}
pub fn outbound(protocol: &'static str, name: &'static str) -> Self {
Self {
name,
protocol,
direction: Direction::Out,
}
}
}
impl legacy::FmtLabels for StackLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self {
direction,
protocol,
name,
} = self;
direction.fmt_labels(f)?;
write!(f, ",protocol=\"{protocol}\",name=\"{name}\"")
}
}

View File

@ -1,391 +0,0 @@
pub use crate::transport::labels::{TargetAddr, TlsAccept};
use crate::{
classify::{Class, SuccessOrFailure},
control, dst, http_metrics, http_metrics as metrics, opencensus, profiles, stack_metrics,
svc::Param,
telemetry, tls,
transport::{self, labels::TlsConnect},
};
use linkerd_addr::Addr;
pub use linkerd_metrics::*;
use std::{
fmt::{self, Write},
net::SocketAddr,
sync::Arc,
time::{Duration, SystemTime},
};
pub type ControlHttp = http_metrics::Requests<ControlLabels, Class>;
pub type HttpEndpoint = http_metrics::Requests<EndpointLabels, Class>;
pub type HttpRoute = http_metrics::Requests<RouteLabels, Class>;
pub type HttpRouteRetry = http_metrics::Retries<RouteLabels>;
pub type Stack = stack_metrics::Registry<StackLabels>;
#[derive(Clone, Debug)]
pub struct Metrics {
pub proxy: Proxy,
pub control: ControlHttp,
pub opencensus: opencensus::metrics::Registry,
}
#[derive(Clone, Debug)]
pub struct Proxy {
pub http_route: HttpRoute,
pub http_route_actual: HttpRoute,
pub http_route_retry: HttpRouteRetry,
pub http_endpoint: HttpEndpoint,
pub transport: transport::Metrics,
pub stack: Stack,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct ControlLabels {
addr: Addr,
server_id: tls::ConditionalClientTls,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum EndpointLabels {
Inbound(InboundEndpointLabels),
Outbound(OutboundEndpointLabels),
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct InboundEndpointLabels {
pub tls: tls::ConditionalServerTls,
pub authority: Option<http::uri::Authority>,
pub target_addr: SocketAddr,
pub policy: AuthzLabels,
}
/// A label referencing an inbound `Server` (i.e. for policy).
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct ServerLabel(pub Arc<str>);
/// Labels referencing an inbound `ServerAuthorization.
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct AuthzLabels {
pub server: ServerLabel,
pub authz: Arc<str>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct OutboundEndpointLabels {
pub server_id: tls::ConditionalClientTls,
pub authority: Option<http::uri::Authority>,
pub labels: Option<String>,
pub target_addr: SocketAddr,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct StackLabels {
pub direction: Direction,
pub protocol: &'static str,
pub name: &'static str,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct RouteLabels {
direction: Direction,
addr: profiles::LogicalAddr,
labels: Option<String>,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum Direction {
In,
Out,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
struct Authority<'a>(&'a http::uri::Authority);
pub fn prefix_labels<'i, I>(prefix: &str, mut labels_iter: I) -> Option<String>
where
I: Iterator<Item = (&'i String, &'i String)>,
{
let (k0, v0) = labels_iter.next()?;
let mut out = format!("{}_{}=\"{}\"", prefix, k0, v0);
for (k, v) in labels_iter {
write!(out, ",{}_{}=\"{}\"", prefix, k, v).expect("label concat must succeed");
}
Some(out)
}
// === impl Metrics ===
impl Metrics {
pub fn new(retain_idle: Duration) -> (Self, impl FmtMetrics + Clone + Send + 'static) {
let process = telemetry::process::Report::new(SystemTime::now());
let build_info = telemetry::build_info::Report::new();
let (control, control_report) = {
let m = metrics::Requests::<ControlLabels, Class>::default();
let r = m.clone().into_report(retain_idle).with_prefix("control");
(m, r)
};
let (http_endpoint, endpoint_report) = {
let m = metrics::Requests::<EndpointLabels, Class>::default();
let r = m.clone().into_report(retain_idle);
(m, r)
};
let (http_route, route_report) = {
let m = metrics::Requests::<RouteLabels, Class>::default();
let r = m.clone().into_report(retain_idle).with_prefix("route");
(m, r)
};
let (http_route_retry, retry_report) = {
let m = metrics::Retries::<RouteLabels>::default();
let r = m.clone().into_report(retain_idle).with_prefix("route");
(m, r)
};
let (http_route_actual, actual_report) = {
let m = metrics::Requests::<RouteLabels, Class>::default();
let r = m
.clone()
.into_report(retain_idle)
.with_prefix("route_actual");
(m, r.without_latencies())
};
let stack = stack_metrics::Registry::default();
let (transport, transport_report) = transport::Metrics::new(retain_idle);
let proxy = Proxy {
http_endpoint,
http_route,
http_route_retry,
http_route_actual,
stack: stack.clone(),
transport,
};
let (opencensus, opencensus_report) = opencensus::metrics::new();
let metrics = Metrics {
proxy,
control,
opencensus,
};
let report = endpoint_report
.and_then(route_report)
.and_then(retry_report)
.and_then(actual_report)
.and_then(control_report)
.and_then(transport_report)
.and_then(opencensus_report)
.and_then(stack)
.and_then(process)
.and_then(build_info);
(metrics, report)
}
}
// === impl CtlLabels ===
impl Param<ControlLabels> for control::ControlAddr {
fn param(&self) -> ControlLabels {
ControlLabels {
addr: self.addr.clone(),
server_id: self.identity.clone(),
}
}
}
impl FmtLabels for ControlLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "addr=\"{}\",", self.addr)?;
TlsConnect::from(&self.server_id).fmt_labels(f)?;
Ok(())
}
}
// === impl RouteLabels ===
impl Param<RouteLabels> for dst::Route {
fn param(&self) -> RouteLabels {
RouteLabels {
addr: self.addr.clone(),
direction: self.direction,
labels: prefix_labels("rt", self.route.labels().iter()),
}
}
}
impl FmtLabels for RouteLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.direction.fmt_labels(f)?;
write!(f, ",dst=\"{}\"", self.addr)?;
if let Some(labels) = self.labels.as_ref() {
write!(f, ",{}", labels)?;
}
Ok(())
}
}
// === impl EndpointLabels ===
impl From<InboundEndpointLabels> for EndpointLabels {
fn from(i: InboundEndpointLabels) -> Self {
Self::Inbound(i)
}
}
impl From<OutboundEndpointLabels> for EndpointLabels {
fn from(i: OutboundEndpointLabels) -> Self {
Self::Outbound(i)
}
}
impl FmtLabels for EndpointLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Inbound(i) => (Direction::In, i).fmt_labels(f),
Self::Outbound(o) => (Direction::Out, o).fmt_labels(f),
}
}
}
impl FmtLabels for InboundEndpointLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if let Some(a) = self.authority.as_ref() {
Authority(a).fmt_labels(f)?;
write!(f, ",")?;
}
(
(TargetAddr(self.target_addr), TlsAccept::from(&self.tls)),
&self.policy,
)
.fmt_labels(f)?;
Ok(())
}
}
impl fmt::Display for ServerLabel {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0.fmt(f)
}
}
impl FmtLabels for ServerLabel {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "srv_name=\"{}\"", self.0)
}
}
impl FmtLabels for AuthzLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.server.fmt_labels(f)?;
write!(f, ",saz_name=\"{}\"", self.authz)
}
}
impl FmtLabels for OutboundEndpointLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if let Some(a) = self.authority.as_ref() {
Authority(a).fmt_labels(f)?;
write!(f, ",")?;
}
let ta = TargetAddr(self.target_addr);
let tls = TlsConnect::from(&self.server_id);
(ta, tls).fmt_labels(f)?;
if let Some(labels) = self.labels.as_ref() {
write!(f, ",{}", labels)?;
}
Ok(())
}
}
impl fmt::Display for Direction {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::In => write!(f, "inbound"),
Self::Out => write!(f, "outbound"),
}
}
}
impl FmtLabels for Direction {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "direction=\"{}\"", self)
}
}
impl<'a> FmtLabels for Authority<'a> {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "authority=\"{}\"", self.0)
}
}
impl FmtLabels for Class {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Class::Default(result) => write!(f, "classification=\"{}\"", result),
Class::Grpc(result, status) => write!(
f,
"classification=\"{}\",grpc_status=\"{}\"",
result, status
),
Class::Stream(result, status) => {
write!(f, "classification=\"{}\",error=\"{}\"", result, status)
}
}
}
}
impl fmt::Display for SuccessOrFailure {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
SuccessOrFailure::Success => write!(f, "success"),
SuccessOrFailure::Failure => write!(f, "failure"),
}
}
}
// === impl StackLabels ===
impl StackLabels {
pub fn inbound(protocol: &'static str, name: &'static str) -> Self {
Self {
name,
protocol,
direction: Direction::In,
}
}
pub fn outbound(protocol: &'static str, name: &'static str) -> Self {
Self {
name,
protocol,
direction: Direction::Out,
}
}
}
impl FmtLabels for StackLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.direction.fmt_labels(f)?;
write!(f, ",protocol=\"{}\",name=\"{}\"", self.protocol, self.name)
}
}

View File

@ -1,11 +1,10 @@
//! Tools for building a transparent TCP/HTTP proxy.
pub use linkerd_proxy_api_resolve as api_resolve;
pub use linkerd_proxy_balance as balance;
pub use linkerd_proxy_core as core;
pub use linkerd_proxy_discover as discover;
pub use linkerd_proxy_dns_resolve as dns_resolve;
pub use linkerd_proxy_http as http;
pub use linkerd_proxy_identity as identity;
pub use linkerd_proxy_resolve as resolve;
pub use linkerd_proxy_tap as tap;
pub use linkerd_proxy_tcp as tcp;

View File

@ -1,168 +0,0 @@
use super::classify;
use super::dst::Route;
use super::http_metrics::retries::Handle;
use super::metrics::HttpRouteRetry;
use crate::profiles;
use futures::future;
use linkerd_error::Error;
use linkerd_http_classify::{Classify, ClassifyEos, ClassifyResponse};
use linkerd_http_retry::ReplayBody;
use linkerd_proxy_http::ClientHandle;
use linkerd_retry as retry;
use linkerd_stack::{layer, Either, Param};
use std::sync::Arc;
pub fn layer<N>(
metrics: HttpRouteRetry,
) -> impl layer::Layer<N, Service = retry::NewRetry<NewRetryPolicy, N>> + Clone {
retry::NewRetry::<_, N>::layer(NewRetryPolicy::new(metrics))
}
#[derive(Clone, Debug)]
pub struct NewRetryPolicy {
metrics: HttpRouteRetry,
}
#[derive(Clone, Debug)]
pub struct RetryPolicy {
metrics: Handle,
budget: Arc<retry::Budget>,
response_classes: profiles::http::ResponseClasses,
}
/// Allow buffering requests up to 64 kb
const MAX_BUFFERED_BYTES: usize = 64 * 1024;
// === impl NewRetryPolicy ===
impl NewRetryPolicy {
pub fn new(metrics: HttpRouteRetry) -> Self {
Self { metrics }
}
}
impl retry::NewPolicy<Route> for NewRetryPolicy {
type Policy = RetryPolicy;
fn new_policy(&self, route: &Route) -> Option<Self::Policy> {
let retries = route.route.retries().cloned()?;
let metrics = self.metrics.get_handle(route.param());
Some(RetryPolicy {
metrics,
budget: retries.budget().clone(),
response_classes: route.route.response_classes().clone(),
})
}
}
// === impl Retry ===
impl RetryPolicy {
fn can_retry<A: http_body::Body>(&self, req: &http::Request<A>) -> bool {
let content_length = |req: &http::Request<_>| {
req.headers()
.get(http::header::CONTENT_LENGTH)
.and_then(|value| value.to_str().ok()?.parse::<usize>().ok())
};
// Requests without bodies can always be retried, as we will not need to
// buffer the body. If the request *does* have a body, retry it if and
// only if the request contains a `content-length` header and the
// content length is >= 64 kb.
let has_body = !req.body().is_end_stream();
if has_body && content_length(req).unwrap_or(usize::MAX) > MAX_BUFFERED_BYTES {
tracing::trace!(
req.has_body = has_body,
req.content_length = ?content_length(req),
"not retryable",
);
return false;
}
tracing::trace!(
req.has_body = has_body,
req.content_length = ?content_length(req),
"retryable",
);
true
}
}
impl<A, B, E> retry::Policy<http::Request<A>, http::Response<B>, E> for RetryPolicy
where
A: http_body::Body + Clone,
{
type Future = future::Ready<Self>;
fn retry(
&self,
req: &http::Request<A>,
result: Result<&http::Response<B>, &E>,
) -> Option<Self::Future> {
let retryable = match result {
Err(_) => false,
Ok(rsp) => classify::Request::from(self.response_classes.clone())
.classify(req)
.start(rsp)
.eos(None)
.is_failure(),
};
if !retryable {
self.budget.deposit();
return None;
}
let withdrew = self.budget.withdraw().is_ok();
self.metrics.incr_retryable(withdrew);
if !withdrew {
return None;
}
Some(future::ready(self.clone()))
}
fn clone_request(&self, req: &http::Request<A>) -> Option<http::Request<A>> {
let can_retry = self.can_retry(req);
debug_assert!(
can_retry,
"The retry policy attempted to clone an un-retryable request. This is unexpected."
);
if !can_retry {
return None;
}
let mut clone = http::Request::new(req.body().clone());
*clone.method_mut() = req.method().clone();
*clone.uri_mut() = req.uri().clone();
*clone.headers_mut() = req.headers().clone();
*clone.version_mut() = req.version();
// The HTTP server sets a ClientHandle with the client's address and a means to close the
// server-side connection.
if let Some(client_handle) = req.extensions().get::<ClientHandle>().cloned() {
clone.extensions_mut().insert(client_handle);
}
Some(clone)
}
}
impl<A, B, E> retry::PrepareRequest<http::Request<A>, http::Response<B>, E> for RetryPolicy
where
A: http_body::Body + Unpin,
A::Error: Into<Error>,
{
type RetryRequest = http::Request<ReplayBody<A>>;
fn prepare_request(
&self,
req: http::Request<A>,
) -> Either<Self::RetryRequest, http::Request<A>> {
if self.can_retry(&req) {
return Either::A(req.map(|body| ReplayBody::new(body, MAX_BUFFERED_BYTES)));
}
Either::B(req)
}
}

View File

@ -1,10 +1,11 @@
use crate::{
io,
io, is_caused_by,
svc::{self, Param},
transport::{ClientAddr, Remote},
Result,
};
use futures::prelude::*;
use linkerd_error::Error;
use linkerd_proxy_transport::AddrPair;
use tower::util::ServiceExt;
use tracing::{debug, debug_span, info, instrument::Instrument, warn};
@ -12,12 +13,12 @@ use tracing::{debug, debug_span, info, instrument::Instrument, warn};
///
/// The task is driven until shutdown is signaled.
pub async fn serve<M, S, I, A>(
listen: impl Stream<Item = std::io::Result<(A, I)>>,
listen: impl Stream<Item = Result<(A, I)>>,
new_accept: M,
shutdown: impl Future,
) where
I: Send + 'static,
A: Param<Remote<ClientAddr>>,
A: Param<AddrPair>,
M: svc::NewService<A, Service = S>,
S: tower::Service<io::ScopedIo<I>, Response = ()> + Send + 'static,
S::Error: Into<Error>,
@ -33,13 +34,14 @@ pub async fn serve<M, S, I, A>(
let (addrs, io) = match conn {
Ok(conn) => conn,
Err(error) => {
warn!(%error, "Server failed to accept connection");
warn!(error, "Server failed to accept connection");
continue;
}
};
// The local addr should be instrumented from the listener's context.
let span = debug_span!("accept", client.addr = %addrs.param()).entered();
let AddrPair(client_addr, server_addr) = addrs.param();
let span = debug_span!("accept", client.addr = %client_addr, server.addr = %server_addr).entered();
let accept = new_accept.new_service(addrs);
// Dispatch all of the work for a given connection onto a
@ -54,10 +56,22 @@ pub async fn serve<M, S, I, A>(
.await
{
Ok(()) => debug!("Connection closed"),
Err(reason) if is_io(&*reason) => {
debug!(%reason, "Connection closed")
Err(reason) if is_caused_by::<std::io::Error>(&*reason) => {
debug!(
reason,
client.addr = %client_addr,
server.addr = %server_addr,
"Connection closed"
);
}
Err(error) => {
info!(
error,
client.addr = %client_addr,
server.addr = %server_addr,
"Connection closed"
);
}
Err(error) => info!(%error, "Connection closed"),
}
// Hold the service until the connection is complete. This
// helps tie any inner cache lifetimes to the services they
@ -65,7 +79,7 @@ pub async fn serve<M, S, I, A>(
drop(accept);
}
Err(error) => {
warn!(%error, "Server failed to become ready");
warn!(error, client.addr = %client_addr, "Server failed to become ready");
}
}
}
@ -85,7 +99,3 @@ pub async fn serve<M, S, I, A>(
_ = shutdown => {}
}
}
fn is_io(e: &(dyn std::error::Error + 'static)) -> bool {
e.is::<io::Error>() || e.source().map(is_io).unwrap_or(false)
}

View File

@ -1,22 +1,15 @@
// Possibly unused, but useful during development.
pub use crate::proxy::http;
use crate::{cache, Error};
use crate::{disco_cache::NewCachedDiscover, Error};
use linkerd_error::Recover;
use linkerd_exp_backoff::{ExponentialBackoff, ExponentialBackoffStream};
pub use linkerd_reconnect::NewReconnect;
pub use linkerd_stack::{
self as stack, layer, ArcNewService, BoxService, BoxServiceLayer, Either, ExtractParam, Fail,
FailFast, Filter, InsertParam, MapErr, MapTargetLayer, NewRouter, NewService, Param, Predicate,
UnwrapOr,
};
pub use linkerd_stack_tracing::{NewInstrument, NewInstrumentLayer};
use std::{
fmt,
hash::Hash,
task::{Context, Poll},
time::Duration,
};
use tower::{
buffer::{Buffer as TowerBuffer, BufferLayer},
layer::util::{Identity, Stack as Pair},
make::MakeService,
};
@ -25,20 +18,34 @@ pub use tower::{
spawn_ready::SpawnReady, Service, ServiceExt,
};
pub use crate::proxy::http;
pub use linkerd_idle_cache as idle_cache;
pub use linkerd_reconnect::NewReconnect;
pub use linkerd_router::{self as router, NewOneshotRoute};
pub use linkerd_stack::{self as stack, *};
pub use linkerd_stack_tracing::{GetSpan, NewInstrument, NewInstrumentLayer};
#[derive(Copy, Clone, Debug)]
pub struct AlwaysReconnect(ExponentialBackoff);
pub type Buffer<Req, Rsp, E> = TowerBuffer<BoxService<Req, Rsp, E>, Req>;
pub type BoxHttp<B = http::BoxBody> =
BoxService<http::Request<B>, http::Response<http::BoxBody>, Error>;
pub type ArcNewHttp<T, B = http::BoxBody> = ArcNewService<T, BoxHttp<B>>;
pub type BoxCloneHttp<B = http::BoxBody> =
BoxCloneSyncService<http::Request<B>, http::Response<http::BoxBody>>;
pub type ArcNewCloneHttp<T, B = http::BoxBody> = ArcNewService<T, BoxCloneHttp<B>>;
pub type BoxTcp<I> = BoxService<I, (), Error>;
pub type ArcNewTcp<T, I> = ArcNewService<T, BoxTcp<I>>;
pub type BoxCloneTcp<I> = BoxCloneSyncService<I, ()>;
pub type ArcNewCloneTcp<T, I> = ArcNewService<T, BoxCloneTcp<I>>;
#[derive(Clone, Debug)]
pub struct Layers<L>(L);
@ -79,22 +86,32 @@ impl<L> Layers<L> {
self.push(stack::MapTargetLayer::new(map_target))
}
/// Buffers requests in an mpsc, spawning the inner service onto a dedicated task.
pub fn push_spawn_buffer<Req>(
self,
capacity: usize,
) -> Layers<Pair<Pair<L, BoxServiceLayer<Req>>, BufferLayer<Req>>>
where
Req: Send + 'static,
{
self.push(BoxServiceLayer::new())
.push(BufferLayer::new(capacity))
}
pub fn push_on_service<U>(self, layer: U) -> Layers<Pair<L, stack::OnServiceLayer<U>>> {
self.push(stack::OnServiceLayer::new(layer))
}
/// Wraps the inner `N` with `NewCloneService` so that the stack holds a
/// `NewService` that always returns a clone of `N` regardless of the target
/// value.
pub fn lift_new<N>(
self,
) -> Layers<Pair<L, impl Layer<N, Service = NewCloneService<N>> + Clone>> {
self.push(layer::mk(NewCloneService::from))
}
// Wraps the inner `N`-typed [`NewService`] with a layer that applies the
// given target to all inner stacks to produce its service.
pub fn push_flatten_new<T, N>(
self,
target: T,
) -> Layers<Pair<L, impl Layer<N, Service = N::Service> + Clone>>
where
T: Clone,
N: NewService<T>,
{
self.push(layer::mk(move |inner: N| inner.new_service(target.clone())))
}
pub fn push_instrument<G: Clone>(self, get_span: G) -> Layers<Pair<L, NewInstrumentLayer<G>>> {
self.push(NewInstrumentLayer::new(get_span))
}
@ -120,7 +137,7 @@ impl<S> Stack<S> {
self.push(stack::MapTargetLayer::new(map_target))
}
pub fn push_request_filter<F: Clone>(self, filter: F) -> Stack<stack::Filter<S, F>> {
pub fn push_filter<F: Clone>(self, filter: F) -> Stack<stack::Filter<S, F>> {
self.push(stack::Filter::<S, F>::layer(filter))
}
@ -128,8 +145,8 @@ impl<S> Stack<S> {
///
/// Each time the service is called, the `T`-typed request is cloned and
/// issued into the inner service.
pub fn push_make_thunk(self) -> Stack<stack::MakeThunk<S>> {
self.push(layer::mk(stack::MakeThunk::new))
pub fn push_new_thunk(self) -> Stack<stack::NewThunk<S>> {
self.push(layer::mk(stack::NewThunk::new))
}
pub fn instrument<G: Clone>(self, get_span: G) -> Stack<NewInstrument<G, S>> {
@ -152,28 +169,45 @@ impl<S> Stack<S> {
self.push(NewReconnect::layer(AlwaysReconnect(backoff)))
}
/// Buffer requests when when the next layer is out of capacity.
pub fn spawn_buffer<Req, Rsp>(
self,
capacity: usize,
) -> Stack<Buffer<Req, S::Response, S::Error>>
where
Req: Send + 'static,
S: Service<Req> + Send + 'static,
S::Response: Send + 'static,
S::Error: Into<Error> + Send + Sync + 'static,
S::Future: Send,
{
self.push(BoxServiceLayer::new())
.push(BufferLayer::new(capacity))
}
/// Assuming `S` implements `NewService` or `MakeService`, applies the given
/// `L`-typed layer on each service produced by `S`.
pub fn push_on_service<L: Clone>(self, layer: L) -> Stack<stack::OnService<L, S>> {
self.push(stack::OnServiceLayer::new(layer))
}
/// Lifts `S` into `NewService<_, Service = S>` so that the inner stack is
/// cloned for each target (ignoring its value).
pub fn lift_new(self) -> Stack<NewCloneService<S>> {
self.push(layer::mk(NewCloneService::from))
}
/// Lifts the inner stack via [`Self::lift_new`], but combines both target
/// types into a new `P`-typed value via `From`.
pub fn lift_new_with_target<P>(self) -> Stack<NewFromTargets<P, NewCloneService<S>>> {
// `lift_new` takes a NewService<P> and returns a NewService<T, Service =
// NewService<P>> -- turning it into a double-NewService that ignores
// the `T`-typed target.
//
// `NewFromTargets` wraps that and returns a NewService<T, Service =
// NewService<(U, T)> -- so that first target is cloned and
// combined with the second target via `P::from`.
//
// The result is that we expose NewService<T, Service = NewService<U>>
// over an inner NewService<P>.
self.lift_new().push(NewFromTargets::layer())
}
/// Converts an inner `NewService<T, Service = Svc>` into a `NewService<T,
/// Service = NewService<_, Service = Svc>>`, cloning `Svc` for each child
/// target (ignoring its value), in effect disarding the child `NewService`.
///
/// The inverse of `lift_new`.
pub fn unlift_new<Svc>(
self,
) -> Stack<OnService<impl Layer<Svc, Service = NewCloneService<Svc>> + Clone, S>> {
self.push_on_service(layer::mk(NewCloneService::from))
}
/// Wraps the inner service with a response timeout such that timeout errors are surfaced as a
/// `ConnectTimeout` error.
///
@ -181,7 +215,7 @@ impl<S> Stack<S> {
pub fn push_connect_timeout(
self,
timeout: Duration,
) -> Stack<MapErr<stack::Timeout<S>, impl FnOnce(Error) -> Error + Clone>> {
) -> Stack<MapErr<impl FnOnce(Error) -> Error + Clone, stack::Timeout<S>>> {
self.push(stack::Timeout::layer(timeout))
.push(MapErr::layer(move |err: Error| {
if err.is::<stack::TimeoutError>() {
@ -202,13 +236,13 @@ impl<S> Stack<S> {
self.push(http::insert::NewResponseInsert::layer())
}
pub fn push_cache<T>(self, idle: Duration) -> Stack<cache::Cache<T, S>>
pub fn push_new_idle_cached<T>(self, idle: Duration) -> Stack<idle_cache::NewIdleCached<T, S>>
where
T: Clone + Eq + std::fmt::Debug + std::hash::Hash + Send + Sync + 'static,
S: NewService<T> + 'static,
S::Service: Send + Sync + 'static,
{
self.push(cache::Cache::layer(idle))
self.push(idle_cache::NewIdleCached::layer(idle))
}
/// Push a service that either calls the inner service if it is ready, or
@ -237,6 +271,86 @@ impl<S> Stack<S> {
}))
}
pub fn push_new_cached_discover<K, D>(
self,
discover: D,
idle: Duration,
) -> Stack<NewCachedDiscover<K, D, S>>
where
K: Clone + fmt::Debug + Eq + Hash + Send + Sync + 'static,
D: Service<K, Error = Error> + Clone + Send + Sync + 'static,
D::Response: Clone + Send + Sync + 'static,
D::Future: Send + Unpin,
{
self.push(NewCachedDiscover::layer(discover, idle))
}
pub fn arc_new_http<T, B, Svc>(self) -> Stack<ArcNewHttp<T, B>>
where
T: 'static,
B: 'static,
S: NewService<T, Service = Svc> + Send + Sync + 'static,
Svc: Service<http::Request<B>, Response = http::Response<http::BoxBody>, Error = Error>,
Svc: Send + 'static,
Svc::Future: Send,
{
self.arc_new_box()
}
pub fn arc_new_clone_http<T, B, Svc>(self) -> Stack<ArcNewCloneHttp<T, B>>
where
T: 'static,
B: 'static,
S: NewService<T, Service = Svc> + Send + Sync + 'static,
Svc: Service<http::Request<B>, Response = http::Response<http::BoxBody>>,
Svc: Clone + Send + Sync + 'static,
Svc::Error: Into<Error>,
Svc::Future: Send,
{
self.push_on_service(BoxCloneHttp::layer())
.push(ArcNewService::layer())
}
pub fn arc_new_clone_tcp<T, I, Svc>(self) -> Stack<ArcNewCloneTcp<T, I>>
where
T: 'static,
I: 'static,
S: NewService<T, Service = Svc> + Send + Sync + 'static,
Svc: Service<I, Response = ()> + Clone + Send + Sync + 'static,
Svc::Error: Into<Error>,
Svc::Future: Send,
{
self.push_on_service(BoxCloneTcp::layer())
.push(ArcNewService::layer())
}
pub fn arc_new_tcp<T, I, Svc>(self) -> Stack<ArcNewTcp<T, I>>
where
T: 'static,
I: 'static,
S: NewService<T, Service = Svc> + Send + Sync + 'static,
Svc: Service<I, Response = (), Error = Error>,
Svc: Send + 'static,
Svc::Future: Send,
{
self.arc_new_box()
}
pub fn arc_new_box<T, Req, Svc>(
self,
) -> Stack<ArcNewService<T, BoxService<Req, Svc::Response, Error>>>
where
T: 'static,
Req: 'static,
S: NewService<T, Service = Svc> + Send + Sync + 'static,
Svc: Service<Req, Error = Error>,
Svc: Send + 'static,
Svc::Future: Send,
{
self.push_on_service(BoxService::layer())
.push(ArcNewService::layer())
}
/// Validates that this stack serves T-typed targets.
pub fn check_new<T>(self) -> Self
where
@ -245,6 +359,23 @@ impl<S> Stack<S> {
self
}
pub fn check_new_new<T, U>(self) -> Self
where
S: NewService<T>,
S::Service: NewService<U>,
{
self
}
pub fn check_new_new_service<T, U, Req>(self) -> Self
where
S: NewService<T>,
S::Service: NewService<U>,
<S::Service as NewService<U>>::Service: Service<Req>,
{
self
}
pub fn check_new_clone<T>(self) -> Self
where
S: NewService<T>,
@ -262,6 +393,14 @@ impl<S> Stack<S> {
self
}
pub fn check_new_accept<T, I>(self) -> Self
where
S: NewService<T>,
S::Service: Service<I, Response = ()>,
{
self
}
/// Validates that this stack serves T-typed targets.
pub fn check_clone_new_service<T, Req>(self) -> Self
where

View File

@ -1,72 +0,0 @@
use linkerd_metrics::{metrics, FmtLabels, FmtMetric, FmtMetrics, Gauge};
use std::env;
use std::fmt;
use std::string::String;
use std::sync::Arc;
const GIT_BRANCH: &str = env!("GIT_BRANCH");
const GIT_SHA: &str = env!("GIT_SHA");
const GIT_VERSION: &str = env!("GIT_VERSION");
const PROFILE: &str = env!("PROFILE");
const RUST_VERSION: &str = env!("RUST_VERSION");
metrics! {
proxy_build_info: Gauge {
"Proxy build info"
}
}
#[derive(Clone, Debug, Default)]
pub struct Report {
name: String,
// `value` remains constant over the lifetime of the proxy so that
// build information in `labels` remains accurate
value: Arc<Gauge>,
labels: Arc<BuildInfoLabels>,
}
#[derive(Clone, Debug, Default)]
struct BuildInfoLabels {
git_branch: String,
git_sha: String,
git_version: String,
profile: String,
rust_version: String,
}
impl Report {
pub fn new() -> Self {
let labels = Arc::new(BuildInfoLabels {
git_branch: GIT_BRANCH.to_string(),
git_sha: GIT_SHA.to_string(),
git_version: GIT_VERSION.to_string(),
profile: PROFILE.to_string(),
rust_version: RUST_VERSION.to_string(),
});
Self {
name: "proxy_build_info".to_string(),
value: Arc::new(1.into()),
labels,
}
}
}
impl FmtMetrics for Report {
fn fmt_metrics(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
proxy_build_info.fmt_help(f)?;
self.value
.fmt_metric_labeled(f, self.name.as_str(), self.labels.as_ref())?;
Ok(())
}
}
impl FmtLabels for BuildInfoLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "git_branch=\"{}\"", self.git_branch)?;
write!(f, ",git_sha=\"{}\"", self.git_sha)?;
write!(f, ",git_version=\"{}\"", self.git_version)?;
write!(f, ",profile=\"{}\"", self.profile)?;
write!(f, ",rust_version=\"{}\"", self.rust_version)?;
Ok(())
}
}

View File

@ -1,2 +0,0 @@
pub mod build_info;
pub mod process;

View File

@ -1,153 +0,0 @@
use linkerd_metrics::{metrics, FmtMetrics, Gauge};
use std::fmt;
use std::sync::Arc;
use std::time::{SystemTime, UNIX_EPOCH};
metrics! {
process_start_time_seconds: Gauge {
"Time that the process started (in seconds since the UNIX epoch)"
}
}
#[derive(Clone, Debug)]
pub struct Report {
start_time: Arc<Gauge>,
#[cfg(target_os = "linux")]
system: linux::System,
}
impl Report {
pub fn new(start_time: SystemTime) -> Self {
let t0 = start_time
.duration_since(UNIX_EPOCH)
.expect("process start time")
.as_secs();
#[cfg(not(target_os = "linux"))]
tracing::info!("System-level metrics are only supported on Linux");
Self {
start_time: Arc::new(t0.into()),
#[cfg(target_os = "linux")]
system: linux::System::new(),
}
}
}
impl FmtMetrics for Report {
fn fmt_metrics(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
process_start_time_seconds.fmt_help(f)?;
process_start_time_seconds.fmt_metric(f, self.start_time.as_ref())?;
#[cfg(target_os = "linux")]
self.system.fmt_metrics(f)?;
Ok(())
}
}
#[cfg(target_os = "linux")]
mod linux {
use linkerd_metrics::{metrics, Counter, FmtMetrics, Gauge, MillisAsSeconds};
use linkerd_system as sys;
use std::fmt;
use tracing::warn;
metrics! {
process_cpu_seconds_total: Counter<MillisAsSeconds> {
"Total user and system CPU time spent in seconds."
},
process_open_fds: Gauge { "Number of open file descriptors." },
process_max_fds: Gauge { "Maximum number of open file descriptors." },
process_virtual_memory_bytes: Gauge {
"Virtual memory size in bytes."
},
process_resident_memory_bytes: Gauge {
"Resident memory size in bytes."
}
}
#[derive(Clone, Debug, Default)]
pub(super) struct System {
page_size: Option<u64>,
ms_per_tick: Option<u64>,
}
impl System {
pub fn new() -> Self {
let page_size = match sys::page_size() {
Ok(ps) => Some(ps),
Err(err) => {
warn!("Failed to load page size: {}", err);
None
}
};
let ms_per_tick = match sys::ms_per_tick() {
Ok(mpt) => Some(mpt),
Err(err) => {
warn!("Failed to load cpu clock speed: {}", err);
None
}
};
Self {
page_size,
ms_per_tick,
}
}
}
impl FmtMetrics for System {
fn fmt_metrics(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let stat = match sys::blocking_stat() {
Ok(stat) => stat,
Err(err) => {
warn!("failed to read process stats: {}", err);
return Ok(());
}
};
if let Some(mpt) = self.ms_per_tick {
let clock_ticks = stat.utime as u64 + stat.stime as u64;
let cpu_ms = clock_ticks * mpt;
process_cpu_seconds_total.fmt_help(f)?;
process_cpu_seconds_total.fmt_metric(f, &Counter::from(cpu_ms))?;
} else {
warn!("Could not determine process_cpu_seconds_total");
}
process_virtual_memory_bytes.fmt_help(f)?;
process_virtual_memory_bytes.fmt_metric(f, &Gauge::from(stat.vsize as u64))?;
if let Some(ps) = self.page_size {
process_resident_memory_bytes.fmt_help(f)?;
process_resident_memory_bytes.fmt_metric(f, &Gauge::from(stat.rss as u64 * ps))?;
} else {
warn!("Could not determine process_resident_memory_bytes");
}
match sys::open_fds(stat.pid) {
Ok(open_fds) => {
process_open_fds.fmt_help(f)?;
process_open_fds.fmt_metric(f, &open_fds.into())?;
}
Err(err) => {
warn!("Could not determine process_open_fds: {}", err);
}
}
match sys::max_fds() {
Ok(None) => {}
Ok(Some(max_fds)) => {
process_max_fds.fmt_help(f)?;
process_max_fds.fmt_metric(f, &max_fds.into())?;
}
Err(err) => {
warn!("Could not determine process_max_fds: {}", err);
}
}
Ok(())
}
}
}

View File

@ -0,0 +1,70 @@
use linkerd_metrics::prom;
use prometheus_client::encoding::{EncodeLabelSet, EncodeLabelValue, LabelValueEncoder};
use std::{
fmt::{Error, Write},
sync::{Arc, OnceLock},
};
static TLS_INFO: OnceLock<Arc<TlsInfo>> = OnceLock::new();
#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, EncodeLabelSet)]
pub struct TlsInfo {
tls_suites: MetricValueList,
tls_kx_groups: MetricValueList,
tls_rand: String,
tls_key_provider: String,
tls_fips: bool,
}
#[derive(Clone, Debug, Default, Hash, PartialEq, Eq)]
struct MetricValueList {
values: Vec<&'static str>,
}
impl FromIterator<&'static str> for MetricValueList {
fn from_iter<T: IntoIterator<Item = &'static str>>(iter: T) -> Self {
MetricValueList {
values: iter.into_iter().collect(),
}
}
}
impl EncodeLabelValue for MetricValueList {
fn encode(&self, encoder: &mut LabelValueEncoder<'_>) -> Result<(), Error> {
for value in &self.values {
value.encode(encoder)?;
encoder.write_char(',')?;
}
Ok(())
}
}
pub fn metric() -> prom::Family<TlsInfo, prom::ConstGauge> {
let fam = prom::Family::<TlsInfo, prom::ConstGauge>::new_with_constructor(|| {
prom::ConstGauge::new(1)
});
let tls_info = TLS_INFO.get_or_init(|| {
let provider = linkerd_rustls::get_default_provider();
let tls_suites = provider
.cipher_suites
.iter()
.flat_map(|cipher_suite| cipher_suite.suite().as_str())
.collect::<MetricValueList>();
let tls_kx_groups = provider
.kx_groups
.iter()
.flat_map(|suite| suite.name().as_str())
.collect::<MetricValueList>();
Arc::new(TlsInfo {
tls_suites,
tls_kx_groups,
tls_rand: format!("{:?}", provider.secure_random),
tls_key_provider: format!("{:?}", provider.key_provider),
tls_fips: provider.fips(),
})
});
let _ = fam.get_or_create(tls_info);
fam
}

View File

@ -1,6 +1,7 @@
pub use crate::metrics::{Direction, OutboundEndpointLabels, ServerLabel as PolicyServerLabel};
use crate::metrics::ServerLabel as PolicyServerLabel;
pub use crate::metrics::{Direction, OutboundEndpointLabels};
use linkerd_conditional::Conditional;
use linkerd_metrics::FmtLabels;
use linkerd_metrics::legacy::FmtLabels;
use linkerd_tls as tls;
use std::{fmt, net::SocketAddr};
@ -19,16 +20,16 @@ pub enum Key {
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct ServerLabels {
direction: Direction,
tls: tls::ConditionalServerTls,
tls: tls::ConditionalServerTlsLabels,
target_addr: SocketAddr,
policy: Option<PolicyServerLabel>,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub struct TlsAccept<'t>(pub &'t tls::ConditionalServerTls);
pub struct TlsAccept<'t>(pub &'t tls::ConditionalServerTlsLabels);
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub(crate) struct TlsConnect<'t>(&'t tls::ConditionalClientTls);
pub(crate) struct TlsConnect<'t>(pub &'t tls::ConditionalClientTlsLabels);
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
pub struct TargetAddr(pub SocketAddr);
@ -37,7 +38,7 @@ pub struct TargetAddr(pub SocketAddr);
impl Key {
pub fn inbound_server(
tls: tls::ConditionalServerTls,
tls: tls::ConditionalServerTlsLabels,
target_addr: SocketAddr,
server: PolicyServerLabel,
) -> Self {
@ -61,7 +62,7 @@ impl FmtLabels for Key {
}
Self::InboundClient => {
const NO_TLS: tls::client::ConditionalClientTls =
const NO_TLS: tls::client::ConditionalClientTlsLabels =
Conditional::None(tls::NoClientTls::Loopback);
Direction::In.fmt_labels(f)?;
@ -74,7 +75,7 @@ impl FmtLabels for Key {
impl ServerLabels {
fn inbound(
tls: tls::ConditionalServerTls,
tls: tls::ConditionalServerTlsLabels,
target_addr: SocketAddr,
policy: PolicyServerLabel,
) -> Self {
@ -89,7 +90,7 @@ impl ServerLabels {
fn outbound(target_addr: SocketAddr) -> Self {
ServerLabels {
direction: Direction::Out,
tls: tls::ConditionalServerTls::None(tls::NoServerTls::Loopback),
tls: tls::ConditionalServerTlsLabels::None(tls::NoServerTls::Loopback),
target_addr,
policy: None,
}
@ -98,13 +99,17 @@ impl ServerLabels {
impl FmtLabels for ServerLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.direction.fmt_labels(f)?;
let Self {
direction,
tls,
target_addr,
policy,
} = self;
direction.fmt_labels(f)?;
f.write_str(",peer=\"src\",")?;
(
(TargetAddr(self.target_addr), TlsAccept(&self.tls)),
self.policy.as_ref(),
)
.fmt_labels(f)?;
((TargetAddr(*target_addr), TlsAccept(tls)), policy.as_ref()).fmt_labels(f)?;
Ok(())
}
@ -112,27 +117,28 @@ impl FmtLabels for ServerLabels {
// === impl TlsAccept ===
impl<'t> From<&'t tls::ConditionalServerTls> for TlsAccept<'t> {
fn from(c: &'t tls::ConditionalServerTls) -> Self {
impl<'t> From<&'t tls::ConditionalServerTlsLabels> for TlsAccept<'t> {
fn from(c: &'t tls::ConditionalServerTlsLabels) -> Self {
TlsAccept(c)
}
}
impl<'t> FmtLabels for TlsAccept<'t> {
impl FmtLabels for TlsAccept<'_> {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self.0 {
let Self(tls) = self;
match tls {
Conditional::None(tls::NoServerTls::Disabled) => {
write!(f, "tls=\"disabled\"")
}
Conditional::None(why) => {
write!(f, "tls=\"no_identity\",no_tls_reason=\"{}\"", why)
write!(f, "tls=\"no_identity\",no_tls_reason=\"{why}\"")
}
Conditional::Some(tls::ServerTls::Established { client_id, .. }) => match client_id {
Some(id) => write!(f, "tls=\"true\",client_id=\"{}\"", id),
Conditional::Some(tls::ServerTlsLabels::Established { client_id }) => match client_id {
Some(id) => write!(f, "tls=\"true\",client_id=\"{id}\""),
None => write!(f, "tls=\"true\",client_id=\"\""),
},
Conditional::Some(tls::ServerTls::Passthru { sni }) => {
write!(f, "tls=\"opaque\",sni=\"{}\"", sni)
Conditional::Some(tls::ServerTlsLabels::Passthru { sni }) => {
write!(f, "tls=\"opaque\",sni=\"{sni}\"")
}
}
}
@ -140,23 +146,25 @@ impl<'t> FmtLabels for TlsAccept<'t> {
// === impl TlsConnect ===
impl<'t> From<&'t tls::ConditionalClientTls> for TlsConnect<'t> {
fn from(s: &'t tls::ConditionalClientTls) -> Self {
impl<'t> From<&'t tls::ConditionalClientTlsLabels> for TlsConnect<'t> {
fn from(s: &'t tls::ConditionalClientTlsLabels) -> Self {
TlsConnect(s)
}
}
impl<'t> FmtLabels for TlsConnect<'t> {
impl FmtLabels for TlsConnect<'_> {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self.0 {
let Self(tls) = self;
match tls {
Conditional::None(tls::NoClientTls::Disabled) => {
write!(f, "tls=\"disabled\"")
}
Conditional::None(why) => {
write!(f, "tls=\"no_identity\",no_tls_reason=\"{}\"", why)
write!(f, "tls=\"no_identity\",no_tls_reason=\"{why}\"")
}
Conditional::Some(tls::ClientTls { server_id, .. }) => {
write!(f, "tls=\"true\",server_id=\"{}\"", server_id)
Conditional::Some(tls::ClientTlsLabels { server_id }) => {
write!(f, "tls=\"true\",server_id=\"{server_id}\"")
}
}
}
@ -166,12 +174,13 @@ impl<'t> FmtLabels for TlsConnect<'t> {
impl FmtLabels for TargetAddr {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Self(target_addr) = self;
write!(
f,
"target_addr=\"{}\",target_ip=\"{}\",target_port=\"{}\"",
self.0,
self.0.ip(),
self.0.port()
target_addr,
target_addr.ip(),
target_addr.port()
)
}
}
@ -188,20 +197,29 @@ mod tests {
#[test]
fn server_labels() {
use linkerd_proxy_server_policy::Meta;
use std::sync::Arc;
let labels = ServerLabels::inbound(
tls::ConditionalServerTls::Some(tls::ServerTls::Established {
tls::ConditionalServerTlsLabels::Some(tls::ServerTlsLabels::Established {
client_id: Some("foo.id.example.com".parse().unwrap()),
negotiated_protocol: None,
}),
([192, 0, 2, 4], 40000).into(),
PolicyServerLabel("testserver".into()),
PolicyServerLabel(
Arc::new(Meta::Resource {
group: "policy.linkerd.io".into(),
kind: "server".into(),
name: "testserver".into(),
}),
40000,
),
);
assert_eq!(
labels.to_string(),
"direction=\"inbound\",peer=\"src\",\
target_addr=\"192.0.2.4:40000\",target_ip=\"192.0.2.4\",target_port=\"40000\",\
tls=\"true\",client_id=\"foo.id.example.com\",\
srv_name=\"testserver\""
srv_group=\"policy.linkerd.io\",srv_kind=\"server\",srv_name=\"testserver\",srv_port=\"40000\""
);
}
}

View File

@ -1,25 +1,31 @@
[package]
name = "linkerd-app-gateway"
version = "0.1.0"
authors = ["Linkerd Developers <cncf-linkerd-dev@lists.cncf.io>"]
license = "Apache-2.0"
edition = "2018"
publish = false
version = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
publish = { workspace = true }
[dependencies]
http = "0.2"
http = { workspace = true }
futures = { version = "0.3", default-features = false }
linkerd-app-core = { path = "../core" }
linkerd-app-inbound = { path = "../inbound" }
linkerd-app-outbound = { path = "../outbound" }
thiserror = "1.0"
linkerd-proxy-client-policy = { path = "../../proxy/client-policy" }
once_cell = "1"
thiserror = "2"
tokio = { version = "1", features = ["sync"] }
tower = { version = "0.4.8", default-features = false }
tracing = "0.1.28"
tonic = { workspace = true, default-features = false }
tower = { workspace = true, default-features = false }
tracing = { workspace = true }
[dev-dependencies]
linkerd-app-inbound = { path = "../inbound", features = ["test-util"] }
linkerd-app-outbound = { path = "../outbound", features = ["test-util"] }
linkerd-proxy-server-policy = { path = "../../proxy/server-policy" }
tokio = { version = "1", features = ["rt", "macros"] }
tokio-test = "0.4"
tower = { version = "0.4.8", default-features = false, features = ["util"] }
tower-test = "0.4"
tower = { workspace = true, default-features = false, features = ["util"] }
tower-test = { workspace = true }
linkerd-app-test = { path = "../test" }

View File

@ -0,0 +1,110 @@
use crate::Gateway;
use futures::FutureExt;
use linkerd_app_core::{errors, profiles, svc, Error};
use linkerd_app_inbound::{GatewayAddr, GatewayDomainInvalid};
use linkerd_app_outbound::{self as outbound};
use linkerd_proxy_client_policy::{self as policy, ClientPolicy};
use once_cell::sync::Lazy;
use std::sync::Arc;
use tokio::sync::watch;
use tracing::Instrument;
impl Gateway {
pub(crate) fn resolver(
&self,
profiles: impl profiles::GetProfile<Error = Error>,
policies: impl outbound::policy::GetPolicy,
) -> impl svc::Service<
GatewayAddr,
Response = (
Option<profiles::Receiver>,
watch::Receiver<outbound::policy::ClientPolicy>,
),
Error = Error,
Future = impl Send + Unpin,
> + Clone {
use futures::future;
let allowlist = self.config.allow_discovery.clone();
let detect_timeout = self.outbound.config().proxy.detect_protocol_timeout;
let queue = {
let queue = self.outbound.config().tcp_connection_queue;
policy::Queue {
capacity: queue.capacity,
failfast_timeout: queue.failfast_timeout,
}
};
svc::mk(move |GatewayAddr(addr)| {
tracing::debug!(%addr, "Discover");
if !allowlist.matches(addr.name()) {
tracing::debug!(%addr, "Address not in gateway discovery allowlist");
return future::Either::Left(future::err(GatewayDomainInvalid.into()));
}
let profile = profiles
.clone()
.get_profile(profiles::LookupAddr(addr.clone().into()))
.instrument(tracing::debug_span!("profiles").or_current());
let policy = policies
.get_policy(addr.into())
.instrument(tracing::debug_span!("policy").or_current());
let discovery = future::join(profile, policy).map(move |(profile, policy)| {
tracing::debug!("Discovered");
let profile = profile?.ok_or(GatewayDomainInvalid)?;
// If there was a policy resolution, return it with the profile so
// the stack can determine how to switch on them.
match policy {
Ok(policy) => return Ok((Some(profile), policy)),
// The policy controller currently rejects discovery for DNS
// names that are not Services, so we will get a `NotFound`
// error if we looked up a pod DNS name. In this case, we
// will synthesize a default policy.
Err(error) if errors::has_grpc_status(&error, tonic::Code::NotFound) =>
tracing::debug!("Policy not found"),
// Earlier versions of the Linkerd control plane (e.g.
// 2.12.x) will return `Unimplemented` for requests to the
// OutboundPolicy API. Log a warning and synthesize a policy
// for backwards compatibility.
Err(error) if errors::has_grpc_status(&error, tonic::Code::Unimplemented) =>
tracing::warn!("Policy controller returned `Unimplemented`, the control plane may be out of date."),
Err(error) => return Err(error),
}
let policy = outbound::spawn_synthesized_profile_policy(
profile.clone().into(),
move |profile| {
static META: Lazy<Arc<policy::Meta>> = Lazy::new(|| {
Arc::new(policy::Meta::Default {
name: "gateway".into(),
})
});
match profile.endpoint.clone() {
Some((addr, meta)) => outbound::synthesize_forward_policy(
&META,
detect_timeout,
queue,
addr,
meta.into(),
),
None => {
tracing::debug!(
"Gateway ServiceProfile does not contain an endpoint"
);
ClientPolicy::invalid(detect_timeout)
}
}
},
);
Ok((Some(profile), policy))
});
future::Either::Right(discovery)
})
}
}

View File

@ -1,215 +0,0 @@
use super::HttpTarget;
use futures::{future, TryFutureExt};
use linkerd_app_core::{
dns, profiles,
proxy::http,
svc::{self, layer},
tls, Error, NameAddr,
};
use linkerd_app_inbound::{GatewayDomainInvalid, GatewayIdentityRequired, GatewayLoop};
use linkerd_app_outbound as outbound;
use std::{
future::Future,
pin::Pin,
task::{Context, Poll},
};
use tracing::{debug, warn};
#[derive(Clone, Debug)]
pub(crate) struct NewGateway<O> {
outbound: O,
local_id: Option<tls::LocalId>,
}
#[derive(Clone, Debug)]
pub(crate) enum Gateway<O> {
NoIdentity,
BadDomain(dns::Name),
Outbound {
outbound: O,
local_identity: tls::LocalId,
host: String,
},
}
pub(crate) type Target = (Option<profiles::Receiver>, HttpTarget);
// === impl NewGateway ===
impl<O> NewGateway<O> {
pub fn new(outbound: O, local_id: Option<tls::LocalId>) -> Self {
Self { outbound, local_id }
}
pub fn layer(local_id: Option<tls::LocalId>) -> impl layer::Layer<O, Service = Self> + Clone {
layer::mk(move |outbound| Self::new(outbound, local_id.clone()))
}
}
impl<O> svc::NewService<Target> for NewGateway<O>
where
O: svc::NewService<svc::Either<outbound::http::Logical, outbound::http::Endpoint>>
+ Send
+ Clone
+ 'static,
{
type Service = Gateway<O::Service>;
fn new_service(&self, (profile, http): Target) -> Self::Service {
let local_id = match self.local_id.clone() {
Some(id) => id,
None => return Gateway::NoIdentity,
};
let profile = match profile {
Some(profile) => profile,
None => return Gateway::BadDomain(http.target.name().clone()),
};
// Create an outbound target using the endpoint from the profile.
if let Some((addr, metadata)) = profile.endpoint() {
debug!("Creating outbound endpoint");
// Create empty list of inbound ips, TLS shouldn't be skipped in
// this case.
let svc = self
.outbound
.new_service(svc::Either::B(outbound::http::Endpoint::from((
http.version,
outbound::tcp::Endpoint::from_metadata(
addr,
metadata,
tls::NoClientTls::NotProvidedByServiceDiscovery,
profile.is_opaque_protocol(),
// Address would not be a local IP so always treat
// target as remote in this case.
&Default::default(),
),
))));
return Gateway::new(svc, http.target, local_id);
}
let logical_addr = match profile.logical_addr() {
Some(addr) => addr,
None => return Gateway::BadDomain(http.target.name().clone()),
};
// Create an outbound target using the resolved name and an address
// including the original port. We don't know the IP of the target, so
// we use an unroutable one.
debug!("Creating outbound service");
let svc = self
.outbound
.new_service(svc::Either::A(outbound::http::Logical {
profile,
protocol: http.version,
logical_addr,
}));
Gateway::new(svc, http.target, local_id)
}
}
// === impl Gateway ===
impl<O> Gateway<O> {
pub fn new(outbound: O, dst: NameAddr, local_identity: tls::LocalId) -> Self {
let host = dst.as_http_authority().to_string();
Gateway::Outbound {
outbound,
local_identity,
host,
}
}
}
type ResponseFuture<T> = Pin<Box<dyn Future<Output = Result<T, Error>> + Send + 'static>>;
impl<B, O> tower::Service<http::Request<B>> for Gateway<O>
where
B: http::HttpBody + 'static,
O: tower::Service<http::Request<B>, Response = http::Response<http::BoxBody>>,
O::Error: Into<Error> + 'static,
O::Future: Send + 'static,
{
type Response = O::Response;
type Error = Error;
type Future = ResponseFuture<O::Response>;
#[inline]
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
match self {
Self::Outbound { outbound, .. } => outbound.poll_ready(cx).map_err(Into::into),
_ => Poll::Ready(Ok(())),
}
}
fn call(&mut self, mut request: http::Request<B>) -> Self::Future {
match self {
Self::Outbound {
ref mut outbound,
ref host,
local_identity: tls::LocalId(local_id),
} => {
// Check forwarded headers to see if this request has already
// transited through this gateway.
for forwarded in request
.headers()
.get_all(http::header::FORWARDED)
.into_iter()
.filter_map(|h| h.to_str().ok())
{
if let Some(by) = fwd_by(forwarded) {
tracing::info!(%forwarded);
if by == local_id.as_ref() {
return Box::pin(future::err(GatewayLoop.into()));
}
}
}
// Determine the value of the forwarded header using the Client
// ID from the requests's extensions.
let fwd = match request.extensions_mut().remove::<tls::ClientId>() {
Some(client_id) => {
let fwd = format!(
"by={};for={};host={};proto=https",
local_id, client_id, host
);
http::header::HeaderValue::from_str(&fwd)
.expect("Forwarded header value must be valid")
}
None => {
warn!("Request missing ClientId extension");
return Box::pin(future::err(GatewayIdentityRequired.into()));
}
};
request.headers_mut().append(http::header::FORWARDED, fwd);
// If we're forwarding HTTP/1 requests, the old `Host` header
// was stripped on the peer's outbound proxy. But the request
// should have an updated `Host` header now that it's being
// routed in the cluster.
if let ::http::Version::HTTP_11 | ::http::Version::HTTP_10 = request.version() {
request.headers_mut().insert(
http::header::HOST,
http::header::HeaderValue::from_str(host)
.expect("Host header value must be valid"),
);
}
tracing::debug!("Passing request to outbound");
Box::pin(outbound.call(request).map_err(Into::into))
}
Self::NoIdentity => Box::pin(future::err(GatewayIdentityRequired.into())),
Self::BadDomain(..) => Box::pin(future::err(GatewayDomainInvalid.into())),
}
}
}
fn fwd_by(fwd: &str) -> Option<&str> {
for kv in fwd.split(';') {
let mut kv = kv.split('=');
if let Some("by") = kv.next() {
return kv.next();
}
}
None
}

View File

@ -0,0 +1,230 @@
use super::Gateway;
use inbound::{GatewayAddr, GatewayDomainInvalid};
use linkerd_app_core::{
metrics::ServerLabel,
profiles,
proxy::{
api_resolve::{ConcreteAddr, Metadata},
core::Resolve,
http,
},
svc, tls,
transport::addrs::*,
Error,
};
use linkerd_app_inbound as inbound;
use linkerd_app_outbound as outbound;
use std::fmt::Debug;
use tokio::sync::watch;
mod gateway;
#[cfg(test)]
mod tests;
pub(crate) use self::gateway::NewHttpGateway;
/// Target for outbound HTTP gateway stacks.
#[derive(Clone, Debug)]
pub struct Target<T = ()> {
addr: GatewayAddr,
routes: watch::Receiver<outbound::http::Routes>,
version: http::Variant,
parent: T,
}
/// Implements `svc::router::SelectRoute` for outbound HTTP requests. An
/// `OutboundHttp` target is returned for each request using the request's HTTP
/// version.
///
/// The request's HTTP version may not match the target's original HTTP version
/// when proxies use HTTP/2 to transport HTTP/1 requests.
#[derive(Clone, Debug)]
struct ByRequestVersion<T>(Target<T>);
impl Gateway {
/// Wrap the provided outbound HTTP client with the inbound HTTP server,
/// inbound authorization, tagged-transport gateway routing, and the
/// outbound router.
pub fn http<T, R>(
&self,
inner: svc::ArcNewHttp<
outbound::http::concrete::Endpoint<
outbound::http::logical::Concrete<outbound::http::Http<Target>>,
>,
>,
resolve: R,
) -> svc::Stack<
svc::ArcNewService<
T,
impl svc::Service<
http::Request<http::BoxBody>,
Response = http::Response<http::BoxBody>,
Error = Error,
Future = impl Send,
> + Clone,
>,
>
where
// Target describing an inbound gateway connection.
T: svc::Param<GatewayAddr>,
T: svc::Param<OrigDstAddr>,
T: svc::Param<Remote<ClientAddr>>,
T: svc::Param<ServerLabel>,
T: svc::Param<tls::ConditionalServerTls>,
T: svc::Param<tls::ClientId>,
T: svc::Param<inbound::policy::AllowPolicy>,
T: svc::Param<Option<watch::Receiver<profiles::Profile>>>,
T: svc::Param<http::Variant>,
T: svc::Param<http::normalize_uri::DefaultAuthority>,
T: Clone + Send + Sync + Unpin + 'static,
// Endpoint resolution.
R: Resolve<ConcreteAddr, Endpoint = Metadata, Error = Error>,
R::Resolution: Unpin,
{
let http = self
.outbound
.clone()
.with_stack(inner)
.push_http_cached(resolve)
.into_stack()
// Discard `T` and its associated client-specific metadata.
.push_map_target(Target::discard_parent)
.push(svc::ArcNewService::layer())
// Add headers to prevent loops.
.push(NewHttpGateway::layer(
self.inbound.identity().local_id().clone(),
))
.push_on_service(svc::LoadShed::layer())
.lift_new()
.push(svc::ArcNewService::layer())
// After protocol-downgrade, we need to build an inner stack for
// each request-level HTTP version.
.push(svc::NewOneshotRoute::layer_via(|t: &Target<T>| {
ByRequestVersion(t.clone())
}))
// Only permit gateway traffic to endpoints for which we have
// discovery information.
.push_filter(|(_, parent): (_, T)| -> Result<_, GatewayDomainInvalid> {
let routes = {
let mut profile =
svc::Param::<Option<watch::Receiver<profiles::Profile>>>::param(&parent)
.ok_or(GatewayDomainInvalid)?;
let init =
mk_routes(&profile.borrow_and_update()).ok_or(GatewayDomainInvalid)?;
outbound::http::spawn_routes(profile, init, mk_routes)
};
Ok(Target {
routes,
addr: parent.param(),
version: parent.param(),
parent,
})
})
.push(svc::ArcNewService::layer())
// Authorize requests to the gateway.
.push(self.inbound.authorize_http())
.arc_new_clone_http();
self.inbound
.clone()
.with_stack(http.into_inner())
// Teminates HTTP connections.
// XXX Sets an identity header -- this should probably not be done
// in the gateway, though the value will be stripped by meshed
// servers.
.push_http_server()
.into_stack()
.arc_new_clone_http()
}
}
fn mk_routes(profile: &profiles::Profile) -> Option<outbound::http::Routes> {
if let Some(addr) = profile.addr.clone() {
return Some(outbound::http::Routes::Profile(
outbound::http::profile::Routes {
addr,
routes: profile.http_routes.clone(),
targets: profile.targets.clone(),
},
));
}
if let Some((addr, metadata)) = profile.endpoint.clone() {
return Some(outbound::http::Routes::Endpoint(
Remote(ServerAddr(addr)),
metadata.into(),
));
}
None
}
// === impl ByRequestVersion ===
impl<B, T: Clone> svc::router::SelectRoute<http::Request<B>> for ByRequestVersion<T> {
type Key = Target<T>;
type Error = http::UnsupportedVariant;
fn select(&self, req: &http::Request<B>) -> Result<Self::Key, Self::Error> {
let mut t = self.0.clone();
t.version = req.version().try_into()?;
Ok(t)
}
}
// === impl Target ===
impl<T> Target<T> {
fn discard_parent(self) -> Target {
Target {
addr: self.addr,
routes: self.routes,
version: self.version,
parent: (),
}
}
}
impl<T> svc::Param<GatewayAddr> for Target<T> {
fn param(&self) -> GatewayAddr {
self.addr.clone()
}
}
impl<T> svc::Param<http::Variant> for Target<T> {
fn param(&self) -> http::Variant {
self.version
}
}
impl<T> svc::Param<tls::ClientId> for Target<T>
where
T: svc::Param<tls::ClientId>,
{
fn param(&self) -> tls::ClientId {
self.parent.param()
}
}
impl<T> svc::Param<watch::Receiver<outbound::http::Routes>> for Target<T> {
fn param(&self) -> watch::Receiver<outbound::http::Routes> {
self.routes.clone()
}
}
impl<T> PartialEq for Target<T> {
fn eq(&self, other: &Self) -> bool {
self.addr == other.addr && self.version == other.version
}
}
impl<T> Eq for Target<T> {}
impl<T: std::hash::Hash> std::hash::Hash for Target<T> {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
self.addr.hash(state);
self.version.hash(state);
self.parent.hash(state);
}
}

View File

@ -0,0 +1,142 @@
use futures::{future, TryFutureExt};
use linkerd_app_core::{
identity as id,
proxy::http,
svc::{self, layer},
tls, Error,
};
use linkerd_app_inbound::{GatewayAddr, GatewayLoop};
use std::{
future::Future,
pin::Pin,
task::{Context, Poll},
};
/// A `NewService` that wraps inner services with [`HttpGateway`].
#[derive(Clone, Debug)]
pub(crate) struct NewHttpGateway<N> {
inner: N,
local_id: id::Id,
}
/// A `Service` middleware that fails requests that would loop. It reads and
/// updates the `forwarded` header to detect loops.
#[derive(Clone, Debug)]
pub(crate) struct HttpGateway<S> {
inner: S,
host: String,
client_id: tls::ClientId,
local_id: id::Id,
}
type ResponseFuture<T> = Pin<Box<dyn Future<Output = Result<T, Error>> + Send + 'static>>;
// === impl NewHttpGateway ===
impl<N> NewHttpGateway<N> {
pub fn new(inner: N, local_id: id::Id) -> Self {
Self { inner, local_id }
}
pub fn layer(local_id: id::Id) -> impl layer::Layer<N, Service = Self> + Clone {
layer::mk(move |inner| Self::new(inner, local_id.clone()))
}
}
impl<T, N> svc::NewService<T> for NewHttpGateway<N>
where
T: svc::Param<GatewayAddr>,
T: svc::Param<tls::ClientId>,
N: svc::NewService<T> + Clone + Send + 'static,
{
type Service = HttpGateway<N::Service>;
fn new_service(&self, target: T) -> Self::Service {
let GatewayAddr(addr) = target.param();
HttpGateway {
host: addr.as_http_authority().to_string(),
client_id: target.param(),
local_id: self.local_id.clone(),
inner: self.inner.new_service(target),
}
}
}
// === impl HttpGateway ===
impl<B, S> tower::Service<http::Request<B>> for HttpGateway<S>
where
B: http::Body + 'static,
S: tower::Service<http::Request<B>, Response = http::Response<http::BoxBody>>,
S::Error: Into<Error> + 'static,
S::Future: Send + 'static,
{
type Response = S::Response;
type Error = Error;
type Future = ResponseFuture<S::Response>;
#[inline]
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
// If the client ID is the same as the gateway's, then we're in a loop.
if *self.client_id == self.local_id {
return Poll::Ready(Err(GatewayLoop.into()));
}
self.inner.poll_ready(cx).map_err(Into::into)
}
fn call(&mut self, mut request: http::Request<B>) -> Self::Future {
// Check forwarded headers to see if this request has already
// transited through this gateway.
for forwarded in request
.headers()
.get_all(http::header::FORWARDED)
.into_iter()
.filter_map(|h| h.to_str().ok())
{
if let Some(by) = fwd_by(forwarded) {
tracing::info!(%forwarded);
if by == self.local_id.to_str() {
return Box::pin(future::err(GatewayLoop.into()));
}
}
}
// Determine the value of the forwarded header using the Client
// ID from the requests's extensions.
let fwd = format!(
"by={};for={};host={};proto=https",
self.local_id, self.client_id, self.host
);
request.headers_mut().append(
http::header::FORWARDED,
http::header::HeaderValue::from_str(&fwd)
.expect("Forwarded header value must be valid"),
);
// If we're forwarding HTTP/1 requests, the old `Host` header
// was stripped on the peer's outbound proxy. But the request
// should have an updated `Host` header now that it's being
// routed in the cluster.
if let ::http::Version::HTTP_11 | ::http::Version::HTTP_10 = request.version() {
request.headers_mut().insert(
http::header::HOST,
http::header::HeaderValue::from_str(&self.host)
.expect("Host header value must be valid"),
);
}
tracing::trace!("Passing request to outbound");
Box::pin(self.inner.call(request).map_err(Into::into))
}
}
fn fwd_by(fwd: &str) -> Option<&str> {
for kv in fwd.split(';') {
let mut kv = kv.split('=');
if let Some("by") = kv.next() {
return kv.next();
}
}
None
}

View File

@ -0,0 +1,277 @@
use super::*;
use linkerd_app_core::{
svc::{NewService, ServiceExt},
trace::test::trace_init,
NameAddr,
};
use linkerd_app_inbound::GatewayLoop;
use linkerd_proxy_server_policy as policy;
use std::{str::FromStr, sync::Arc, time};
use tower_test::mock;
#[tokio::test]
async fn gateway() {
assert_eq!(
Test::default().run().await.unwrap().status(),
http::StatusCode::NO_CONTENT
);
}
#[tokio::test]
async fn forward_loop() {
let test = Test {
orig_fwd: Some(
"by=gateway.id.test;for=client.id.test;host=dst.test.example.com:4321;proto=https",
),
..Default::default()
};
let e = test.run().await.unwrap_err();
assert!(e.is::<GatewayLoop>());
}
/// If the HTTP stack is misconfigured--specifically if two server stacks are
/// instrumented--it may incorrectly determine that an upgraded origin-form
/// HTTP/1.1 request should be in absolute-form.
///
/// This test validates that origin-form requests are not marked as
/// absolute-form.
#[tokio::test(flavor = "current_thread")]
async fn upgraded_request_remains_relative_form() {
let _trace = trace_init();
#[derive(Clone, Debug)]
struct Target;
impl svc::Param<GatewayAddr> for Target {
fn param(&self) -> GatewayAddr {
GatewayAddr("web.test.example.com:80".parse().unwrap())
}
}
impl svc::Param<OrigDstAddr> for Target {
fn param(&self) -> OrigDstAddr {
OrigDstAddr(([10, 10, 10, 10], 4143).into())
}
}
impl svc::Param<Remote<ClientAddr>> for Target {
fn param(&self) -> Remote<ClientAddr> {
Remote(ClientAddr(([10, 10, 10, 11], 41430).into()))
}
}
impl svc::Param<ServerLabel> for Target {
fn param(&self) -> ServerLabel {
ServerLabel(policy::Meta::new_default("test"), 4143)
}
}
impl svc::Param<tls::ClientId> for Target {
fn param(&self) -> tls::ClientId {
tls::ClientId::from_str("client.id.test").unwrap()
}
}
impl svc::Param<tls::ConditionalServerTls> for Target {
fn param(&self) -> tls::ConditionalServerTls {
tls::ConditionalServerTls::Some(tls::ServerTls::Established {
client_id: Some(self.param()),
negotiated_protocol: None,
})
}
}
impl svc::Param<Option<profiles::Receiver>> for Target {
fn param(&self) -> Option<profiles::Receiver> {
Some(linkerd_app_test::profile::only(profiles::Profile {
addr: Some(profiles::LogicalAddr(
"web.test.example.com:80".parse().unwrap(),
)),
..profiles::Profile::default()
}))
}
}
impl svc::Param<Option<watch::Receiver<profiles::Profile>>> for Target {
fn param(&self) -> Option<watch::Receiver<profiles::Profile>> {
svc::Param::<Option<profiles::Receiver>>::param(self).map(Into::into)
}
}
impl svc::Param<http::Variant> for Target {
fn param(&self) -> http::Variant {
http::Variant::H2
}
}
impl svc::Param<http::normalize_uri::DefaultAuthority> for Target {
fn param(&self) -> http::normalize_uri::DefaultAuthority {
http::normalize_uri::DefaultAuthority(Some(
http::uri::Authority::from_str("web.test.example.com").unwrap(),
))
}
}
impl svc::Param<inbound::policy::AllowPolicy> for Target {
fn param(&self) -> inbound::policy::AllowPolicy {
let policy = policy::ServerPolicy {
meta: inbound::policy::Meta::new_default("test"),
protocol: policy::Protocol::Detect {
timeout: time::Duration::from_secs(10),
tcp_authorizations: Arc::new([]),
http: Arc::new([policy::http::default(Arc::new([policy::Authorization {
authentication: policy::Authentication::TlsUnauthenticated,
networks: vec![svc::Param::<Remote<ClientAddr>>::param(self).ip().into()],
meta: Arc::new(policy::Meta::Resource {
group: "policy.linkerd.io".into(),
kind: "authorizationpolicy".into(),
name: "testsaz".into(),
}),
}]))]),
},
local_rate_limit: Arc::new(Default::default()),
};
let (policy, tx) = inbound::policy::AllowPolicy::for_test(self.param(), policy);
tokio::spawn(async move {
tx.closed().await;
});
policy
}
}
let (inner, mut handle) =
mock::pair::<http::Request<http::BoxBody>, http::Response<http::BoxBody>>();
handle.allow(1);
let outer = {
let (outbound, _outbound_shutdown) = crate::Outbound::for_test();
let (inbound, _inbound_shutdown) = crate::Inbound::for_test();
let gateway = Gateway {
inbound,
outbound,
config: crate::Config {
allow_discovery: std::iter::once("example.com".parse().unwrap()).collect(),
},
};
let resolve = linkerd_app_test::resolver::Dst::default().endpoint_exists(
svc::Param::<GatewayAddr>::param(&Target).0,
svc::Param::<Remote<ClientAddr>>::param(&Target).into(),
Metadata::default(),
);
gateway
.http(
svc::ArcNewHttp::new(move |_: _| svc::BoxHttp::new(inner.clone())),
resolve,
)
.new_service(Target)
};
// Process a request in the background so we can handle it ourselves to see
// how the request was mutated
tokio::spawn(async move {
let (handle, _closed) =
http::ClientHandle::new(svc::Param::<Remote<ClientAddr>>::param(&Target).into());
let req = http::Request::builder()
.method(http::Method::GET)
.version(::http::Version::HTTP_2)
.uri("http://web-original.test.example.com/test.txt")
.header("l5d-orig-proto", "HTTP/1.1")
.extension(handle)
.body(http::BoxBody::default())
.unwrap();
let _rsp = outer.oneshot(req).await.unwrap();
drop(_closed);
});
let (request, _respond) = handle.next_request().await.unwrap();
assert!(request
.extensions()
.get::<http::h1::WasAbsoluteForm>()
.is_none());
}
struct Test {
target: NameAddr,
client_id: tls::ClientId,
orig_fwd: Option<&'static str>,
}
impl Default for Test {
fn default() -> Self {
Self {
target: NameAddr::from_str("dst.test.example.com:4321").unwrap(),
client_id: tls::ClientId::from_str("client.id.test").unwrap(),
orig_fwd: None,
}
}
}
impl Test {
async fn run(self) -> Result<http::Response<http::BoxBody>, Error> {
let Self {
target,
client_id,
orig_fwd,
..
} = self;
let (outbound, mut handle) =
mock::pair::<http::Request<http::BoxBody>, http::Response<http::BoxBody>>();
let new = NewHttpGateway::new(
move |_: _| outbound.clone(),
"gateway.id.test".parse().unwrap(),
);
#[derive(Clone, Debug)]
struct Target {
addr: NameAddr,
client_id: tls::ClientId,
}
impl svc::Param<GatewayAddr> for Target {
fn param(&self) -> GatewayAddr {
GatewayAddr(self.addr.clone())
}
}
impl svc::Param<tls::ClientId> for Target {
fn param(&self) -> tls::ClientId {
self.client_id.clone()
}
}
let gateway = svc::stack(new)
.check_new_service::<Target, http::Request<http::BoxBody>>()
.new_service(Target {
addr: target.clone(),
client_id,
});
let bg = tokio::spawn(async move {
handle.allow(1);
let (req, rsp) = handle.next_request().await.unwrap();
assert_eq!(
req.headers().get(http::header::FORWARDED).unwrap(),
"by=gateway.id.test;for=client.id.test;host=dst.test.example.com:4321;proto=https"
);
rsp.send_response(
http::Response::builder()
.status(http::StatusCode::NO_CONTENT)
.body(Default::default())
.unwrap(),
);
});
let req = http::Request::builder().uri(format!("http://{target}"));
let req = orig_fwd
.into_iter()
.fold(req, |req, fwd| req.header(http::header::FORWARDED, fwd))
.body(Default::default())
.unwrap();
let rsp = gateway.oneshot(req).await?;
bg.await?;
Ok(rsp)
}
}

Some files were not shown because too many files have changed in this diff Show More