Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update the proxy to use Tokio 0.3 #732

Merged
merged 73 commits into from Dec 4, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
f9caaec
profiles: use `tokio::sync::watch` from Tokio 0.3
hawkw Oct 29, 2020
4fc2f79
update tower dependencies
hawkw Oct 30, 2020
b383a78
update hyper & tokio deps
hawkw Oct 30, 2020
04960aa
replace all `delay`s with `sleep`s
hawkw Oct 30, 2020
f133b7d
ye olde massive IO trait update
hawkw Oct 30, 2020
e165276
update buffer to work with new mpsc
hawkw Oct 30, 2020
5e1ec7a
factor out poll_ready-able MPSC
hawkw Oct 30, 2020
ca9e6a4
use poll_readyable channel in `discovery::buffer`
hawkw Oct 30, 2020
771af19
fixup bytes compat situation
hawkw Oct 30, 2020
32111d0
senders are no longer mut
hawkw Oct 30, 2020
9932337
use `tower-request-modifier` from before it became impossible to use
hawkw Oct 30, 2020
8e98e5d
fixy fixy fixy
hawkw Oct 30, 2020
0c5024f
update test stuff
hawkw Oct 30, 2020
c8e4473
use new rt builder
hawkw Oct 30, 2020
85fba37
update tonic
hawkw Nov 3, 2020
89bddc6
update integration tests
hawkw Nov 3, 2020
dacdd5e
trust-dns requires tokio 0.2
hawkw Nov 3, 2020
6a47e5b
update tests
hawkw Nov 3, 2020
f289243
hyper bump, etc
hawkw Nov 3, 2020
5497ed5
tokio 0.3 requires us to set O_NONBLOCK ourselves
hawkw Nov 5, 2020
821af2c
test support sockets also need O_NONBLOCK
hawkw Nov 5, 2020
5bb8083
fix channel max permits overflow
hawkw Nov 5, 2020
c7c3a7e
put back set_keepalive
hawkw Nov 5, 2020
f9d367a
use the same h2 version has hyper does
hawkw Nov 6, 2020
3d1d220
pick up fix for missing EOFs (hyperium/hyper#2322)
hawkw Nov 6, 2020
6a58672
use the same h2 version as hyper 2: electric h2
hawkw Nov 6, 2020
f471335
Merge branch 'main' into eliza/tokio-0.3
hawkw Nov 9, 2020
869c702
drain: update to tokio 0.3
hawkw Nov 12, 2020
00771f8
Merge branch 'eliza/simpler-drain' into eliza/tokio-0.3
hawkw Nov 12, 2020
c23e58a
lockfile stuff
hawkw Nov 13, 2020
8545bf8
Merge branch 'main' into eliza/tokio-0.3
hawkw Nov 13, 2020
6a7195b
Merge branch 'main' into eliza/tokio-0.3
hawkw Nov 18, 2020
c4375f0
Merge branch 'main' into eliza/tokio-0.3
hawkw Nov 25, 2020
1ed36a7
fixup tests
hawkw Nov 25, 2020
743156c
fix test io expecting to be read
hawkw Nov 25, 2020
1f03099
WIP: update hyper, bytes, and friends
hawkw Nov 25, 2020
f7e68f1
update proxy-api
hawkw Dec 1, 2020
c8ac96a
update prost
hawkw Dec 1, 2020
bb9a527
hopefully works with the new hyper upgrade api?
hawkw Dec 1, 2020
492d3d5
update tests
hawkw Dec 1, 2020
45e943d
wip put back upgrade body
hawkw Dec 1, 2020
9fc1591
h1 upgrades work now
hawkw Dec 2, 2020
959c5d6
fix wrong http bodiy bytes conversion in tests
hawkw Dec 2, 2020
a3841d2
Merge branch 'main' into eliza/tokio-0.3
hawkw Dec 2, 2020
116cc74
excise tokio-compat stuff
hawkw Dec 2, 2020
88629ec
Merge branch 'main' into eliza/tokio-0.3
hawkw Dec 3, 2020
9e7d70d
fix manual lockfile surgery
hawkw Dec 3, 2020
11f0649
io: don't vendor poll_read_buf
hawkw Dec 3, 2020
5cff808
Merge branch 'eliza/tokio-0.3' of github.com:linkerd/linkerd2-proxy i…
hawkw Dec 3, 2020
b1d60da
Merge main
hawkw Dec 3, 2020
ce5536e
io: put back writev tests
hawkw Dec 3, 2020
41e59c3
io: put back BoxedIo writev forwarding
hawkw Dec 3, 2020
561d971
fix every other asyncwrite not forwarding writev
hawkw Dec 3, 2020
573b419
io: use `poll_write_buf` from tokio-util
hawkw Dec 3, 2020
8a111bf
fixup duplex
hawkw Dec 3, 2020
5b3fc01
fixup duplex
hawkw Dec 3, 2020
86e1fbe
minimize lockfile changes
hawkw Dec 3, 2020
4f2c218
rustfmt
hawkw Dec 3, 2020
1660e26
also update `tracing`
hawkw Dec 3, 2020
42567a9
de-async-ify dns construction
hawkw Dec 3, 2020
c3ee5a7
rm patch for tokio-util
hawkw Dec 3, 2020
8900cdd
another rustfmt
hawkw Dec 3, 2020
598c9be
switch buffers to use Tokio 0.3 channels
hawkw Dec 4, 2020
eb24cd8
add tests based on Tokio's
hawkw Dec 4, 2020
14cc5a7
let's just use tokio's error types
hawkw Dec 4, 2020
0d02957
Merge branch 'eliza/0.3-channel' into eliza/tokio-0.3
hawkw Dec 4, 2020
8e1503e
Merge branch 'main' into eliza/tokio-0.3
hawkw Dec 4, 2020
50bebf3
fix lockfile
hawkw Dec 4, 2020
cb9e35c
transport: comment on socket conversion safety etc
hawkw Dec 4, 2020
1568cb1
remove unneeded debug impl
hawkw Dec 4, 2020
fd28ef0
clean up git deps & patches
hawkw Dec 4, 2020
8129573
update proxy-api deps
hawkw Dec 4, 2020
3642a18
update the proxy to use Tokio 0.3
hawkw Dec 4, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
737 changes: 358 additions & 379 deletions Cargo.lock

Large diffs are not rendered by default.

17 changes: 16 additions & 1 deletion Cargo.toml
Expand Up @@ -63,4 +63,19 @@ debug = false

[patch.crates-io]
webpki = { git = "https://github.com/linkerd/webpki", branch = "cert-dns-names-0.21", rev = "b2c3bb3" }
tower = { version = "0.3", git = "https://github.com/tower-rs/tower", rev = "ad348d8" }
# TODO(eliza): when the Tokio 0.3 versions of our various dependencies are
# published, remove these patches...
tower = { version = "0.4", git = "https://github.com/tower-rs/tower", rev = "450fa3d2be2b43850ceb125009d636d1d8629ad7" }
hyper = { git = "https://github.com/hyperium/hyper", rev = "d6aadb830072959497f414c01bcdba4c8e681088" }
# this isn't pinned to a rev because it needs to be consistent with Hyper's git
# dep (which is not pinned).
h2 = { git = "https://github.com/hyperium/h2" }
# this isn't pinned to a rev because it needs to be consistent with Hyper's git
# dep (which is `branch = "master"`).
http-body = { git = "https://github.com/hyperium/http-body", branch = "master" }
tokio-rustls = { git = "https://github.com/tokio-rs/tls", rev = "e6ef54641b911cfcf23b77a8c4826ae0f8e9870e" }
tonic = { git = "https://github.com/hawkw/tonic", branch = "eliza/tokio-0.3" }
tonic-build = { git = "https://github.com/hawkw/tonic", branch = "eliza/tokio-0.3" }
prost = { git = "https://github.com/danburkert/prost" }
prost-build = { git = "https://github.com/danburkert/prost" }
prost-types = { git = "https://github.com/danburkert/prost" }
6 changes: 3 additions & 3 deletions hyper-balance/Cargo.toml
Expand Up @@ -8,10 +8,10 @@ publish = false
[dependencies]
futures = "0.3"
http = "0.2"
hyper = "0.13.7"
hyper = "0.14.0-dev"
pin-project = "0.4"
tower = { version = "0.3", default-features = false, features = ["load"]}
tokio = { version = "0.2", features = ["macros"]}
tower = { version = "0.4", default-features = false, features = ["load"]}
tokio = { version = "0.3", features = ["macros"]}

[dev-dependencies]
tokio-test = "0.2"
10 changes: 5 additions & 5 deletions linkerd/app/Cargo.toml
Expand Up @@ -24,8 +24,8 @@ linkerd2-app-outbound = { path = "./outbound" }
linkerd2-opencensus = { path = "../opencensus" }
linkerd2-error = { path = "../error" }
regex = "1.0.0"
tokio = { version = "0.2", features = ["rt-util"] }
tonic = { version = "0.3", default-features = false }
tower = "0.3"
tracing = "0.1.19"
tracing-futures = { version = "0.2", features = ["std-future"]}
tokio = { version = "0.3", features = ["rt"] }
tonic = { version = "0.3", default-features = false, features = ["prost"] }
tower = "0.4"
tracing = "0.1.22"
tracing-futures = { version = "0.2", features = ["std-future"]}
18 changes: 9 additions & 9 deletions linkerd/app/core/Cargo.toml
Expand Up @@ -15,10 +15,10 @@ independently of the inbound and outbound proxy logic.
mock-orig-dst = ["linkerd2-proxy-transport/mock-orig-dst"]

[dependencies]
bytes = "0.5"
bytes = "0.6"
http = "0.2"
http-body = "0.3"
hyper = "0.13.7"
http-body = "0.4"
hyper = "0.14.0-dev"
futures = "0.3"
indexmap = "1.0"
ipnet = "1.0"
Expand All @@ -40,7 +40,7 @@ linkerd2-http-metrics = { path = "../../http-metrics" }
linkerd2-metrics = { path = "../../metrics" }
linkerd2-opencensus = { path = "../../opencensus" }
linkerd2-proxy-core = { path = "../../proxy/core" }
linkerd2-proxy-api = { git = "https://github.com/linkerd/linkerd2-proxy-api", tag = "v0.1.15" }
linkerd2-proxy-api = { git = "https://github.com/linkerd/linkerd2-proxy-api", rev = "259628840ba613c2e5673fc6a39b946e1b06f09a" }
linkerd2-proxy-api-resolve = { path = "../../proxy/api-resolve" }
linkerd2-proxy-discover = { path = "../../proxy/discover" }
linkerd2-proxy-identity = { path = "../../proxy/identity" }
Expand All @@ -60,16 +60,16 @@ linkerd2-stack-metrics = { path = "../../stack/metrics" }
linkerd2-stack-tracing = { path = "../../stack/tracing" }
linkerd2-trace-context = { path = "../../trace-context" }
regex = "1.0.0"
tokio = { version = "0.2.22", features = ["macros", "sync", "parking_lot"]}
tokio = { version = "0.3", features = ["macros", "sync", "parking_lot"]}
tokio-timer = "0.2"
tower-request-modifier = { git = "https://github.com/tower-rs/tower-http" }
tower-request-modifier = { git = "https://github.com/tower-rs/tower-http", rev = "bd7a4654bdc4e2b5363572e9f66b4dbbc7c0e1ea" }
tonic = { version = "0.3", default-features = false, features = ["prost"] }
tracing = "0.1.19"
tracing = "0.1.22"
tracing-futures = { version = "0.2" }
pin-project = "0.4"

[dependencies.tower]
version = "0.3"
version = "0.4"
# disable tower's tracing `log` integration for performance reasons, since we
# will consume tower's traces as traces.
default-features = false
Expand All @@ -85,5 +85,5 @@ libc = "0.2"
procinfo = "0.4.2"

[dev-dependencies]
linkerd2-proxy-api = { git = "https://github.com/linkerd/linkerd2-proxy-api", tag = "v0.1.15", features = ["arbitrary"] }
linkerd2-proxy-api = { git = "https://github.com/linkerd/linkerd2-proxy-api", rev = "259628840ba613c2e5673fc6a39b946e1b06f09a", features = ["arbitrary"] }
prost-types = "0.6.0"
2 changes: 1 addition & 1 deletion linkerd/app/core/src/control.rs
Expand Up @@ -34,7 +34,7 @@ impl fmt::Display for ControlAddr {
}

type BalanceBody =
http::balance::PendingUntilFirstDataBody<tower::load::peak_ewma::Handle, http::Payload>;
http::balance::PendingUntilFirstDataBody<tower::load::peak_ewma::Handle, hyper::Body>;

type RspBody = linkerd2_http_metrics::requests::ResponseBody<BalanceBody, classify::Eos>;

Expand Down
9 changes: 5 additions & 4 deletions linkerd/app/gateway/Cargo.toml
Expand Up @@ -12,11 +12,12 @@ indexmap = "1.0"
linkerd2-app-core = { path = "../core" }
linkerd2-app-inbound = { path = "../inbound" }
linkerd2-app-outbound = { path = "../outbound" }
tower = { version = "0.3", default-features = false }
tracing = "0.1.19"
tower = { version = "0.4", default-features = false }
tracing = "0.1.22"

[dev-dependencies]
tokio = { version = "0.2", features = ["rt-core", "macros"] }
tokio = { version = "0.3", features = ["rt", "macros"] }
tokio-test = "0.2"
tower = { version = "0.3", default-features = false, features = ["util"] }
tower = { version = "0.4", default-features = false, features = ["util"] }
tower-test = "0.3"
linkerd2-app-test = { path = "../test" }
4 changes: 2 additions & 2 deletions linkerd/app/gateway/src/lib.rs
Expand Up @@ -19,6 +19,7 @@ mod test {
Error, NameAddr, NameMatch, Never,
};
use linkerd2_app_inbound::endpoint as inbound;
use linkerd2_app_test as support;
use std::{net::SocketAddr, str::FromStr};
use tower::util::{service_fn, ServiceExt};
use tower_test::mock;
Expand Down Expand Up @@ -133,11 +134,10 @@ mod test {
>();
let mut make_gateway = {
let profiles = service_fn(move |na: NameAddr| async move {
let (mut tx, rx) = tokio::sync::watch::channel(profiles::Profile {
let rx = support::profile::only(profiles::Profile {
name: Some(na.name().clone()),
..profiles::Profile::default()
});
tokio::spawn(async move { tx.closed().await });
Ok::<_, Never>(Some(rx))
});
let allow_discovery = NameMatch::new(Some(dns::Suffix::from_str(suffix).unwrap()));
Expand Down
8 changes: 4 additions & 4 deletions linkerd/app/inbound/Cargo.toml
Expand Up @@ -9,16 +9,16 @@ Configures and runs the inbound proxy
"""

[dependencies]
bytes = "0.5"
bytes = "0.6"
http = "0.2"
futures = { version = "0.3" }
indexmap = "1.0"
linkerd2-app-core = { path = "../core" }
tokio = { version = "0.2", features = ["sync"] }
tracing = "0.1.19"
tokio = { version = "0.3", features = ["sync"] }
tracing = "0.1.22"

[dependencies.tower]
version = "0.3"
version = "0.4"
# disable tower's tracing `log` integration for performance reasons, since we
# will consume tower's traces as traces.
default-features = false
Expand Down
20 changes: 10 additions & 10 deletions linkerd/app/integration/Cargo.toml
Expand Up @@ -18,25 +18,25 @@ flaky_tests = []
nyi = []

[dependencies]
bytes = "0.5"
futures = "0.3"
h2 = "0.2.6"
bytes = "0.6"
futures = "0.3"
h2 = "0.3"
http = "0.2"
http-body = "0.3"
hyper = "0.13.7"
http-body = "0.4"
hyper = "0.14.0-dev"
linkerd2-app = { path = "..", features = ["mock-orig-dst"] }
linkerd2-app-core = { path = "../core", features = ["mock-orig-dst"] }
linkerd2-metrics = { path = "../../metrics", features = ["test_util"] }
linkerd2-proxy-api = { git = "https://github.com/linkerd/linkerd2-proxy-api", tag = "v0.1.15", features = ["arbitrary"] }
linkerd2-proxy-api = { git = "https://github.com/linkerd/linkerd2-proxy-api", rev = "259628840ba613c2e5673fc6a39b946e1b06f09a", features = ["arbitrary"] }
linkerd2-app-test = { path = "../test" }
regex = "0.1"
socket2 = "0.3.12"
rustls = "0.18"
tokio = { version = "0.2", features = ["io-util", "net", "rt-core"]}
tokio-rustls = "0.14.1"
tower = { version = "0.3", default-features = false}
tokio = { version = "0.3", features = ["io-util", "net", "rt", "macros"]}
tokio-rustls = "0.20"
tower = { version = "0.4", default-features = false}
tonic = { version = "0.3", default-features = false }
tracing = "0.1.19"
tracing = "0.1.22"
tracing-futures = { version = "0.2", features = ["std-future"] }
webpki = "0.21"

Expand Down
3 changes: 2 additions & 1 deletion linkerd/app/integration/src/client.rs
@@ -1,4 +1,5 @@
use super::*;
use hyper::body::Buf;
use linkerd2_app_core::proxy::http::trace;
use rustls::ClientConfig;
use std::io;
Expand Down Expand Up @@ -121,7 +122,7 @@ impl Client {
);
let stream = res.into_parts().1;
let mut body = hyper::body::aggregate(stream).await.expect("wait body");
std::str::from_utf8(body.to_bytes().as_ref())
std::str::from_utf8(body.copy_to_bytes(body.remaining()).as_ref())
.unwrap()
.to_string()
}
Expand Down
2 changes: 1 addition & 1 deletion linkerd/app/integration/src/controller.rs
Expand Up @@ -362,7 +362,7 @@ where
let task = tokio::spawn(
cancelable(drain.clone(), async move {
// Start listening on the socket.
let mut listener = crate::listen(sock);
let listener = crate::listen(sock);
let mut listening_tx = Some(listening_tx);

if let Some(delay) = delay {
Expand Down
20 changes: 9 additions & 11 deletions linkerd/app/integration/src/lib.rs
Expand Up @@ -30,7 +30,7 @@ use std::pin::Pin;
pub use std::sync::Arc;
use std::task::{Context, Poll};
pub use std::time::Duration;
pub use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt};
pub use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, ReadBuf};
use tokio::net::TcpListener;
pub use tokio::stream::{Stream, StreamExt};
pub use tokio::sync::oneshot;
Expand Down Expand Up @@ -69,7 +69,7 @@ macro_rules! assert_eventually {
use std::{env, u64};
use std::time::{Instant, Duration};
use std::str::FromStr;
use tracing_futures::Instrument as _;
use tracing::Instrument as _;
// TODO: don't do this *every* time eventually is called (lazy_static?)
let patience = env::var($crate::ENV_TEST_PATIENCE_MS).ok()
.map(|s| {
Expand All @@ -96,7 +96,7 @@ macro_rules! assert_eventually {
)
} else {
tracing::trace!("waiting...");
tokio::time::delay_for(patience).await;
tokio::time::sleep(patience).await;
std::thread::yield_now();
tracing::trace!("done");
}
Expand Down Expand Up @@ -165,14 +165,10 @@ impl AsyncRead for RunningIo {
fn poll_read(
mut self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut [u8],
) -> Poll<io::Result<usize>> {
buf: &mut ReadBuf<'_>,
) -> Poll<io::Result<()>> {
self.as_mut().io.as_mut().poll_read(cx, buf)
}

unsafe fn prepare_uninitialized_buffer(&self, buf: &mut [std::mem::MaybeUninit<u8>]) -> bool {
self.io.prepare_uninitialized_buffer(buf)
}
}

impl AsyncWrite for RunningIo {
Expand Down Expand Up @@ -297,6 +293,8 @@ pub(crate) fn bind_ephemeral() -> (Socket, SocketAddr) {
pub(crate) fn listen(sock: Socket) -> TcpListener {
sock.listen(1024)
.expect("socket should be able to start listening");
TcpListener::from_std(sock.into_tcp_listener())
.expect("socket should be able to set nonblocking")
let sock = sock.into_tcp_listener();
sock.set_nonblocking(true)
.expect("socket should be able to set nonblocking");
TcpListener::from_std(sock).expect("socket should seem okay to tokio")
}
3 changes: 1 addition & 2 deletions linkerd/app/integration/src/proxy.rs
Expand Up @@ -313,9 +313,8 @@ async fn run(proxy: Proxy, mut env: TestEnv, random_ports: bool) -> Listening {
let span = info_span!("proxy", test = %thread_name());
let _enter = span.enter();

tokio::runtime::Builder::new()
tokio::runtime::Builder::new_current_thread()
.enable_all()
.basic_scheduler()
.build()
.expect("proxy")
.block_on(async move {
Expand Down
4 changes: 2 additions & 2 deletions linkerd/app/integration/src/server.rs
Expand Up @@ -169,7 +169,7 @@ impl Server {
self.route_async(path, move |_| {
let resp = resp.clone();
async move {
tokio::time::delay_for(latency).await;
tokio::time::sleep(latency).await;
Ok::<_, BoxError>(
http::Response::builder()
.status(200)
Expand Down Expand Up @@ -223,7 +223,7 @@ impl Server {
}

// After the delay, start listening on the socket.
let mut listener = crate::listen(sock);
let listener = crate::listen(sock);

if let Some(listening_tx) = listening_tx {
let _ = listening_tx.send(());
Expand Down
5 changes: 4 additions & 1 deletion linkerd/app/integration/src/tcp.rs
Expand Up @@ -212,7 +212,10 @@ async fn run_server(tcp: TcpServer) -> server::Listening {
let task = tokio::spawn(
cancelable(drain.clone(), async move {
let mut accepts = tcp.accepts;
let mut listener = TcpListener::from_std(std_listener).expect("TcpListener::from_std");
std_listener
.set_nonblocking(true)
.expect("socket must be able to set nonblocking");
let listener = TcpListener::from_std(std_listener).expect("TcpListener::from_std");

let _ = started_tx.send(());
loop {
Expand Down
9 changes: 5 additions & 4 deletions linkerd/app/integration/src/tests/discovery.rs
Expand Up @@ -213,12 +213,13 @@ macro_rules! generate_tests {
.await
}

#[tokio::test]
#[tokio::test(flavor = "current_thread")]
async fn outbound_destinations_reset_on_reconnect_followed_by_dne() {
outbound_destinations_reset_on_reconnect(controller::destination_does_not_exist()).await
}

async fn outbound_destinations_reset_on_reconnect(up: pb::destination::Update) {
let _trace = trace_init();
let env = TestEnv::new();
let srv = $make_server().route("/", "hello").run().await;
let ctrl = controller::new();
Expand Down Expand Up @@ -250,7 +251,7 @@ macro_rules! generate_tests {
dst_tx1.send(up);

// Wait for the reconnect to happen. TODO: Replace this flaky logic.
tokio::time::delay_for(Duration::from_millis(1000)).await;
tokio::time::sleep(Duration::from_millis(1000)).await;

let rsp = initially_exists
.request(initially_exists.request_builder("/"))
Expand Down Expand Up @@ -320,12 +321,12 @@ macro_rules! generate_tests {
.await;

// Allow the control client to notice a connection error
tokio::time::delay_for(Duration::from_millis(500)).await;
tokio::time::sleep(Duration::from_millis(500)).await;

// Allow our controller to start accepting connections,
// and then wait a little bit so the client tries again.
drop(tx);
tokio::time::delay_for(Duration::from_millis(500)).await;
tokio::time::sleep(Duration::from_millis(500)).await;

let client = $make_client(proxy.outbound, "disco.test.svc.cluster.local");

Expand Down
2 changes: 1 addition & 1 deletion linkerd/app/integration/src/tests/identity.rs
Expand Up @@ -232,7 +232,7 @@ async fn refresh() {
let expiry = expiry_rx.await.expect("wait for expiry");
let how_long = expiry.duration_since(SystemTime::now()).unwrap();

tokio::time::delay_for(how_long).await;
tokio::time::sleep(how_long).await;

assert_eventually!(refreshed.load(Ordering::SeqCst) == true);
}
Expand Down
Expand Up @@ -61,7 +61,7 @@ async fn wait_for_profile_stage(client: &client::Client, metrics: &client::Clien
break;
}

tokio::time::delay_for(std::time::Duration::from_millis(200)).await;
tokio::time::sleep(std::time::Duration::from_millis(200)).await;
}
}

Expand Down
2 changes: 1 addition & 1 deletion linkerd/app/integration/src/tests/profiles.rs
Expand Up @@ -122,7 +122,7 @@ macro_rules! profile_test {
break;
}

tokio::time::delay_for(std::time::Duration::from_millis(200)).await;
tokio::time::sleep(std::time::Duration::from_millis(200)).await;
}

$with_client(client).await;
Expand Down