From a3247ebcfb4f8acbc10bf79da00dd5a58391f586 Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Sat, 2 Sep 2017 15:53:07 +0900 Subject: [PATCH] issue/197 Remove logic that prevents leak from csossbeam MsQueue. --- Cargo.toml | 2 +- src/analyzer/mod.rs | 2 -- src/core/pool.rs | 32 ++++---------------------------- src/indexer/log_merge_policy.rs | 1 - src/lib.rs | 2 -- 5 files changed, 5 insertions(+), 34 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 845f1d31d..722a9e477 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" diff --git a/src/analyzer/mod.rs b/src/analyzer/mod.rs index cfc20218d..e5d5672e3 100644 --- a/src/analyzer/mod.rs +++ b/src/analyzer/mod.rs @@ -1,5 +1,3 @@ -extern crate regex; - use std::str::Chars; use std::ascii::AsciiExt; diff --git a/src/core/pool.rs b/src/core/pool.rs index 1796fc32c..e9e2fe749 100644 --- a/src/core/pool.rs +++ b/src/core/pool.rs @@ -11,43 +11,19 @@ pub struct GenerationItem { } -// See https://github.com/crossbeam-rs/crossbeam/issues/91 -struct NonLeakingMsQueue { - underlying_queue: MsQueue, -} -impl Default for NonLeakingMsQueue { - fn default() -> NonLeakingMsQueue { - NonLeakingMsQueue { underlying_queue: MsQueue::new() } - } -} - -impl NonLeakingMsQueue { - fn pop(&self) -> T { - self.underlying_queue.pop() - } - - fn push(&self, el: T) { - self.underlying_queue.push(el); - } -} - -impl Drop for NonLeakingMsQueue { - fn drop(&mut self) { - while let Some(_popped_item_to_be_dropped) = self.underlying_queue.try_pop() {} - } -} pub struct Pool { - queue: Arc>>, + queue: Arc>>, freshest_generation: AtomicUsize, next_generation: AtomicUsize, } impl Pool { pub fn new() -> Pool { + 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 Pool { pub struct LeasedItem { gen_item: Option>, - recycle_queue: Arc>>, + recycle_queue: Arc>>, } impl Deref for LeasedItem { diff --git a/src/indexer/log_merge_policy.rs b/src/indexer/log_merge_policy.rs index b5c860e25..85c20d105 100644 --- a/src/indexer/log_merge_policy.rs +++ b/src/indexer/log_merge_policy.rs @@ -1,4 +1,3 @@ -extern crate itertools; use super::merge_policy::{MergePolicy, MergeCandidate}; use core::SegmentMeta; use std::cmp; diff --git a/src/lib.rs b/src/lib.rs index 5ff378dd0..a4de08b7e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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;