Avoid unnecessary DB writes (#29417)
Part of https://github.com/zed-industries/zed/issues/16472 * Adds debug logging to everywhere near INSERT/UPDATEs in the DB So something like `env RUST_LOG=debug,wasmtime_cranelift=off,cranelift_codegen=off,vte=off cargo run` could be used to view these (current zlog seems to process the exclusions odd, so not sure this is the optimal RUST_LOG line) can be used to debug any further writes. * Removes excessive window stack serialization Previously, it serialized unconditionally every 100ms. Now, only if the stack had changed, which is now check every 500ms. * Removes excessive terminal serialization Previously, it serialized its `cwd` on every `ItemEvent::UpdateTab` which was caused by e.g. any character output. Now, only if the `cwd` has changed at the next event processing time. Release Notes: - Fixed more excessive DB writes
This commit is contained in:
parent
37fa437990
commit
f106dfca42
16 changed files with 224 additions and 168 deletions
|
@ -739,6 +739,7 @@ impl WorkspaceDb {
|
|||
/// Saves a workspace using the worktree roots. Will garbage collect any workspaces
|
||||
/// that used this workspace previously
|
||||
pub(crate) async fn save_workspace(&self, workspace: SerializedWorkspace) {
|
||||
log::debug!("Saving workspace at location: {:?}", workspace.location);
|
||||
self.write(move |conn| {
|
||||
conn.with_savepoint("update_worktrees", || {
|
||||
// Clear out panes and pane_groups
|
||||
|
@ -909,6 +910,7 @@ impl WorkspaceDb {
|
|||
{
|
||||
Ok(project)
|
||||
} else {
|
||||
log::debug!("Inserting SSH project at host {host}");
|
||||
self.insert_ssh_project(host, port, paths, user)
|
||||
.await?
|
||||
.ok_or_else(|| anyhow!("failed to insert ssh project"))
|
||||
|
@ -1209,6 +1211,9 @@ impl WorkspaceDb {
|
|||
pane_group: &SerializedPaneGroup,
|
||||
parent: Option<(GroupId, usize)>,
|
||||
) -> Result<()> {
|
||||
if parent.is_none() {
|
||||
log::debug!("Saving a pane group for workspace {workspace_id:?}");
|
||||
}
|
||||
match pane_group {
|
||||
SerializedPaneGroup::Group {
|
||||
axis,
|
||||
|
@ -1387,6 +1392,10 @@ impl WorkspaceDb {
|
|||
relative_worktree_path: String,
|
||||
toolchain: Toolchain,
|
||||
) -> Result<()> {
|
||||
log::debug!(
|
||||
"Setting toolchain for workspace, worktree: {worktree_id:?}, relative path: {relative_worktree_path:?}, toolchain: {}",
|
||||
toolchain.name
|
||||
);
|
||||
self.write(move |conn| {
|
||||
let mut insert = conn
|
||||
.exec_bound(sql!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue