Addressed code review

moved Opstamp to top-level namespace, added a docstring

Corrected minor typos/whitespace
This commit is contained in:
petr-tik
2019-04-26 08:29:49 +01:00
parent 1a90a1f3b0
commit 8ffae47854
14 changed files with 25 additions and 20 deletions

View File

@@ -1,8 +1,8 @@
use core::SegmentMeta;
use indexer::Opstamp;
use schema::Schema;
use serde_json;
use std::fmt;
use Opstamp;
/// Meta information about the `Index`.
///

View File

@@ -6,11 +6,11 @@ use directory::error::{OpenReadError, OpenWriteError};
use directory::Directory;
use directory::{ReadOnlySource, WritePtr};
use indexer::segment_serializer::SegmentSerializer;
use indexer::Opstamp;
use schema::Schema;
use std::fmt;
use std::path::PathBuf;
use std::result;
use Opstamp;
use Result;
/// A segment is a piece of the index.

View File

@@ -1,11 +1,11 @@
use super::SegmentComponent;
use census::{Inventory, TrackedObject};
use core::SegmentId;
use indexer::Opstamp;
use serde;
use std::collections::HashSet;
use std::fmt;
use std::path::PathBuf;
use Opstamp;
lazy_static! {
static ref INVENTORY: Inventory<InnerSegmentMeta> = { Inventory::new() };
@@ -137,7 +137,7 @@ impl SegmentMeta {
self.max_doc() - self.num_deleted_docs()
}
/// Returns the opstamp of the last delete operation
/// Returns the `Opstamp` of the last delete operation
/// taken in account in this segment.
pub fn delete_opstamp(&self) -> Option<Opstamp> {
self.tracked

View File

@@ -1,8 +1,8 @@
use super::operation::DeleteOperation;
use indexer::Opstamp;
use std::mem;
use std::ops::DerefMut;
use std::sync::{Arc, RwLock};
use Opstamp;
// The DeleteQueue is similar in conceptually to a multiple
// consumer single producer broadcast channel.

View File

@@ -1,5 +1,6 @@
use std::sync::Arc;
use DocId;
use Opstamp;
// Doc to opstamp is used to identify which
// document should be deleted.
@@ -22,8 +23,6 @@ pub enum DocToOpstampMapping {
None,
}
use super::Opstamp;
impl From<Vec<u64>> for DocToOpstampMapping {
fn from(opstamps: Vec<Opstamp>) -> DocToOpstampMapping {
DocToOpstampMapping::WithMap(Arc::new(opstamps))

View File

@@ -19,7 +19,6 @@ use indexer::doc_opstamp_mapping::DocToOpstampMapping;
use indexer::operation::DeleteOperation;
use indexer::stamper::Stamper;
use indexer::MergePolicy;
use indexer::Opstamp;
use indexer::SegmentEntry;
use indexer::SegmentWriter;
use postings::compute_table_size;
@@ -31,6 +30,7 @@ use std::ops::Range;
use std::sync::Arc;
use std::thread;
use std::thread::JoinHandle;
use Opstamp;
use Result;
// Size of the margin for the heap. A segment is closed when the remaining memory

View File

@@ -1,6 +1,6 @@
use census::{Inventory, TrackedObject};
use indexer::Opstamp;
use std::collections::HashSet;
use Opstamp;
use SegmentId;
#[derive(Default)]
@@ -18,8 +18,8 @@ impl MergeOperationInventory {
}
}
/// A `MergeOperation` has two role.
/// It carries all of the information required to describe a merge :
/// A `MergeOperation` has two roles.
/// It carries all of the information required to describe a merge:
/// - `target_opstamp` is the opstamp up to which we want to consume the
/// delete queue and reflect their deletes.
/// - `segment_ids` is the list of segment to be merged.

View File

@@ -25,7 +25,6 @@ pub use self::segment_entry::SegmentEntry;
pub use self::segment_manager::SegmentManager;
pub use self::segment_serializer::SegmentSerializer;
pub use self::segment_writer::SegmentWriter;
pub use self::stamper::Opstamp;
/// Alias for the default merge policy, which is the `LogMergePolicy`.
pub type DefaultMergePolicy = LogMergePolicy;

View File

@@ -1,6 +1,6 @@
use indexer::Opstamp;
use schema::Document;
use schema::Term;
use Opstamp;
/// Timestamped Delete operation.
#[derive(Clone, Eq, PartialEq, Debug)]

View File

@@ -1,5 +1,5 @@
use super::IndexWriter;
use indexer::Opstamp;
use Opstamp;
use Result;
/// A prepared commit

View File

@@ -20,7 +20,6 @@ use indexer::merge_operation::MergeOperationInventory;
use indexer::merger::IndexMerger;
use indexer::stamper::Stamper;
use indexer::MergeOperation;
use indexer::Opstamp;
use indexer::SegmentEntry;
use indexer::SegmentSerializer;
use indexer::{DefaultMergePolicy, MergePolicy};
@@ -37,6 +36,7 @@ use std::sync::Arc;
use std::sync::RwLock;
use std::thread;
use std::thread::JoinHandle;
use Opstamp;
use Result;
/// Save the index meta file.

View File

@@ -4,7 +4,6 @@ use core::SerializableSegment;
use fastfield::FastFieldsWriter;
use fieldnorm::FieldNormsWriter;
use indexer::segment_serializer::SegmentSerializer;
use indexer::Opstamp;
use postings::MultiFieldPostingsWriter;
use schema::FieldType;
use schema::Schema;
@@ -16,6 +15,7 @@ use tokenizer::BoxedTokenizer;
use tokenizer::FacetTokenizer;
use tokenizer::{TokenStream, Tokenizer};
use DocId;
use Opstamp;
use Result;
/// A `SegmentWriter` is in charge of creating segment index from a

View File

@@ -1,8 +1,7 @@
use std::ops::Range;
use std::sync::atomic::Ordering;
use std::sync::Arc;
pub type Opstamp = u64;
use Opstamp;
// AtomicU64 have not landed in stable.
// For the moment let's just use AtomicUsize on
@@ -10,8 +9,8 @@ pub type Opstamp = u64;
#[cfg(target_arch = "x86_64")]
mod archicture_impl {
use indexer::stamper::Opstamp;
use std::sync::atomic::{AtomicU64, Ordering};
use Opstamp;
#[derive(Default)]
pub struct AtomicU64Ersatz(AtomicU64);
@@ -35,10 +34,10 @@ mod archicture_impl {
#[cfg(not(target_arch = "x86_64"))]
mod archicture_impl {
use indexer::stamper::Opstamp;
use std::sync::atomic::Ordering;
/// Under other architecture, we rely on a mutex.
use std::sync::RwLock;
use Opstamp;
#[derive(Default)]
pub struct AtomicU64Ersatz(RwLock<u64>);

View File

@@ -254,6 +254,14 @@ pub mod merge_policy {
/// as they are added in the segment.
pub type DocId = u32;
/// A u64 assigned to every operation incrementally
///
/// Used to sequence operations in the correct order during
/// asynchronous processing of adding documents, merging segments or rollback
/// Modelled by an AtomicU64 or a u64 under a RW-lock
/// on platforms without atomic integer support.
pub type Opstamp = u64;
/// A f32 that represents the relevance of the document to the query
///
/// This is modelled internally as a `f32`. The