mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-08 01:52:54 +00:00
issue/197 Remove logic that prevents leak from crossbeam MsQueue. (#212)
Closes #197
This commit is contained in:
@@ -36,7 +36,7 @@ time = "0.1"
|
||||
uuid = { version = "0.5", features = ["v4", "serde"] }
|
||||
chan = "0.1"
|
||||
version = "2"
|
||||
crossbeam = "0.2"
|
||||
crossbeam = "0.3"
|
||||
futures = "0.1"
|
||||
futures-cpupool = "0.1"
|
||||
error-chain = "0.8"
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
extern crate regex;
|
||||
|
||||
use std::str::Chars;
|
||||
use std::ascii::AsciiExt;
|
||||
|
||||
|
||||
@@ -11,43 +11,19 @@ pub struct GenerationItem<T> {
|
||||
}
|
||||
|
||||
|
||||
// See https://github.com/crossbeam-rs/crossbeam/issues/91
|
||||
struct NonLeakingMsQueue<T> {
|
||||
underlying_queue: MsQueue<T>,
|
||||
}
|
||||
|
||||
impl<T> Default for NonLeakingMsQueue<T> {
|
||||
fn default() -> NonLeakingMsQueue<T> {
|
||||
NonLeakingMsQueue { underlying_queue: MsQueue::new() }
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> NonLeakingMsQueue<T> {
|
||||
fn pop(&self) -> T {
|
||||
self.underlying_queue.pop()
|
||||
}
|
||||
|
||||
fn push(&self, el: T) {
|
||||
self.underlying_queue.push(el);
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> Drop for NonLeakingMsQueue<T> {
|
||||
fn drop(&mut self) {
|
||||
while let Some(_popped_item_to_be_dropped) = self.underlying_queue.try_pop() {}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Pool<T> {
|
||||
queue: Arc<NonLeakingMsQueue<GenerationItem<T>>>,
|
||||
queue: Arc<MsQueue<GenerationItem<T>>>,
|
||||
freshest_generation: AtomicUsize,
|
||||
next_generation: AtomicUsize,
|
||||
}
|
||||
|
||||
impl<T> Pool<T> {
|
||||
pub fn new() -> Pool<T> {
|
||||
let queue = Arc::new(MsQueue::new());
|
||||
Pool {
|
||||
queue: Arc::default(),
|
||||
queue: queue,
|
||||
freshest_generation: AtomicUsize::default(),
|
||||
next_generation: AtomicUsize::default(),
|
||||
}
|
||||
@@ -108,7 +84,7 @@ impl<T> Pool<T> {
|
||||
|
||||
pub struct LeasedItem<T> {
|
||||
gen_item: Option<GenerationItem<T>>,
|
||||
recycle_queue: Arc<NonLeakingMsQueue<GenerationItem<T>>>,
|
||||
recycle_queue: Arc<MsQueue<GenerationItem<T>>>,
|
||||
}
|
||||
|
||||
impl<T> Deref for LeasedItem<T> {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
extern crate itertools;
|
||||
use super::merge_policy::{MergePolicy, MergeCandidate};
|
||||
use core::SegmentMeta;
|
||||
use std::cmp;
|
||||
|
||||
@@ -45,11 +45,9 @@ extern crate fst;
|
||||
extern crate byteorder;
|
||||
extern crate memmap;
|
||||
extern crate regex;
|
||||
extern crate tempfile;
|
||||
extern crate atomicwrites;
|
||||
extern crate tempdir;
|
||||
extern crate serde;
|
||||
extern crate bincode;
|
||||
extern crate serde_json;
|
||||
extern crate time;
|
||||
extern crate lz4;
|
||||
|
||||
Reference in New Issue
Block a user