Skip to content

Commit fe7c683

Browse files
committed
fix: address configure review feedback (PR #416)
1 parent 3337ff1 commit fe7c683

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

crates/pet/src/jsonrpc.rs

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ const GLOB_EXPANSION_WARN_THRESHOLD: Duration = Duration::from_secs(5);
531531

532532
pub fn handle_configure(context: Arc<Context>, id: u32, params: Value) {
533533
match serde_json::from_value::<ConfigureOptions>(params.clone()) {
534-
Ok(configure_options) => {
534+
Ok(mut configure_options) => {
535535
info!("Received configure request");
536536
// Start in a new thread, we can have multiple requests.
537537
thread::spawn(move || {
@@ -540,7 +540,7 @@ pub fn handle_configure(context: Arc<Context>, id: u32, params: Value) {
540540
// Expand glob patterns before acquiring the write lock so we
541541
// don't block readers/writers while traversing the filesystem.
542542
let workspace_directories =
543-
configure_options.workspace_directories.clone().map(|dirs| {
543+
configure_options.workspace_directories.take().map(|dirs| {
544544
let start = Instant::now();
545545
let result: Vec<PathBuf> = expand_glob_patterns(&dirs)
546546
.into_iter()
@@ -553,22 +553,23 @@ pub fn handle_configure(context: Arc<Context>, id: u32, params: Value) {
553553
);
554554
result
555555
});
556-
let environment_directories = configure_options
557-
.environment_directories
558-
.clone()
559-
.map(|dirs| {
560-
let start = Instant::now();
561-
let result: Vec<PathBuf> = expand_glob_patterns(&dirs)
562-
.into_iter()
563-
.filter(|p| p.is_dir())
564-
.collect();
565-
trace!(
566-
"Expanded environment directory patterns ({:?}) in {:?}",
567-
dirs,
568-
start.elapsed()
569-
);
570-
result
571-
});
556+
let environment_directories =
557+
configure_options
558+
.environment_directories
559+
.take()
560+
.map(|dirs| {
561+
let start = Instant::now();
562+
let result: Vec<PathBuf> = expand_glob_patterns(&dirs)
563+
.into_iter()
564+
.filter(|p| p.is_dir())
565+
.collect();
566+
trace!(
567+
"Expanded environment directory patterns ({:?}) in {:?}",
568+
dirs,
569+
start.elapsed()
570+
);
571+
result
572+
});
572573
let glob_elapsed = now.elapsed();
573574
trace!("Glob expansion completed in {:?}", glob_elapsed);
574575
if glob_elapsed >= GLOB_EXPANSION_WARN_THRESHOLD {
@@ -1452,6 +1453,7 @@ mod tests {
14521453
let configuration = Arc::new(RwLock::new(ConfigurationState::default()));
14531454
let (started_tx, started_rx) = mpsc::channel();
14541455
let (release_tx, release_rx) = mpsc::channel();
1456+
let (done_tx, done_rx) = mpsc::channel();
14551457
let locator = Arc::new(BlockingConfigureLocator {
14561458
started: started_tx,
14571459
release: Mutex::new(release_rx),
@@ -1479,13 +1481,15 @@ mod tests {
14791481
Some(workspace_directories),
14801482
None,
14811483
);
1484+
done_tx.send(()).unwrap();
14821485
})
14831486
};
14841487

1485-
started_rx.recv().unwrap();
1488+
started_rx.recv_timeout(Duration::from_secs(5)).unwrap();
14861489
assert!(configuration.try_read().is_err());
14871490

14881491
release_tx.send(()).unwrap();
1492+
done_rx.recv_timeout(Duration::from_secs(5)).unwrap();
14891493
worker.join().unwrap();
14901494

14911495
let state = configuration.read().unwrap();

0 commit comments

Comments
 (0)