diff --git a/crates/pglt_lsp/src/session.rs b/crates/pglt_lsp/src/session.rs index c8fa9318..b6cbefc3 100644 --- a/crates/pglt_lsp/src/session.rs +++ b/crates/pglt_lsp/src/session.rs @@ -267,8 +267,6 @@ impl Session { skip: Vec::new(), })?; - tracing::trace!("pglt diagnostics: {:#?}", result.diagnostics); - result .diagnostics .into_iter() @@ -290,8 +288,6 @@ impl Session { .collect() }; - tracing::Span::current().record("diagnostic_count", diagnostics.len()); - self.client .publish_diagnostics(url, diagnostics, Some(doc.version)) .await; diff --git a/crates/pglt_workspace/src/workspace/server/schema_cache_manager.rs b/crates/pglt_workspace/src/workspace/server/schema_cache_manager.rs index 9e5529cf..b2dad857 100644 --- a/crates/pglt_workspace/src/workspace/server/schema_cache_manager.rs +++ b/crates/pglt_workspace/src/workspace/server/schema_cache_manager.rs @@ -42,23 +42,25 @@ pub struct SchemaCacheManager { impl SchemaCacheManager { pub fn load(&self, pool: PgPool) -> Result { - let inner = self.inner.read().unwrap(); - - if pool_to_conn_str(&pool) == inner.conn_str { - Ok(SchemaCacheHandle::wrap(inner)) - } else { - let new_conn_str = pool_to_conn_str(&pool); + let new_conn_str = pool_to_conn_str(&pool); + + { + // return early if the connection string is the same + let inner = self.inner.read().unwrap(); + if new_conn_str == inner.conn_str { + return Ok(SchemaCacheHandle::wrap(inner)); + } + } - let maybe_refreshed = run_async(async move { SchemaCache::load(&pool).await })?; - let refreshed = maybe_refreshed?; + let maybe_refreshed = run_async(async move { SchemaCache::load(&pool).await })?; + let refreshed = maybe_refreshed?; - let mut inner = self.inner.write().unwrap(); + let mut inner = self.inner.write().unwrap(); - inner.cache = refreshed; - inner.conn_str = new_conn_str; + inner.cache = refreshed; + inner.conn_str = new_conn_str; - Ok(SchemaCacheHandle::new(&self.inner)) - } + Ok(SchemaCacheHandle::new(&self.inner)) } }