diff --git a/src/error.rs b/src/error.rs index 6a82c239d..3404e9911 100644 --- a/src/error.rs +++ b/src/error.rs @@ -36,7 +36,7 @@ pub enum Error { /// Invalid argument was passed by the user. InvalidArgument(String), /// An Error happened in one of the thread - ErrorInThread(String), // TODO investigate better solution + ErrorInThread(String), } impl From for Error { diff --git a/src/indexer/delete_queue.rs b/src/indexer/delete_queue.rs index 498bff51f..0c5dedba1 100644 --- a/src/indexer/delete_queue.rs +++ b/src/indexer/delete_queue.rs @@ -7,7 +7,7 @@ use std::mem; #[derive(Default)] struct InnerDeleteQueue { - ro_chunks: ReadOnlyDeletes, + ro_chunks: DeleteQueueSnapshot, last_chunk: Vec, } @@ -16,7 +16,7 @@ impl InnerDeleteQueue { self.last_chunk.push(delete_operation); } - pub fn snapshot(&mut self,) -> ReadOnlyDeletes { + pub fn snapshot(&mut self,) -> DeleteQueueSnapshot { if self.last_chunk.len() > 0 { let new_operations = vec!(); let new_ro_chunk = mem::replace(&mut self.last_chunk, new_operations); @@ -33,11 +33,10 @@ impl InnerDeleteQueue { -// TODO Rename to DeleteQueueSnapshot #[derive(Default, Clone)] -pub struct ReadOnlyDeletes(Vec>>); +pub struct DeleteQueueSnapshot(Vec>>); -impl ReadOnlyDeletes { +impl DeleteQueueSnapshot { fn push(&mut self, operations: Vec) { self.0.push(Arc::new(operations)); } @@ -61,7 +60,7 @@ impl DeleteQueue { self.0.write().unwrap().push(delete_operation); } - pub fn snapshot(&self) -> ReadOnlyDeletes { + pub fn snapshot(&self) -> DeleteQueueSnapshot { self.0.write().unwrap().snapshot() } diff --git a/src/indexer/index_writer.rs b/src/indexer/index_writer.rs index 549de17c1..8e6a9351e 100644 --- a/src/indexer/index_writer.rs +++ b/src/indexer/index_writer.rs @@ -9,7 +9,7 @@ use core::SegmentReader; use datastruct::stacker::Heap; use Error; use fastfield::delete::write_delete_bitset; -use indexer::delete_queue::ReadOnlyDeletes; +use indexer::delete_queue::DeleteQueueSnapshot; use futures::Canceled; use futures::Future; use indexer::delete_queue::DeleteQueue; @@ -94,7 +94,7 @@ impl !Sync for IndexWriter {} pub fn advance_deletes( segment: &mut Segment, - delete_operations: &ReadOnlyDeletes, + delete_operations: &DeleteQueueSnapshot, doc_opstamps: &DocToOpstampMapping) -> Result { let segment_reader = SegmentReader::open(segment.clone())?; let mut delete_bitset = BitSet::with_capacity(segment_reader.max_doc() as usize); @@ -134,14 +134,15 @@ pub fn advance_deletes( } fn index_documents(heap: &mut Heap, - mut segment: Segment, + segment: Segment, schema: &Schema, generation: usize, document_iterator: &mut Iterator, segment_updater: &mut SegmentUpdater) -> Result { heap.clear(); - let mut segment_writer = try!(SegmentWriter::for_segment(heap, segment.clone(), &schema)); + let segment_id = segment.id(); + let mut segment_writer = try!(SegmentWriter::for_segment(heap, segment, &schema)); for doc in document_iterator { try!(segment_writer.add_document(&doc, &schema)); if segment_writer.is_buffer_full() { @@ -159,7 +160,7 @@ fn index_documents(heap: &mut Heap, let doc_opstamps: Vec = segment_writer.finalize()?; // let segment_entry = advance_deletes(&mut segment, delete_queue, delete_position, )?; - let mut segment_meta = SegmentMeta::new(segment.id()); + let mut segment_meta = SegmentMeta::new(segment_id); segment_meta.set_num_docs(num_docs); let mut segment_entry = SegmentEntry::new(segment_meta); diff --git a/src/schema/field_entry.rs b/src/schema/field_entry.rs index 253d2ebb0..99f3cb42c 100644 --- a/src/schema/field_entry.rs +++ b/src/schema/field_entry.rs @@ -54,7 +54,7 @@ impl FieldEntry { pub fn is_indexed(&self,) -> bool { match self.field_type { FieldType::Str(ref options) => options.get_indexing_options().is_indexed(), - _ => false, // TODO handle u32 indexed + FieldType::U32(ref options) => options.is_indexed(), } }