From 4db655ae82ae3a89c75d7e29c8ff336addfb3389 Mon Sep 17 00:00:00 2001 From: Pascal Seitz Date: Thu, 28 Apr 2022 21:52:07 +0800 Subject: [PATCH] update dependencies, update edition --- Cargo.toml | 2 +- src/core/executor.rs | 13 ++++++++----- src/indexer/segment_updater.rs | 13 +++++++------ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 287c7f4d9..a4ac6ae54 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://github.com/quickwit-oss/tantivy" repository = "https://github.com/quickwit-oss/tantivy" readme = "README.md" keywords = ["search", "information", "retrieval"] -edition = "2018" +edition = "2021" [dependencies] oneshot = "0.1.3" diff --git a/src/core/executor.rs b/src/core/executor.rs index 5f0b930aa..257acc961 100644 --- a/src/core/executor.rs +++ b/src/core/executor.rs @@ -1,3 +1,5 @@ +use std::sync::atomic::AtomicUsize; + use crossbeam::channel; use rayon::{ThreadPool, ThreadPoolBuilder}; @@ -47,16 +49,17 @@ impl Executor { match self { Executor::SingleThread => args.map(f).collect::>(), Executor::ThreadPool(pool) => { - let args_with_indices: Vec<(usize, A)> = args.enumerate().collect(); - let num_fruits = args_with_indices.len(); + // let args_with_indices: Vec<(usize, A)> = args.enumerate().collect(); + let args: Vec = args.collect(); + let num_fruits = args.len(); let fruit_receiver = { let (fruit_sender, fruit_receiver) = channel::unbounded(); pool.scope(|scope| { - for arg_with_idx in args_with_indices { + for (idx, arg) in args.into_iter().enumerate() { + let idx = AtomicUsize::new(idx); scope.spawn(|_| { - let (idx, arg) = arg_with_idx; let fruit = f(arg); - if let Err(err) = fruit_sender.send((idx, fruit)) { + if let Err(err) = fruit_sender.send((idx.into_inner(), fruit)) { error!( "Failed to send search task. It probably means all search \ threads have panicked. {:?}", diff --git a/src/indexer/segment_updater.rs b/src/indexer/segment_updater.rs index 4ca751d8d..54124c9e0 100644 --- a/src/indexer/segment_updater.rs +++ b/src/indexer/segment_updater.rs @@ -1,6 +1,5 @@ use std::borrow::BorrowMut; use std::collections::HashSet; -use std::io; use std::io::Write; use std::ops::Deref; use std::path::PathBuf; @@ -27,7 +26,7 @@ use crate::indexer::{ SegmentSerializer, }; use crate::schema::Schema; -use crate::{FutureResult, Opstamp, TantivyError}; +use crate::{FutureResult, Opstamp}; const NUM_MERGE_THREADS: usize = 4; @@ -73,10 +72,12 @@ fn save_metas(metas: &IndexMeta, directory: &dyn Directory) -> crate::Result<()> let mut buffer = serde_json::to_vec_pretty(metas)?; // Just adding a new line at the end of the buffer. writeln!(&mut buffer)?; - fail_point!("save_metas", |msg| Err(TantivyError::from(io::Error::new( - io::ErrorKind::Other, - msg.unwrap_or_else(|| "Undefined".to_string()) - )))); + fail_point!("save_metas", |msg| Err(crate::TantivyError::from( + std::io::Error::new( + std::io::ErrorKind::Other, + msg.unwrap_or_else(|| "Undefined".to_string()) + ) + ))); directory.sync_directory()?; directory.atomic_write(&META_FILEPATH, &buffer[..])?; debug!("Saved metas {:?}", serde_json::to_string_pretty(&metas));