Skip to content

Commit aef5359

Browse files
committed
fix: add logging for P2P outbox message processing
- Log when message field is missing from outbox - Log signing success/failure at ERROR level - Log successful broadcasts at INFO level - Helps debug proposal timeout issues
1 parent 3ba56f2 commit aef5359

File tree

1 file changed

+36
-35
lines changed

1 file changed

+36
-35
lines changed

bins/validator-node/src/main.rs

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,13 +1695,18 @@ async fn run_validator() -> Result<()> {
16951695
}
16961696
for msg_value in messages {
16971697
// Parse the outbox message
1698-
if let (Some(message), target) = (
1699-
msg_value.get("message"),
1700-
msg_value.get("target").and_then(|t| t.as_str()),
1701-
) {
1702-
// Check if this is a DecryptApiKeyRequest - handle locally
1703-
if let Ok(platform_challenge_sdk::ChallengeP2PMessage::DecryptApiKeyRequest(req)) =
1704-
serde_json::from_value::<platform_challenge_sdk::ChallengeP2PMessage>(message.clone()) {
1698+
let message = match msg_value.get("message") {
1699+
Some(m) => m,
1700+
None => {
1701+
warn!("Outbox message missing 'message' field: {:?}", msg_value);
1702+
continue;
1703+
}
1704+
};
1705+
let target = msg_value.get("target").and_then(|t| t.as_str());
1706+
1707+
// Check if this is a DecryptApiKeyRequest - handle locally
1708+
if let Ok(platform_challenge_sdk::ChallengeP2PMessage::DecryptApiKeyRequest(req)) =
1709+
serde_json::from_value::<platform_challenge_sdk::ChallengeP2PMessage>(message.clone()) {
17051710
// Decrypt the API key locally and send response back to container
17061711
// Use public key (hotkey bytes) - the encryption uses SHA256(domain || pubkey || salt)
17071712
let response = match platform_challenge_sdk::decrypt_api_key(
@@ -1756,43 +1761,39 @@ async fn run_validator() -> Result<()> {
17561761
.unwrap_or_default(),
17571762
};
17581763

1759-
let network_msg =
1760-
NetworkMessage::ChallengeMessage(challenge_msg);
1761-
if let Ok(signed) = SignedNetworkMessage::new(
1762-
network_msg,
1763-
&keypair_for_outbox,
1764-
) {
1765-
if let Some(ref target_hotkey) = target {
1766-
// Targeted send: broadcast but log the intended target
1767-
// All validators see the message for consensus, but the
1768-
// payload may contain target info for selective processing
1769-
debug!(
1770-
"Broadcasting P2P message (target: {})",
1771-
&target_hotkey[..16.min(target_hotkey.len())]
1772-
);
1773-
if let Err(e) = net_cmd_tx_for_outbox
1774-
.send(NetworkCommand::Broadcast(signed))
1775-
.await
1776-
{
1777-
debug!("Failed to broadcast targeted message: {}", e);
1764+
let network_msg =
1765+
NetworkMessage::ChallengeMessage(challenge_msg);
1766+
match SignedNetworkMessage::new(
1767+
network_msg,
1768+
&keypair_for_outbox,
1769+
) {
1770+
Ok(signed) => {
1771+
let result = net_cmd_tx_for_outbox
1772+
.send(NetworkCommand::Broadcast(signed))
1773+
.await;
1774+
match result {
1775+
Ok(_) => {
1776+
info!(
1777+
"Broadcast P2P message from challenge {} to network{}",
1778+
config.name,
1779+
target.map(|t| format!(" (target: {})", &t[..16.min(t.len())])).unwrap_or_default()
1780+
);
17781781
}
1779-
} else {
1780-
// Broadcast to all
1781-
if let Err(e) = net_cmd_tx_for_outbox
1782-
.send(NetworkCommand::Broadcast(signed))
1783-
.await
1784-
{
1785-
debug!("Failed to broadcast outbox message: {}", e);
1782+
Err(e) => {
1783+
error!("Failed to send broadcast command: {}", e);
17861784
}
17871785
}
17881786
}
1787+
Err(e) => {
1788+
error!("Failed to sign P2P message: {}", e);
1789+
}
17891790
}
17901791
}
17911792

17921793
let count = messages.len();
17931794
if count > 0 {
1794-
debug!(
1795-
"Broadcast {} P2P messages from container '{}'",
1795+
info!(
1796+
"Processed {} P2P messages from container '{}'",
17961797
count, config.name
17971798
);
17981799
}

0 commit comments

Comments
 (0)