Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
5f971f6
feat(ewma): add base EWMA crate
unleashed May 21, 2026
6cc6022
feat(ewma): add success-rate tracking extensions
unleashed May 21, 2026
0348546
feat(classify): add Retry-After and gRPC pushback parsers
unleashed May 7, 2026
8a7fbb2
feat(load-biaser): add load biasing crate with RTT tracking and failu…
unleashed May 21, 2026
c40a0af
test(load-biaser): add unit tests for load biasing lifecycle
unleashed May 21, 2026
342f7d9
Update linkerd/http/classify/Cargo.toml
unleashed May 26, 2026
11ee334
Update linkerd/load-biaser/Cargo.toml
unleashed May 26, 2026
4f5b302
refactor(load-biaser): remove unused max parameter from attach_parsed…
unleashed May 25, 2026
b4d0693
refactor(load-biaser): encapsulate CachedRateLimitHint with construct…
unleashed May 25, 2026
3b1d468
docs(ewma): add crate-level doc comment
unleashed May 25, 2026
6ed442b
build(ewma): disable default tokio features
unleashed May 25, 2026
380c8f2
build(load-biaser): declare tokio sync feature in dev-dependencies
unleashed May 25, 2026
b74b52a
refactor(classify): use GRPC_RETRY_PUSHBACK_MS constant in tests
unleashed May 25, 2026
ae6de47
fix(ewma): fix typo in test comment
unleashed May 25, 2026
3023422
refactor(load-biaser): add #[must_use] to LoadBiaser::new
unleashed May 25, 2026
02d9f9d
fix(load-biaser): ensure we deal with gRPC before checking gRPC status
unleashed May 25, 2026
d7f58f2
fix(load-biaser): restrict gRPC failure classification to server errors
unleashed May 25, 2026
12adaca
test(load-biaser): add tests for extended gRPC status classification
unleashed May 25, 2026
10b32c6
test(load-biaser): ensure repeated failures maintain penalty level
unleashed May 25, 2026
51c7b2e
feat(ewma): expose last update timestamp
unleashed May 25, 2026
8fe67af
test(ewma): verify last_update across construction, changes, and reads
unleashed May 25, 2026
98aafb8
Apply suggestions from code review
unleashed Jun 2, 2026
d7c03b5
fix(ewma,http-classify): address feedback
unleashed Jun 5, 2026
d16388a
refactor(load-biaser): address feedback to use a single penalized EWM…
unleashed Jun 5, 2026
2589a46
refactor(load-biaser): measure RTT to first response data frame by de…
unleashed Jun 5, 2026
ee9e722
refactor(load-biaser): store the failure penalty as integer milliseconds
unleashed Jun 5, 2026
48e1cc3
refactor(load-biaser): name the default RTT and decay durations
unleashed Jun 5, 2026
163df42
docs(load-biaser): name the gRPC status codes in the failure classifier
unleashed Jun 5, 2026
761a019
docs(ewma): reword stale crate comment
unleashed Jun 5, 2026
73ce450
fix(http-classify): parse grpc pushback as i32
unleashed Jun 8, 2026
9e19b9a
refactor(load-biaser): consolidate mocks into MockService
unleashed Jun 8, 2026
a117373
refactor(load-biaser): apply ResponseFailureHint feedback
unleashed Jun 8, 2026
e3f47cb
refactor(load-biaser): remove unused get_ref
unleashed Jun 8, 2026
b19fa51
test(load-biaser): assert load values in pending test
unleashed Jun 8, 2026
e212159
build(load-biaser): drop orphaned test deps
unleashed Jun 8, 2026
c3bc7c6
docs(load-biaser): correct stale comments
unleashed Jun 8, 2026
841abfa
refactor(ewma): use is_infinite instead of f64::INFINITY
unleashed Jun 8, 2026
cfad958
test(ewma): test add_peak when providing a lower measurement
unleashed Jun 8, 2026
1d592a9
test(ewma): add() ignores old timestamp measurements
unleashed Jun 8, 2026
aa9e42d
feat(load-biaser): floor Retry-After effect on RTT to penalty base
unleashed Jun 8, 2026
d2ea6ba
test(load-biaser): measure a real success RTT
unleashed Jun 8, 2026
0fa734e
test(load-biaser): count concurrent in-flight
unleashed Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1687,6 +1687,13 @@ dependencies = [
"pin-project",
]

[[package]]
name = "linkerd-ewma"
version = "0.1.0"
dependencies = [
"tokio",
]

[[package]]
name = "linkerd-exp-backoff"
version = "0.1.0"
Expand Down Expand Up @@ -1751,6 +1758,7 @@ dependencies = [
"futures",
"http",
"http-body",
"httpdate",
"linkerd-error",
"linkerd-http-box",
"linkerd-stack",
Expand Down Expand Up @@ -1979,6 +1987,27 @@ dependencies = [
"tokio-util",
]

[[package]]
name = "linkerd-load-biaser"
version = "0.1.0"
dependencies = [
"bytes",
"futures",
"http",
"http-body",
"http-body-util",
"hyper-balance",
"linkerd-ewma",
"linkerd-http-classify",
"linkerd-stack",
"parking_lot",
"pin-project",
"tokio",
"tower",
"tower-service",
"tracing",
]

[[package]]
name = "linkerd-meshtls"
version = "0.1.0"
Expand Down
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ members = [
"linkerd/error",
"linkerd/errno",
"linkerd/error-respond",
"linkerd/ewma",
"linkerd/exp-backoff",
"linkerd/http/access-log",
"linkerd/http/body-eos",
Expand All @@ -42,6 +43,7 @@ members = [
"linkerd/identity",
"linkerd/idle-cache",
"linkerd/io",
"linkerd/load-biaser",
"linkerd/meshtls",
"linkerd/meshtls/verifier",
"linkerd/metrics",
Expand Down Expand Up @@ -105,6 +107,7 @@ drain = { version = "0.2", default-features = false }
h2 = { version = "0.4" }
http = { version = "1" }
http-body = { version = "1" }
httpdate = { version = "1.0" }
hyper = { version = "1", default-features = false }
prometheus-client = { version = "0.23" }
prost = { version = "0.14" }
Expand Down
13 changes: 13 additions & 0 deletions linkerd/ewma/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[package]
name = "linkerd-ewma"
version = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
publish = { workspace = true }

[dependencies]
tokio = { version = "1", default-features = false, features = ["time"] }

[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt", "test-util"] }
Loading
Loading