Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F2839740
D13454.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
11 KB
Referenced Files
None
Subscribers
None
D13454.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D13454: [tunnelbroker] add errorTypes to error logs for future alarms
Attached
Detach File
Event Timeline
Log In to Comment