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:
parent
4e519e3af7
commit
1264e36429
5 changed files with 6 additions and 6 deletions
|
@ -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>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue