Skip to content

Commit

Permalink
Fix disconnections on successful gateway resume
Browse files Browse the repository at this point in the history
Only break of out the `ShardRunner` loop if the resume failed and we
have to reidentify.
  • Loading branch information
mkrasnitski committed Feb 3, 2025
1 parent f0072d1 commit 10a47d6
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions src/gateway/sharding/shard_runner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,9 @@ impl ShardRunner {
if let Some(action) = action {
match action {
ShardAction::Reconnect => {
self.reconnect().await;
return Ok(());
if !self.reconnect().await {
return Ok(());
}
},
ShardAction::Heartbeat => {
if let Err(e) = self.shard.heartbeat().await {
Expand All @@ -151,8 +152,9 @@ impl ShardRunner {
self.shard.shard_info(),
e
);
self.reconnect().await;
return Ok(());
if !self.reconnect().await {
return Ok(());
}
}
},
ShardAction::Identify => {
Expand All @@ -162,8 +164,9 @@ impl ShardRunner {
self.shard.shard_info(),
e
);
self.reconnect().await;
return Ok(());
if !self.reconnect().await {
return Ok(());
}
}
},
ShardAction::Dispatch(event) => {
Expand Down Expand Up @@ -442,22 +445,27 @@ impl ShardRunner {
}

#[cfg_attr(feature = "tracing_instrument", instrument(skip(self)))]
async fn reconnect(&mut self) {
async fn reconnect(&mut self) -> bool {
if self.shard.session_id().is_some() {
if let Err(why) = self.shard.resume().await {
warn!(
"[ShardRunner {:?}] Resume failed, reidentifying: {:?}",
self.shard.shard_info(),
why,
);
match self.shard.resume().await {
Ok(()) => true,
Err(why) => {
warn!(
"[ShardRunner {:?}] Resume failed, reidentifying: {:?}",
self.shard.shard_info(),
why,
);

// Don't spam reattempts on internet connection loss
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
// Don't spam reattempts on internet connection loss
tokio::time::sleep(std::time::Duration::from_secs(1)).await;

self.request_restart().await;
self.request_restart().await;
false
},
}
} else {
self.request_restart().await;
false
}
}

Expand Down

0 comments on commit 10a47d6

Please # to comment.