Unverified Commit 6337afec authored by Neelay Shah's avatar Neelay Shah Committed by GitHub
Browse files

chore: update for error messages (#3549)

parent 60ba7b25
...@@ -229,9 +229,9 @@ impl EndpointConfigBuilder { ...@@ -229,9 +229,9 @@ impl EndpointConfigBuilder {
// client.register_service() // client.register_service()
let info = Instance { let info = Instance {
component: component_name, component: component_name.clone(),
endpoint: endpoint_name, endpoint: endpoint_name.clone(),
namespace: namespace_name, namespace: namespace_name.clone(),
instance_id: lease_id, instance_id: lease_id,
transport: TransportType::NatsTcp(subject), transport: TransportType::NatsTcp(subject),
}; };
...@@ -243,9 +243,16 @@ impl EndpointConfigBuilder { ...@@ -243,9 +243,16 @@ impl EndpointConfigBuilder {
.kv_create(&etcd_path, info, Some(lease_id)) .kv_create(&etcd_path, info, Some(lease_id))
.await .await
{ {
tracing::error!("Failed to register discoverable service: {:?}", e); tracing::error!(
component_name,
endpoint_name,
error = %e,
"Unable to register service for discovery"
);
cancel_token.cancel(); cancel_token.cancel();
return Err(error!("Failed to register discoverable service")); return Err(error!(
"Unable to register service for discovery. Check discovery service status"
));
} }
task.await??; task.await??;
......
...@@ -95,16 +95,29 @@ impl Client { ...@@ -95,16 +95,29 @@ impl Client {
let ((client, lease_id), rt) = build_in_runtime( let ((client, lease_id), rt) = build_in_runtime(
async move { async move {
let client = let client = etcd_client::Client::connect(
etcd_client::Client::connect(config.etcd_url, config.etcd_connect_options) config.etcd_url.clone(),
.await?; config.etcd_connect_options,
)
.await
.with_context(|| {
format!(
"Unable to connect to etcd server at {}. Check etcd server status",
config.etcd_url.join(", ")
)
})?;
let lease_id = if config.attach_lease { let lease_id = if config.attach_lease {
let lease_client = client.lease_client(); let lease_client = client.lease_client();
let lease = create_lease(lease_client, 10, token) let lease = create_lease(lease_client, 10, token)
.await .await
.context("creating primary lease")?; .with_context(|| {
format!(
"Unable to create lease. Check etcd server status at {}",
config.etcd_url.join(", ")
)
})?;
lease.id lease.id
} else { } else {
...@@ -177,9 +190,9 @@ impl Client { ...@@ -177,9 +190,9 @@ impl Client {
Ok(()) Ok(())
} else { } else {
for resp in result.op_responses() { for resp in result.op_responses() {
tracing::warn!("kv_create etcd op response: {resp:?}"); tracing::warn!(response = ?resp, "kv_create etcd op response");
} }
Err(error!("failed to create key")) Err(error!("Unable to create key. Check etcd server status"))
} }
} }
...@@ -220,11 +233,17 @@ impl Client { ...@@ -220,11 +233,17 @@ impl Client {
Some(response) => match response { Some(response) => match response {
TxnOpResponse::Txn(response) => match response.succeeded() { TxnOpResponse::Txn(response) => match response.succeeded() {
true => Ok(()), true => Ok(()),
false => Err(error!("failed to create or validate key")), false => Err(error!(
"Unable to create or validate key. Check etcd server status"
)),
}, },
_ => Err(error!("unexpected response type")), _ => Err(error!(
"Unable to validate key operation. Check etcd server status"
)),
}, },
None => Err(error!("failed to create or validate key")), None => Err(error!(
"Unable to create or validate key. Check etcd server status"
)),
} }
} }
} }
......
...@@ -20,7 +20,10 @@ pub async fn create_lease( ...@@ -20,7 +20,10 @@ pub async fn create_lease(
match keep_alive(lease_client, id, ttl, child).await { match keep_alive(lease_client, id, ttl, child).await {
Ok(_) => tracing::trace!("keep alive task exited successfully"), Ok(_) => tracing::trace!("keep alive task exited successfully"),
Err(e) => { Err(e) => {
tracing::info!("keep alive task failed: {:?}", e); tracing::error!(
error = %e,
"Unable to maintain lease. Check etcd server status"
);
token.cancel(); token.cancel();
} }
} }
...@@ -61,9 +64,11 @@ pub async fn keep_alive( ...@@ -61,9 +64,11 @@ pub async fn keep_alive(
loop { loop {
// if the deadline is exceeded, then we have failed to issue a heartbeat in time // if the deadline is exceeded, then we have failed to issue a heartbeat in time
// we maybe be permanently disconnected from the etcd server, so we are now officially done // we may be permanently disconnected from the etcd server, so we are now officially done
if deadline < std::time::Instant::now() { if deadline < std::time::Instant::now() {
return Err(error!("failed to issue heartbeat in time")); return Err(error!(
"Unable to refresh lease - deadline exceeded. Check etcd server status"
));
} }
tokio::select! { tokio::select! {
...@@ -78,7 +83,7 @@ pub async fn keep_alive( ...@@ -78,7 +83,7 @@ pub async fn keep_alive(
deadline = create_deadline(ttl)?; deadline = create_deadline(ttl)?;
if resp.ttl() == 0 { if resp.ttl() == 0 {
return Err(error!("lease expired or revoked")); return Err(error!("Unable to maintain lease - expired or revoked. Check etcd server status"));
} }
} }
...@@ -98,7 +103,11 @@ pub async fn keep_alive( ...@@ -98,7 +103,11 @@ pub async fn keep_alive(
// immediately try to tick the heartbeat // immediately try to tick the heartbeat
// this will repeat until either the heartbeat is reestablished or the deadline is exceeded // this will repeat until either the heartbeat is reestablished or the deadline is exceeded
if let Err(e) = heartbeat_sender.keep_alive().await { if let Err(e) = heartbeat_sender.keep_alive().await {
tracing::warn!(lease_id, "keep alive failed: {:?}", e); tracing::warn!(
lease_id,
error = %e,
"Unable to send lease heartbeat. Check etcd server status"
);
ttl = 0; ttl = 0;
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment