From e6352278cec32b21e0b1eadfb67fa0172ae611d4 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 17 Feb 2026 14:20:46 -0800 Subject: [PATCH] Remove project cache in edit prediction CLI (#49409) The cache isn't needed, now that we have a better way of reducing resource consumption (disabling worktree scanning), and it adds race conditions. Release Notes: - N/A --- crates/edit_prediction_cli/src/headless.rs | 26 ++----------------- .../edit_prediction_cli/src/load_project.rs | 18 ------------- crates/edit_prediction_cli/src/main.rs | 5 +--- 3 files changed, 3 insertions(+), 46 deletions(-) diff --git a/crates/edit_prediction_cli/src/headless.rs b/crates/edit_prediction_cli/src/headless.rs index 9d0291a2bf013e711027070fe7a2a4fe39d36b87..f78903b705a4718e31b59e56d3aa281004395d64 100644 --- a/crates/edit_prediction_cli/src/headless.rs +++ b/crates/edit_prediction_cli/src/headless.rs @@ -1,5 +1,4 @@ use client::{Client, ProxySettings, UserStore}; -use collections::HashMap; use extension::ExtensionHostProxy; use fs::RealFs; use gpui::http_client::read_proxy_from_env; @@ -8,12 +7,12 @@ use gpui_tokio::Tokio; use language::LanguageRegistry; use language_extension::LspAccess; use node_runtime::{NodeBinaryOptions, NodeRuntime}; -use project::{Project, project_settings::ProjectSettings}; +use project::project_settings::ProjectSettings; use release_channel::{AppCommitSha, AppVersion}; use reqwest_client::ReqwestClient; use settings::{Settings, SettingsStore}; use std::path::PathBuf; -use std::sync::{Arc, Mutex}; +use std::sync::Arc; use util::ResultExt as _; /// Headless subset of `workspace::AppState`. @@ -23,24 +22,6 @@ pub struct EpAppState { pub user_store: Entity, pub fs: Arc, pub node_runtime: NodeRuntime, - pub project_cache: ProjectCache, -} - -#[derive(Default)] -pub struct ProjectCache(Mutex>>); - -impl ProjectCache { - pub fn insert(&self, repository_url: String, project: Entity) { - self.0.lock().unwrap().insert(repository_url, project); - } - - pub fn get(&self, repository_url: &String) -> Option> { - self.0.lock().unwrap().get(repository_url).cloned() - } - - pub fn remove(&self, repository_url: &String) { - self.0.lock().unwrap().remove(repository_url); - } } pub fn init(cx: &mut App) -> EpAppState { @@ -130,14 +111,11 @@ pub fn init(cx: &mut App) -> EpAppState { prompt_store::init(cx); terminal_view::init(cx); - let project_cache = ProjectCache::default(); - EpAppState { languages, client, user_store, fs, node_runtime, - project_cache, } } diff --git a/crates/edit_prediction_cli/src/load_project.rs b/crates/edit_prediction_cli/src/load_project.rs index 1458a5e8cc46b8c0424812ad817a5d5257f5759d..5faf9f21a02286da0da45a79462fac488d94a1e0 100644 --- a/crates/edit_prediction_cli/src/load_project.rs +++ b/crates/edit_prediction_cli/src/load_project.rs @@ -190,20 +190,6 @@ async fn setup_project( let worktree_path = setup_worktree(example, step_progress).await?; - if let Some(project) = app_state.project_cache.get(&example.spec.repository_url) { - let buffer_store = project.read_with(cx, |project, _| project.buffer_store().clone()); - let buffers = buffer_store.read_with(cx, |buffer_store, _| { - buffer_store.buffers().collect::>() - }); - for buffer in buffers { - buffer.update(cx, |buffer, cx| buffer.reload(cx)).await.ok(); - } - ep_store.update(cx, |ep_store, _| { - ep_store.clear_history_for_project(&project); - }); - return Ok(project); - } - let project = cx.update(|cx| { Project::local( app_state.client.clone(), @@ -227,10 +213,6 @@ async fn setup_project( }) .await?; - app_state - .project_cache - .insert(example.spec.repository_url.clone(), project.clone()); - let buffer_store = project.read_with(cx, |project, _| project.buffer_store().clone()); cx.subscribe(&buffer_store, { let project = project.downgrade(); diff --git a/crates/edit_prediction_cli/src/main.rs b/crates/edit_prediction_cli/src/main.rs index a2b640df0bd3ec028b86b91a8d6a6530f176a506..d2b4950e868a3afa477ac141481bb234fe79aedb 100644 --- a/crates/edit_prediction_cli/src/main.rs +++ b/crates/edit_prediction_cli/src/main.rs @@ -1041,11 +1041,9 @@ fn main() { } } - let repo_url = &repo_examples.first().unwrap().spec.repository_url; let project = repo_examples .iter() - .find_map(|e| e.state.as_ref().map(|s| s.project.clone())) - .or_else(|| app_state.project_cache.get(repo_url)); + .find_map(|e| e.state.as_ref().map(|s| s.project.clone())); if let Some(project) = project { let mut cx = cx.clone(); @@ -1069,7 +1067,6 @@ fn main() { } } - app_state.project_cache.remove(repo_url); for example in &mut repo_examples { example.state.take(); }