Hoss Man created SOLR-8633:
------------------------------

             Summary: DistributedUpdateProcess.processCommit calls finish() - 
violates lifecycle, causes finish to be called twice (redundent code execution)
                 Key: SOLR-8633
                 URL: https://issues.apache.org/jira/browse/SOLR-8633
             Project: Solr
          Issue Type: Bug
            Reporter: Hoss Man


trying to wrap my head around a weird bug in my experiements with SOLR-445, i 
realized that {{DUP.processDelete}} has a direct call to {{finish()}}.

This violates the normal lifecycle of an UpdateProcessor (finish is only 
suppose to be called exactly once after processing any/all UpdateCommands) and 
could potentially break any UpdateProcessors configured after DUP (or in my 
case: processors configured _before_ DUP that expect to be in charge of calling 
finish, and catching any resulting exceptions, as part of the normal life cycle)

Independent of how it impacts other update processors, this also means that:
# all the logic in {{DUP.doFinish}} is getting executed twice -- which seems 
kind of expensive/dangerous to me since there is leader initiated recovery 
involved in this method
# {{SolrCmdDistributor.finish()}} gets called twice, which means 
{{StreamingSolrClients.shutdown()}} gets called twice, which means 
{{ConcurrentUpdateSolrClient.close()}} gets called twice ... it seems like 
we're just getting really lucky that (as configured by DUP) all of these 
resources are still usable after being finished/shutdown/closed






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to