Skip to content

Commit

Permalink
perf: avoid spawning log producer without consumers (#689)
Browse files Browse the repository at this point in the history
  • Loading branch information
DDtKey committed Jul 7, 2024
1 parent f79ed70 commit 3263313
Showing 1 changed file with 18 additions and 14 deletions.
32 changes: 18 additions & 14 deletions testcontainers/src/core/containers/async_container.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,23 +65,27 @@ where
dropped: false,
};

let mut logs = container.docker_client.logs(&container.id, true);
let container_id = container.id.clone();
tokio::spawn(async move {
while let Some(result) = logs.next().await {
match result {
Ok(record) => {
for consumer in &log_consumers {
consumer.accept(&record).await;
tokio::task::yield_now().await;
if !log_consumers.is_empty() {
let mut logs = container.docker_client.logs(&container.id, true);
let container_id = container.id.clone();
tokio::spawn(async move {
while let Some(result) = logs.next().await {
match result {
Ok(record) => {
for consumer in &log_consumers {
consumer.accept(&record).await;
tokio::task::yield_now().await;
}
}
Err(err) => {
log::warn!(
"Failed to read log frame for container {container_id}: {err}",
);
}
}
Err(err) => {
log::warn!("Failed to read log frame for container {container_id}: {err}",);
}
}
}
});
});
}

let ready_conditions = container.image().ready_conditions();
container.block_until_ready(ready_conditions).await?;
Expand Down

0 comments on commit 3263313

Please sign in to comment.