C# Class Lucene.Net.Index.DocumentsWriterDeleteQueue

DocumentsWriterDeleteQueue is a non-blocking linked pending deletes queue. In contrast to other queue implementation we only maintain the tail of the queue. A delete queue is always used in a context of a set of DWPTs and a global delete pool. Each of the DWPT and the global pool need to maintain their 'own' head of the queue (as a DeleteSlice instance per DWPT). The difference between the DWPT and the global pool is that the DWPT starts maintaining a head once it has added its first document since for its segments private deletes only the deletes after that document are relevant. The global pool instead starts maintaining the head once this instance is created by taking the sentinel instance as its initial head.

Since each DeleteSlice maintains its own head and the list is only single linked the garbage collector takes care of pruning the list for us. All nodes in the list that are still relevant should be either directly or indirectly referenced by one of the DWPT's private DeleteSlice or by the global BufferedUpdates slice.

Each DWPT as well as the global delete pool maintain their private DeleteSlice instance. In the DWPT case updating a slice is equivalent to atomically finishing the document. The slice update guarantees a "happens before" relationship to all other updates in the same indexing session. When a DWPT updates a document it:

  1. consumes a document and finishes its processing
  2. updates its private DeleteSlice either by calling #updateSlice(DeleteSlice) or #add(Term, DeleteSlice) (if the document has a delTerm)
  3. applies all deletes in the slice to its private BufferedUpdates and resets it
  4. increments its internal document id
The DWPT also doesn't apply its current documents delete term until it has updated its delete slice which ensures the consistency of the update. If the update fails before the DeleteSlice could have been updated the deleteTerm will also not be added to its private deletes neither to the global deletes.
Afficher le fichier Open project: paulirwin/lucene.net Class Usage Examples

Méthodes publiques

Méthode Description
Add ( Lucene.Net.Index.Term term, DeleteSlice slice ) : void

invariant for document update

AddDelete ( ) : void
AnyChanges ( ) : bool
BytesUsed ( ) : long
Clear ( ) : void
DocumentsWriterDeleteQueue ( ) : Lucene.Net.Support
DocumentsWriterDeleteQueue ( BufferedUpdates globalBufferedUpdates, long generation ) : Lucene.Net.Support
DocumentsWriterDeleteQueue ( long generation ) : Lucene.Net.Support
FreezeGlobalBuffer ( DeleteSlice callerSlice ) : FrozenBufferedUpdates
NewSlice ( ) : DeleteSlice
NumGlobalTermDeletes ( ) : int
ToString ( ) : string
TryApplyGlobalSlice ( ) : void
UpdateSlice ( DeleteSlice slice ) : bool

Private Methods

Méthode Description
Add ( Node item ) : void
AddBinaryUpdate ( BinaryDocValuesUpdate update ) : void
AddNumericUpdate ( NumericDocValuesUpdate update ) : void
ForceApplyGlobalSlice ( ) : bool

Method Details

Add() public méthode

invariant for document update
public Add ( Lucene.Net.Index.Term term, DeleteSlice slice ) : void
term Lucene.Net.Index.Term
slice DeleteSlice
Résultat void

AddDelete() public méthode

public AddDelete ( ) : void
Résultat void

AnyChanges() public méthode

public AnyChanges ( ) : bool
Résultat bool

BytesUsed() public méthode

public BytesUsed ( ) : long
Résultat long

Clear() public méthode

public Clear ( ) : void
Résultat void

DocumentsWriterDeleteQueue() public méthode

public DocumentsWriterDeleteQueue ( ) : Lucene.Net.Support
Résultat Lucene.Net.Support

DocumentsWriterDeleteQueue() public méthode

public DocumentsWriterDeleteQueue ( BufferedUpdates globalBufferedUpdates, long generation ) : Lucene.Net.Support
globalBufferedUpdates BufferedUpdates
generation long
Résultat Lucene.Net.Support

DocumentsWriterDeleteQueue() public méthode

public DocumentsWriterDeleteQueue ( long generation ) : Lucene.Net.Support
generation long
Résultat Lucene.Net.Support

FreezeGlobalBuffer() public méthode

public FreezeGlobalBuffer ( DeleteSlice callerSlice ) : FrozenBufferedUpdates
callerSlice DeleteSlice
Résultat FrozenBufferedUpdates

NewSlice() public méthode

public NewSlice ( ) : DeleteSlice
Résultat DeleteSlice

NumGlobalTermDeletes() public méthode

public NumGlobalTermDeletes ( ) : int
Résultat int

ToString() public méthode

public ToString ( ) : string
Résultat string

TryApplyGlobalSlice() public méthode

public TryApplyGlobalSlice ( ) : void
Résultat void

UpdateSlice() public méthode

public UpdateSlice ( DeleteSlice slice ) : bool
slice DeleteSlice
Résultat bool