You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2020/05/12 21:51:00 UTC

[jira] [Commented] (SOLR-14456) Compressed requests fail in SolrCloud when the request is routed internally by the serving solr node

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

ASF subversion and git services commented on SOLR-14456:
--------------------------------------------------------

Commit adddab9d1466675cd79fd06c37592000a56841d2 in lucene-solr's branch refs/heads/master from Samuel García Martínez
[ https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=adddab9d ]

SOLR-14456: Fix Content-Type header forwarding on compressed requests (#1480)

Co-authored-by: Samuel García Martínez <sa...@inditex.com>

> Compressed requests fail in SolrCloud when the request is routed internally by the serving solr node
> ----------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-14456
>                 URL: https://issues.apache.org/jira/browse/SOLR-14456
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: SolrCloud
>    Affects Versions: 7.7.2
>         Environment: Solr version: 7.7.2
> Solr cloud enabled
> Cluster topology: 6 nodes, 1 single collection, 10 shards and 3 replicas. 1 HTTP LB using Round Robin over all nodes
> All cluster nodes have gzip enabled for all paths, all HTTP verbs and all MIME types.
> Solr client: HttpSolrClient targeting the HTTP LB
> h3.  
>            Reporter: Samuel García Martínez
>            Assignee: Houston Putman
>            Priority: Major
>          Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> h3. Solr cluster setup
>  * Solr version: 7.7.2
>  * Solr cloud enabled
>  * Cluster topology: 6 nodes, 1 single collection, 10 shards and 3 replicas. 1 HTTP LB using Round Robin over all nodes
>  * All cluster nodes have gzip enabled for all paths, all HTTP verbs and all MIME types.
>  * Solr client: HttpSolrClient targeting the HTTP LB
> h3. Problem description
> When the Solr node that receives the request has to forward it
> to a Solr Node that can actually perform the query, the response headers are added incorrectly to the response, causing any HTTP client to fail, whether it's a SolrClient or a basic HTTP client implementation with any other SDK.
> To simplify the case, let's try to start from the following repro scenario:
>  * Start one node with cloud mode and port 8983
>  * Create one single collection (1 shard, 1 replica)
>  * Start another node with port 8984 and the previusly started zk (-z localhost:9983)
>  * Start a java application and query the cluster using the node on port 8984 (the one that doesn't host the collection)
> So, then something like this happens:
>  * The application queries node:8984 with compression enabled ("Accept-Encoding: gzip")
> and wt=javabin
>  * Node:8984 can't perform the query and creates a http request behind the scenes to node:8983
>  * Node:8983 returns a gzipped response with "Content-Encoding: gzip" and "Content-Type:
> application/octet-stream"
> Node:8984 adds the "Content-Encoding: gzip" header as character stream to the response
> (it should be forwarded as "Content-Encoding" header, not character encoding)
>  * HttpSolrClient receives a "Content-Type: application/octet-stream;charset=gzip", causing
> an exception.
>  * HttpSolrClient tries to quietly close the connection, but since the stream is broken,
> the Utils.consumeFully fails to actually consume the entity (it throws another exception in
> GzipDecompressingEntity#getContent() with "not in GZIP format")
> The exception thrown by HttpSolrClient is:
> {code:java}
> java.nio.charset.UnsupportedCharsetException: gzip
>  at java.nio.charset.Charset.forName(Charset.java:531)
>  at org.apache.http.entity.ContentType.create(ContentType.java:271)
>  at org.apache.http.entity.ContentType.create(ContentType.java:261)
>  at org.apache.http.entity.ContentType.parse(ContentType.java:319)
>  at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:591)
>  at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:255)
>  at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:244)
>  at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:194)
>  at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:1015)
>  at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:1031)
>  at org.apache.solr.client.solrj.SolrClient$$FastClassBySpringCGLIB$$7fcf36a0.invoke(<generated>)
>  at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218){code}
>  



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

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