Keep dropping the `documents` table if it exists

Antonio Scandurra and Kyle Caverly created

This is because we renamed `documents` to `spans`.

Co-Authored-By: Kyle Caverly <kyle@zed.dev>

Change summary

crates/semantic_index/src/db.rs             |  4 +++
crates/semantic_index/src/semantic_index.rs | 24 +++++++++++-----------
2 files changed, 16 insertions(+), 12 deletions(-)

Detailed changes

crates/semantic_index/src/db.rs 🔗

@@ -124,6 +124,10 @@ impl VectorDatabase {
             }
 
             log::trace!("vector database schema out of date. updating...");
+            // We renamed the `documents` table to `spans`, so we want to drop
+            // `documents` without recreating it if it exists.
+            db.execute("DROP TABLE IF EXISTS documents", [])
+                .context("failed to drop 'documents' table")?;
             db.execute("DROP TABLE IF EXISTS spans", [])
                 .context("failed to drop 'spans' table")?;
             db.execute("DROP TABLE IF EXISTS files", [])

crates/semantic_index/src/semantic_index.rs 🔗

@@ -92,8 +92,8 @@ pub struct SemanticIndex {
 
 struct ProjectState {
     worktrees: HashMap<WorktreeId, WorktreeState>,
-    outstanding_job_count_rx: watch::Receiver<usize>,
-    outstanding_job_count_tx: Arc<Mutex<watch::Sender<usize>>>,
+    pending_file_count_rx: watch::Receiver<usize>,
+    pending_file_count_tx: Arc<Mutex<watch::Sender<usize>>>,
     _subscription: gpui::Subscription,
 }
 
@@ -178,12 +178,12 @@ impl JobHandle {
 
 impl ProjectState {
     fn new(subscription: gpui::Subscription) -> Self {
-        let (outstanding_job_count_tx, outstanding_job_count_rx) = watch::channel_with(0);
-        let outstanding_job_count_tx = Arc::new(Mutex::new(outstanding_job_count_tx));
+        let (pending_file_count_tx, pending_file_count_rx) = watch::channel_with(0);
+        let pending_file_count_tx = Arc::new(Mutex::new(pending_file_count_tx));
         Self {
             worktrees: Default::default(),
-            outstanding_job_count_rx,
-            outstanding_job_count_tx,
+            pending_file_count_rx,
+            pending_file_count_tx,
             _subscription: subscription,
         }
     }
@@ -605,7 +605,7 @@ impl SemanticIndex {
         Some(
             self.projects
                 .get(&project.downgrade())?
-                .outstanding_job_count_rx
+                .pending_file_count_rx
                 .clone(),
         )
     }
@@ -774,8 +774,8 @@ impl SemanticIndex {
                 .insert(project.downgrade(), ProjectState::new(subscription));
             self.project_worktrees_changed(project.clone(), cx);
         }
-        let project_state = self.projects.get(&project.downgrade()).unwrap();
-        let mut outstanding_job_count_rx = project_state.outstanding_job_count_rx.clone();
+        let project_state = &self.projects[&project.downgrade()];
+        let mut pending_file_count_rx = project_state.pending_file_count_rx.clone();
 
         let db = self.db.clone();
         let language_registry = self.language_registry.clone();
@@ -792,7 +792,7 @@ impl SemanticIndex {
                     .projects
                     .get_mut(&project.downgrade())
                     .ok_or_else(|| anyhow!("project was dropped"))?;
-                let outstanding_job_count_tx = &project_state.outstanding_job_count_tx;
+                let pending_file_count_tx = &project_state.pending_file_count_tx;
 
                 project_state
                     .worktrees
@@ -816,7 +816,7 @@ impl SemanticIndex {
                                 files_to_delete.push((worktree_state.db_id, path.clone()));
                             } else {
                                 let absolute_path = worktree.read(cx).absolutize(path);
-                                let job_handle = JobHandle::new(outstanding_job_count_tx);
+                                let job_handle = JobHandle::new(pending_file_count_tx);
                                 pending_files.push(PendingFile {
                                     absolute_path,
                                     relative_path: path.clone(),
@@ -879,7 +879,7 @@ impl SemanticIndex {
                     }
 
                     // Wait until we're done indexing.
-                    while let Some(count) = outstanding_job_count_rx.next().await {
+                    while let Some(count) = pending_file_count_rx.next().await {
                         if count == 0 {
                             break;
                         }