Remove Default impl for ConnectionId (#7452)

We noticed the following message in my logs when trying to debug some
lag when collaborating:

```
2024-02-06T09:42:09-08:00 [ERROR] error handling message. client_id:3, sender_id:Some(PeerId { owner_id: 327, id: 1123430 }), type:GetCompletions, error:no such connection: 0/0
```

That `0/0` looks like a bogus connection id, constructed via a derived
`Default`. We didn't ever find a code path that would *use* a default
`ConnectionId` and lead to this error, but it did seem like an
improvement to not have a `Default` for that type.

Release Notes:

- N/A

Co-authored-by: Marshall <marshall@zed.dev>
This commit is contained in:
Max Brunsfeld 2024-02-06 12:45:15 -08:00 committed by GitHub
parent 4e519e3af7
commit 1264e36429
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 6 additions and 6 deletions

View file

@ -692,7 +692,7 @@ impl ProjectCollaborator {
pub struct LeftProject { pub struct LeftProject {
pub id: ProjectId, pub id: ProjectId,
pub host_user_id: UserId, pub host_user_id: UserId,
pub host_connection_id: ConnectionId, pub host_connection_id: Option<ConnectionId>,
pub connection_ids: Vec<ConnectionId>, pub connection_ids: Vec<ConnectionId>,
} }

View file

@ -778,7 +778,7 @@ impl Database {
let left_project = LeftProject { let left_project = LeftProject {
id: project_id, id: project_id,
host_user_id: project.host_user_id, host_user_id: project.host_user_id,
host_connection_id: project.host_connection()?, host_connection_id: Some(project.host_connection()?),
connection_ids, connection_ids,
}; };
Ok((room, left_project)) Ok((room, left_project))

View file

@ -862,7 +862,7 @@ impl Database {
id: collaborator.project_id, id: collaborator.project_id,
host_user_id: Default::default(), host_user_id: Default::default(),
connection_ids: Default::default(), connection_ids: Default::default(),
host_connection_id: Default::default(), host_connection_id: None,
}); });
let collaborator_connection_id = collaborator.connection(); let collaborator_connection_id = collaborator.connection();
@ -872,7 +872,7 @@ impl Database {
if collaborator.is_host { if collaborator.is_host {
left_project.host_user_id = collaborator.user_id; left_project.host_user_id = collaborator.user_id;
left_project.host_connection_id = collaborator_connection_id; left_project.host_connection_id = Some(collaborator_connection_id);
} }
} }
drop(collaborators); drop(collaborators);

View file

@ -1691,7 +1691,7 @@ async fn leave_project(request: proto::LeaveProject, session: Session) -> Result
tracing::info!( tracing::info!(
%project_id, %project_id,
host_user_id = %project.host_user_id, host_user_id = %project.host_user_id,
host_connection_id = %project.host_connection_id, host_connection_id = ?project.host_connection_id,
"leave project" "leave project"
); );

View file

@ -25,7 +25,7 @@ use std::{
}; };
use tracing::instrument; use tracing::instrument;
#[derive(Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Serialize)] #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Serialize)]
pub struct ConnectionId { pub struct ConnectionId {
pub owner_id: u32, pub owner_id: u32,
pub id: u32, pub id: u32,