Page MenuHomePhabricator

D13454.diff
No OneTemporary

D13454.diff

diff --git a/services/tunnelbroker/src/constants.rs b/services/tunnelbroker/src/constants.rs
--- a/services/tunnelbroker/src/constants.rs
+++ b/services/tunnelbroker/src/constants.rs
@@ -62,3 +62,17 @@
pub const DEVICE_TOKEN_INDEX_NAME: &str = "deviceToken-index";
}
}
+
+// Log Error Types
+
+pub mod error_types {
+ pub const AMQP_ERROR: &str = "AMQP Error";
+ pub const DDB_ERROR: &str = "DDB Error";
+ pub const FCM_ERROR: &str = "FCM Error";
+ pub const APNS_ERROR: &str = "APNs Error";
+ pub const WEB_PUSH_ERROR: &str = "Web Push Error";
+ pub const WNS_ERROR: &str = "WNS Error";
+ pub const IDENTITY_ERROR: &str = "Identity Error";
+ pub const WEBSOCKET_ERROR: &str = "Websocket Error";
+ pub const SERVER_ERROR: &str = "Server Error";
+}
diff --git a/services/tunnelbroker/src/database/message.rs b/services/tunnelbroker/src/database/message.rs
--- a/services/tunnelbroker/src/database/message.rs
+++ b/services/tunnelbroker/src/database/message.rs
@@ -4,6 +4,7 @@
use crate::constants::dynamodb::undelivered_messages::{
DEVICE_ID, MESSAGE_ID, PAYLOAD,
};
+use crate::constants::error_types;
#[derive(Debug, derive_more::Display, derive_more::Error)]
pub enum MessageErrors {
@@ -12,7 +13,11 @@
impl From<DBItemError> for MessageErrors {
fn from(err: DBItemError) -> Self {
- tracing::error!("Failed to extract MessageToDevice attribute: {:?}", err);
+ tracing::error!(
+ errorType = error_types::DDB_ERROR,
+ "Failed to extract MessageToDevice attribute: {:?}",
+ err
+ );
MessageErrors::SerializationError
}
}
diff --git a/services/tunnelbroker/src/database/mod.rs b/services/tunnelbroker/src/database/mod.rs
--- a/services/tunnelbroker/src/database/mod.rs
+++ b/services/tunnelbroker/src/database/mod.rs
@@ -14,6 +14,7 @@
use tracing::{debug, error, warn};
use crate::constants::dynamodb::{device_tokens, undelivered_messages};
+use crate::constants::error_types;
pub mod message;
pub mod message_id;
@@ -34,7 +35,10 @@
tonic::Status::unavailable("please retry")
}
e => {
- error!("Encountered an unexpected error: {}", e);
+ error!(
+ errorType = error_types::DDB_ERROR,
+ "Encountered an unexpected error: {}", e
+ );
tonic::Status::failed_precondition("unexpected error")
}
}
@@ -153,7 +157,10 @@
.send()
.await
.map_err(|e| {
- error!("DynamoDB client failed to remove device token: {:?}", e);
+ error!(
+ errorType = error_types::DDB_ERROR,
+ "DynamoDB client failed to remove device token: {:?}", e
+ );
Error::AwsSdk(e.into())
})?;
@@ -175,7 +182,10 @@
.send()
.await
.map_err(|e| {
- error!("DynamoDB client failed to get device token");
+ error!(
+ errorType = error_types::DDB_ERROR,
+ "DynamoDB client failed to get device token"
+ );
Error::AwsSdk(e.into())
})?;
@@ -231,8 +241,8 @@
.await
.map_err(|e| {
error!(
- "DynamoDB client failed to find existing device token {:?}",
- e
+ errorType = error_types::DDB_ERROR,
+ "DynamoDB client failed to find existing device token {:?}", e
);
Error::AwsSdk(e.into())
})?;
@@ -278,7 +288,10 @@
}
put_item_input.send().await.map_err(|e| {
- error!("DynamoDB client failed to set device token {:?}", e);
+ error!(
+ errorType = error_types::DDB_ERROR,
+ "DynamoDB client failed to set device token {:?}", e
+ );
Error::AwsSdk(e.into())
})?;
@@ -306,8 +319,8 @@
.await
.map_err(|e| {
error!(
- "DynamoDB client failed to mark device token as invalid {:?}",
- e
+ errorType = error_types::DDB_ERROR,
+ "DynamoDB client failed to mark device token as invalid {:?}", e
);
Error::AwsSdk(e.into())
})?;
diff --git a/services/tunnelbroker/src/main.rs b/services/tunnelbroker/src/main.rs
--- a/services/tunnelbroker/src/main.rs
+++ b/services/tunnelbroker/src/main.rs
@@ -15,7 +15,7 @@
use crate::notifs::NotifClient;
use anyhow::{anyhow, Result};
use config::CONFIG;
-use constants::COMM_SERVICES_USE_JSON_LOGS;
+use constants::{error_types, COMM_SERVICES_USE_JSON_LOGS};
use std::env;
use tracing::{self, error, info, Level};
use tracing_subscriber::EnvFilter;
@@ -59,12 +59,18 @@
Some(apns_client)
}
Err(err) => {
- error!("Error creating APNs client: {}", err);
+ error!(
+ errorType = error_types::APNS_ERROR,
+ "Error creating APNs client: {}", err
+ );
None
}
},
None => {
- error!("APNs config is missing");
+ error!(
+ errorType = error_types::APNS_ERROR,
+ "APNs config is missing"
+ );
None
}
};
@@ -77,12 +83,15 @@
Some(fcm_client)
}
Err(err) => {
- error!("Error creating FCM client: {}", err);
+ error!(
+ errorType = error_types::FCM_ERROR,
+ "Error creating FCM client: {}", err
+ );
None
}
},
None => {
- error!("FCM config is missing");
+ error!(errorType = error_types::FCM_ERROR, "FCM config is missing");
None
}
};
@@ -95,12 +104,18 @@
Some(web_client)
}
Err(err) => {
- error!("Error creating Web Push client: {}", err);
+ error!(
+ errorType = error_types::WEB_PUSH_ERROR,
+ "Error creating Web Push client: {}", err
+ );
None
}
},
None => {
- error!("Web Push config is missing");
+ error!(
+ errorType = error_types::WEB_PUSH_ERROR,
+ "Web Push config is missing"
+ );
None
}
};
@@ -113,12 +128,15 @@
Some(wns_client)
}
Err(err) => {
- error!("Error creating WNS client: {}", err);
+ error!(
+ errorType = error_types::WNS_ERROR,
+ "Error creating WNS client: {}", err
+ );
None
}
},
None => {
- error!("WNS config is missing");
+ error!(errorType = error_types::WNS_ERROR, "WNS config is missing");
None
}
};
@@ -141,7 +159,7 @@
Ok(_) = grpc_server => { Ok(()) },
Ok(_) = websocket_server => { Ok(()) },
else => {
- tracing::error!("A grpc or websocket server crashed.");
+ tracing::error!(errorType = error_types::SERVER_ERROR, "A grpc or websocket server crashed.");
Err(anyhow!("A grpc or websocket server crashed."))
}
}
diff --git a/services/tunnelbroker/src/notifs/wns/mod.rs b/services/tunnelbroker/src/notifs/wns/mod.rs
--- a/services/tunnelbroker/src/notifs/wns/mod.rs
+++ b/services/tunnelbroker/src/notifs/wns/mod.rs
@@ -1,4 +1,4 @@
-use crate::constants::PUSH_SERVICE_REQUEST_TIMEOUT;
+use crate::constants::{error_types, PUSH_SERVICE_REQUEST_TIMEOUT};
use crate::notifs::wns::config::WNSConfig;
use error::WNSTokenError;
use reqwest::StatusCode;
@@ -116,7 +116,12 @@
.text()
.await
.unwrap_or_else(|_| String::from("<failed to read body>"));
- tracing::error!(status, "Failure when getting the WNS token: {}", body);
+ tracing::error!(
+ errorType = error_types::WNS_ERROR,
+ status,
+ "Failure when getting the WNS token: {}",
+ body
+ );
return Err(error::Error::WNSToken(WNSTokenError::Unknown(status)));
}
diff --git a/services/tunnelbroker/src/websockets/session.rs b/services/tunnelbroker/src/websockets/session.rs
--- a/services/tunnelbroker/src/websockets/session.rs
+++ b/services/tunnelbroker/src/websockets/session.rs
@@ -1,6 +1,6 @@
use crate::constants::{
- CLIENT_RMQ_MSG_PRIORITY, DDB_RMQ_MSG_PRIORITY, MAX_RMQ_MSG_PRIORITY,
- RMQ_CONSUMER_TAG,
+ error_types, CLIENT_RMQ_MSG_PRIORITY, DDB_RMQ_MSG_PRIORITY,
+ MAX_RMQ_MSG_PRIORITY, RMQ_CONSUMER_TAG,
};
use crate::notifs::fcm::response::FCMErrorResponse;
use crate::notifs::wns::response::WNSErrorResponse;
@@ -120,7 +120,10 @@
match auth_request {
Err(e) => {
- error!("Failed to complete request to identity service: {:?}", e);
+ error!(
+ errorType = error_types::IDENTITY_ERROR,
+ "Failed to complete request to identity service: {:?}", e
+ );
return Err(SessionError::InternalError);
}
Ok(false) => {
@@ -170,7 +173,10 @@
.retrieve_messages(&device_info.device_id)
.await
.unwrap_or_else(|e| {
- error!("Error while retrieving messages: {}", e);
+ error!(
+ errorType = error_types::DDB_ERROR,
+ "Error while retrieving messages: {}", e
+ );
Vec::new()
});
@@ -360,7 +366,10 @@
.delete_message(&self.device_info.device_id, &message_id)
.await
{
- error!("Failed to delete message: {}:", e);
+ error!(
+ errorType = error_types::DDB_ERROR,
+ "Failed to delete message: {}:", e
+ );
}
}
@@ -462,8 +471,8 @@
.await
{
error!(
- "Error invalidating device token {}: {:?}",
- device_token, e
+ errorType = error_types::DDB_ERROR,
+ "Error invalidating device token {}: {:?}", device_token, e
);
};
}
@@ -532,8 +541,8 @@
.await
{
error!(
- "Error invalidating device token {}: {:?}",
- device_token, e
+ errorType = error_types::DDB_ERROR,
+ "Error invalidating device token {}: {:?}", device_token, e
);
};
}
@@ -595,8 +604,8 @@
.await
{
error!(
- "Error invalidating device token {}: {:?}",
- device_token, e
+ errorType = error_types::DDB_ERROR,
+ "Error invalidating device token {}: {:?}", device_token, e
);
};
}
@@ -649,8 +658,8 @@
.await
{
error!(
- "Error invalidating device token {}: {:?}",
- device_token, e
+ errorType = error_types::DDB_ERROR,
+ "Error invalidating device token {}: {:?}", device_token, e
);
};
}
@@ -674,7 +683,10 @@
pub async fn send_message_to_device(&mut self, message: Message) {
if let Err(e) = self.tx.send(message).await {
- error!("Failed to send message to device: {}", e);
+ error!(
+ errorType = error_types::AMQP_ERROR,
+ "Failed to send message to device: {}", e
+ );
}
}
@@ -692,7 +704,10 @@
)
.await
{
- error!("Failed to cancel consumer: {}", e);
+ error!(
+ errorType = error_types::AMQP_ERROR,
+ "Failed to cancel consumer: {}", e
+ );
}
if let Err(e) = self
@@ -703,7 +718,10 @@
)
.await
{
- error!("Failed to delete queue: {}", e);
+ error!(
+ errorType = error_types::AMQP_ERROR,
+ "Failed to delete queue: {}", e
+ );
}
}

File Metadata

Mime Type
text/plain
Expires
Mon, Sep 30, 3:06 AM (12 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2203339
Default Alt Text
D13454.diff (11 KB)

Event Timeline