Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/prime_caches.rs')
-rw-r--r--crates/ide-db/src/prime_caches.rs18
1 files changed, 8 insertions, 10 deletions
diff --git a/crates/ide-db/src/prime_caches.rs b/crates/ide-db/src/prime_caches.rs
index 22dc3d9e29..74d79cd695 100644
--- a/crates/ide-db/src/prime_caches.rs
+++ b/crates/ide-db/src/prime_caches.rs
@@ -8,12 +8,10 @@ use std::time::Duration;
use hir::{db::DefDatabase, Symbol};
use itertools::Itertools;
+use salsa::{Cancelled, Database};
use crate::{
- base_db::{
- ra_salsa::{Database, ParallelDatabase, Snapshot},
- Cancelled, CrateId, SourceDatabase,
- },
+ base_db::{CrateId, RootQueryDb},
symbol_index::SymbolsDatabase,
FxIndexMap, RootDatabase,
};
@@ -66,7 +64,7 @@ pub fn parallel_prime_caches(
let (work_sender, progress_receiver) = {
let (progress_sender, progress_receiver) = crossbeam_channel::unbounded();
let (work_sender, work_receiver) = crossbeam_channel::unbounded();
- let prime_caches_worker = move |db: Snapshot<RootDatabase>| {
+ let prime_caches_worker = move |db: RootDatabase| {
while let Ok((crate_id, crate_name, kind)) = work_receiver.recv() {
progress_sender
.send(ParallelPrimeCacheWorkerProgress::BeginCrate { crate_id, crate_name })?;
@@ -90,7 +88,7 @@ pub fn parallel_prime_caches(
stdx::thread::Builder::new(stdx::thread::ThreadIntent::Worker)
.allow_leak(true)
.name(format!("PrimeCaches#{id}"))
- .spawn(move || Cancelled::catch(|| worker(db)))
+ .spawn(move || Cancelled::catch(|| worker(db.snapshot())))
.expect("failed to spawn thread");
}
@@ -108,7 +106,7 @@ pub fn parallel_prime_caches(
let mut additional_phases = vec![];
while crates_done < crates_total {
- db.unwind_if_cancelled();
+ db.unwind_if_revision_cancelled();
for crate_id in &mut crates_to_prime {
let krate = &graph[crate_id];
@@ -145,7 +143,7 @@ pub fn parallel_prime_caches(
}
Err(crossbeam_channel::RecvTimeoutError::Disconnected) => {
// our workers may have died from a cancelled task, so we'll check and re-raise here.
- db.unwind_if_cancelled();
+ db.unwind_if_revision_cancelled();
break;
}
};
@@ -177,7 +175,7 @@ pub fn parallel_prime_caches(
}
while crates_done < crates_total {
- db.unwind_if_cancelled();
+ db.unwind_if_revision_cancelled();
// recv_timeout is somewhat a hack, we need a way to from this thread check to see if the current salsa revision
// is cancelled on a regular basis. workers will only exit if they are processing a task that is cancelled, or
@@ -189,7 +187,7 @@ pub fn parallel_prime_caches(
}
Err(crossbeam_channel::RecvTimeoutError::Disconnected) => {
// our workers may have died from a cancelled task, so we'll check and re-raise here.
- db.unwind_if_cancelled();
+ db.unwind_if_revision_cancelled();
break;
}
};