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

Michael Sun commented on SOLR-7746:
-----------------------------------

Attach patch with test. I tested that the test is gonna fail without change in 
PingRequestHandler. Also the code path in PingRequestHandler() is modified to 
separate the handling in case isShard is true or not to reduce if-else block.

There is behavior change for PingRequestHandler in case isShard=true. In this 
case, it simply returns what the delegated handler returns. Javadoc is updated. 
Here is how new PingRequestHandler process ping request with distrib=true. This 
behavior change is required to aggregate results from shards (Step 7).

1. PingRequestHandler receives ping request with distrib=true.
2. Find the delegated handler, for example SearchHandler by default.
3. Call SearchHandler to handle request.
4. SearchHandler send requests to shards with distrib=false and isShard=true. 
5. [Shard] PingHandler of each shard receives the request and delegate to 
SearchHandler.
6. [Shard] SearchHandler of shards process and return the result.
7. SearchHandler in Step3 aggregate the result of all shards.
8. Return the result to PingRequestHandler.
9. PingRequestHandler returns either success or HTTP Error code.



> Ping requests stopped working with distrib=true in Solr 5.2.1
> -------------------------------------------------------------
>
>                 Key: SOLR-7746
>                 URL: https://issues.apache.org/jira/browse/SOLR-7746
>             Project: Solr
>          Issue Type: Bug
>          Components: SolrCloud
>    Affects Versions: 5.2.1
>            Reporter: Alexey Serba
>         Attachments: SOLR-7746.patch, SOLR-7746.patch, SOLR-7746.patch, 
> SOLR-7746.patch
>
>
> {noformat:title="steps to reproduce"}
> # start 1 node SolrCloud cluster
> sh> ./bin/solr -c -p 8888
> # create a test collection (we won’t use it, but I just want to it to load 
> solr configs to Zk)
> ./bin/solr create_collection -c test -d sample_techproducts_configs -p 8888
> # create another test collection with 2 shards
> curl 
> 'http://localhost:8888/solr/admin/collections?action=CREATE&name=test2&numShards=2&replicationFactor=1&maxShardsPerNode=2&collection.configName=test'
> # try distrib ping request
> curl 
> 'http://localhost:8888/solr/test2/admin/ping?wt=json&distrib=true&indent=true'
> ...
>   "error":{
>     "msg":"Ping query caused exception: Error from server at 
> http://192.168.59.3:8888/solr/test2_shard2_replica1: Cannot execute the 
> PingRequestHandler recursively"
> ...
> {noformat}
> {noformat:title="Exception"}
> 2116962 [qtp599601600-13] ERROR org.apache.solr.core.SolrCore  [test2 shard2 
> core_node1 test2_shard2_replica1] – org.apache.solr.common.SolrException: 
> Cannot execute the PingRequestHandler recursively
>       at 
> org.apache.solr.handler.PingRequestHandler.handlePing(PingRequestHandler.java:246)
>       at 
> org.apache.solr.handler.PingRequestHandler.handleRequestBody(PingRequestHandler.java:211)
>       at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
>       at org.apache.solr.core.SolrCore.execute(SolrCore.java:2064)
>       at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654)
>       at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:450)
>       at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:227)
>       at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
> {noformat}



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

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

Reply via email to