From 8ae1f1fa637f161e35315e8b1e5d9602b26e6dba Mon Sep 17 00:00:00 2001 From: Austin Hellyer Date: Sun, 8 Jan 2017 09:14:34 -0800 Subject: Add more shard logging --- src/client/gateway/shard.rs | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/client/gateway/shard.rs b/src/client/gateway/shard.rs index 07eb7b1..e564538 100644 --- a/src/client/gateway/shard.rs +++ b/src/client/gateway/shard.rs @@ -355,7 +355,7 @@ impl Shard { }, Some(4008) => warn!("Gateway ratelimited"), Some(4010) => warn!("Sent invalid shard"), - Some(4011) => warn!("Bot requires more shards"), + Some(4011) => error!("Bot requires more shards"), Some(4006) | Some(4009) => { info!("Invalid session"); @@ -371,14 +371,25 @@ impl Shard { .unwrap_or(false); if resume { + info!("Attempting to resume"); + if let Some(session_id) = self.session_id.clone() { match self.resume(session_id, receiver) { - Ok((ev, rec)) => return Ok(Some((ev, Some(rec)))), - Err(why) => debug!("Error resuming: {:?}", why), + Ok((ev, rec)) => { + info!("Resumed"); + + return Ok(Some((ev, Some(rec)))); + }, + Err(why) => { + warn!("Error resuming: {:?}", why); + info!("Falling back to reconnecting"); + }, } } } + info!("Reconnecting"); + self.reconnect(receiver).map(|(ev, rec)| Some((ev, Some(rec)))) }, Err(Error::WebSocket(WebSocketError::NoDataAvailable)) => Ok(None), @@ -392,9 +403,18 @@ impl Shard { // // Otherwise, fallback to reconnecting. if let Some(session_id) = self.session_id.clone() { + info!("Attempting to resume"); + match self.resume(session_id, &mut receiver) { - Ok((ev, rec)) => return Ok(Some((ev, Some(rec)))), - Err(why) => info!("Error resuming: {:?}", why), + Ok((ev, rec)) => { + info!("Resumed"); + + return Ok(Some((ev, Some(rec)))); + }, + Err(why) => { + warn!("Error resuming: {:?}", why); + info!("Falling back to reconnecting"); + }, } } @@ -423,6 +443,8 @@ impl Shard { r.flush()?; r.shutdown(Shutdown::Both)?; + debug!("Cleanly shutdown shard"); + Ok(()) } @@ -521,8 +543,12 @@ impl Shard { return Ok((Event::Ready(ready), receiver_new)); } + let seconds = i.pow(2); + + debug!("Exponentially backing off for {} seconds", seconds); + // Exponentially back off. - thread::sleep(StdDuration::from_secs(i.pow(2))); + thread::sleep(StdDuration::from_secs(seconds)); } // Reconnecting failed; just return an error instead. -- cgit v1.2.3