Skip to content

Commit

Permalink
Fix case were agent log message causes startup failure
Browse files Browse the repository at this point in the history
  • Loading branch information
aviramha committed Apr 30, 2024
1 parent 9fe23a2 commit 459cd96
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
1 change: 1 addition & 0 deletions changelog.d/+log-message-causes-failure.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix case were agent log message causes startup failure
8 changes: 4 additions & 4 deletions mirrord/agent/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -243,9 +243,9 @@ impl ClientConnectionHandler {

let file_manager = FileManager::new(pid.or_else(|| state.ephemeral.then_some(1)));

let tcp_sniffer_api = Self::ceate_sniffer_api(id, bg_tasks.sniffer, &mut connection).await;
let tcp_sniffer_api = Self::create_sniffer_api(id, bg_tasks.sniffer, &mut connection).await;
let tcp_stealer_api =
Self::ceate_stealer_api(id, bg_tasks.stealer, protocol_version, &mut connection)
Self::create_stealer_api(id, bg_tasks.stealer, protocol_version, &mut connection)
.await?;
let dns_api = Self::create_dns_api(bg_tasks.dns);

Expand All @@ -267,7 +267,7 @@ impl ClientConnectionHandler {
Ok(client_handler)
}

async fn ceate_sniffer_api(
async fn create_sniffer_api(
id: ClientId,
task: BackgroundTask<SnifferCommand>,
connection: &mut ClientConnection,
Expand Down Expand Up @@ -295,7 +295,7 @@ impl ClientConnectionHandler {
}
}

async fn ceate_stealer_api(
async fn create_stealer_api(
id: ClientId,
task: BackgroundTask<StealerCommand>,
protocol_version: semver::Version,
Expand Down
19 changes: 15 additions & 4 deletions mirrord/cli/src/internal_proxy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@ use std::{
time::Duration,
};

use clap::error;

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / check-rust-docs

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / check-rust-docs

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / lint

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / lint

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / macos_tests

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / macos_tests

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / integration_tests

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / integration_tests

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / e2e (docker)

unused import: `clap::error`

Check failure on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / e2e (containerd)

unused import: `clap::error`

Check warning on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / build_binaries_aarch64-unknown-linux-gnu

unused import: `clap::error`

Check warning on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / build_binaries_x86_64-unknown-linux-gnu

unused import: `clap::error`

Check warning on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / build_binaries_macos

unused import: `clap::error`

Check warning on line 20 in mirrord/cli/src/internal_proxy.rs

View workflow job for this annotation

GitHub Actions / build_binaries_macos

unused import: `clap::error`
use mirrord_analytics::{AnalyticsError, AnalyticsReporter, CollectAnalytics, Reporter};
use mirrord_config::LayerConfig;
use mirrord_intproxy::{
agent_conn::{AgentConnectInfo, AgentConnection},
IntProxy,
};
use mirrord_protocol::{pause::DaemonPauseTarget, ClientMessage, DaemonMessage};
use mirrord_protocol::{pause::DaemonPauseTarget, ClientMessage, DaemonMessage, LogLevel};
use nix::{
libc,
sys::resource::{setrlimit, Resource},
Expand Down Expand Up @@ -254,10 +255,20 @@ async fn ping(
receiver: &mut mpsc::Receiver<DaemonMessage>,
) -> Result<(), InternalProxySetupError> {
sender.send(ClientMessage::Ping).await?;
match receiver.recv().await {
Some(DaemonMessage::Pong) => Ok(()),
_ => Err(InternalProxySetupError::AgentClosedConnection),
loop {
match tokio::time::timeout(Duration::from_secs(5), receiver.recv()).await {
Ok(Some(DaemonMessage::Pong)) => break,
Ok(Some(DaemonMessage::LogMessage(msg))) => match msg.level {
LogLevel::Error => error!("Agent log: {}", msg.message),
LogLevel::Warn => warn!("Agent log: {}", msg.message),
},
other => {
error!(?other, "Invalid ping response");
return Err(InternalProxySetupError::AgentClosedConnection);
}
}
}
Ok(())
}

fn create_ping_loop(
Expand Down

0 comments on commit 459cd96

Please sign in to comment.