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

Hoss Man commented on SOLR-2894:
--------------------------------

bq. When those two things combine ... *Fixed*

Awesome .. i love it when tests uncover bugs you never even suspected.

bq. Are you still seeing the infinite recursion problem? The seeds you provided 
earlier pass locally for me.

Changing the encoding mechanism stoped the reliably reproducing infinite loop 
-- my concern though is that -- even if it's hard to test for -- we should make 
sure the overall algorithm for refinement isn't susceptible to infinite looping 
in the event of aberrant shard behavior.

At the moment, from what i can tell, the general behavior of the refinement 
logic is along the lines of...

{code}
while ( ! values_needing_refined.isEmpty() ) {
  foreach (value : values_needing_refined) {
    foreach (shard_not_responded : value) {
      shardrequstor.enque_refinement_request(shard_not_responded, value)
    }
  }
  shardrequestor.send_refinement_requests_to_shards_that_need_them()
}
{code}

Now imagine a situation where, for whatever reason, some shard will *never* 
respond back as expected from a refinement request -- ie: maybe we just started 
a rolling config upgrade and the new solrconfig.xml permanently disables 
faceting via a {{facet=false}} invariant? that's going to be an infinite loop.

We need a safety valve in the refinement logic.

Instead of simply sending refinement requests to a shard if there is a value 
whose shard count we don't know, potentially asking for hte same refinement 
over and over; we should instead keep track of which shards we've already 
_asked_ for a refinement, and if we've already asked a shard once, and still 
don't have a response then we should just give up and return an error.

does that make sense?



> Implement distributed pivot faceting
> ------------------------------------
>
>                 Key: SOLR-2894
>                 URL: https://issues.apache.org/jira/browse/SOLR-2894
>             Project: Solr
>          Issue Type: Improvement
>            Reporter: Erik Hatcher
>            Assignee: Hoss Man
>             Fix For: 4.9, 5.0
>
>         Attachments: SOLR-2894-mincount-minification.patch, 
> SOLR-2894-reworked.patch, SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894.patch, SOLR-2894.patch, SOLR-2894.patch, 
> SOLR-2894_cloud_test.patch, dateToObject.patch, pivot_mincount_problem.sh
>
>
> Following up on SOLR-792, pivot faceting currently only supports 
> undistributed mode.  Distributed pivot faceting needs to be implemented.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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

Reply via email to