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

Mark Robert Miller commented on SOLR-14923:
-------------------------------------------

I’ll take a look in the next few days, but FYI, my recollection is that that 
reopen was for all updates and is required for RTG. I’ve played around with 
moving it out of the sync block and I believe that broke RTG. Making those 
syncs “fair” helps.

If you blast in updates, as they move through the dist update path, they get 
and release Update lock many times. So updates will pile up on those locks, and 
they will get the lock in random order. So a bunch of updates that are trying 
to finish May get caught waiting for a bunch of new updates looking to start or 
do a middle part. Child and atomic updates, that do synchronous distribution or 
need to wait for a dependent update, clogs things up anymore. Making the locks 
fair at helps updates that came in first to not get caught waiting for all 
these updates coming in later. 

> Indexing performance is unacceptable when child documents are involved
> ----------------------------------------------------------------------
>
>                 Key: SOLR-14923
>                 URL: https://issues.apache.org/jira/browse/SOLR-14923
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: update, UpdateRequestProcessors
>    Affects Versions: master (9.0), 8.3, 8.4, 8.5, 8.6
>            Reporter: Thomas Wöckinger
>            Priority: Critical
>              Labels: performance
>
> Parallel indexing does not make sense at moment when child documents are used.
> The org.apache.solr.update.processor.DistributedUpdateProcessor checks at the 
> end of the method doVersionAdd if Ulog caches should be refreshed.
> This check will return true if any child document is included in the 
> AddUpdateCommand.
> If so ulog.openRealtimeSearcher(); is called, this call is very expensive, 
> and executed in a synchronized block of the UpdateLog instance, therefore all 
> other operations on the UpdateLog are blocked too.
> Because every important UpdateLog method (add, delete, ...) is done using a 
> synchronized block almost each operation is blocked.
> This reduces multi threaded index update to a single thread behavior.
> The described behavior is not depending on any option of the UpdateRequest, 
> so it does not make any difference if 'waitFlush', 'waitSearcher' or 
> 'softCommit'  is true or false.
> The described behavior makes the usage of ChildDocuments useless, because the 
> performance is unacceptable.
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to