[ 
https://issues.apache.org/jira/browse/LUCENE-2956?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13018743#comment-13018743
 ] 

Simon Willnauer commented on LUCENE-2956:
-----------------------------------------

bq. I think I have an idea, however can you explain the ticketQueue?

Sure, since with DWPT the flush process is concurrent and several DWPT could 
flush at the same time we must maintain the order of the flushes before we can 
apply the flushed segment and the frozen global
deletes it is buffering. The reason for this is that the global deletes mark a 
certain point in time where we took a DWPT out of rotation and freeze the 
global deletes.

Example: A DWPT 'A' starts flushing and freezes the global deletes, then DWPT 
'B' starts flushing and freezes all deletes occurred since 'A' has started. if 
'B' finishes before 'A' we need to wait until 'A' is done otherwise the deletes 
frozen by 'B' are not applied to 'A' and we might miss to deletes documents in 
'A'.

The Ticket queue simply ensures that we push the frozen deletes and the new 
created segment in the same order as the corresponding DWPT have started 
flushing. If a DWPT finishes flushing we update its Ticket and then check the 
head of the queue if we can remove / publish the ticket. if so we continue 
publishing until the head of the queue can not be published yet or the queue is 
empty.


> Support updateDocument() with DWPTs
> -----------------------------------
>
>                 Key: LUCENE-2956
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2956
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Index
>    Affects Versions: Realtime Branch
>            Reporter: Michael Busch
>            Assignee: Simon Willnauer
>            Priority: Minor
>             Fix For: Realtime Branch
>
>         Attachments: LUCENE-2956.patch
>
>
> With separate DocumentsWriterPerThreads (DWPT) it can currently happen that 
> the delete part of an updateDocument() is flushed and committed separately 
> from the corresponding new document.
> We need to make sure that updateDocument() is always an atomic operation from 
> a IW.commit() and IW.getReader() perspective.  See LUCENE-2324 for more 
> details.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to