[ https://issues.apache.org/jira/browse/SOLR-12798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16631211#comment-16631211 ]
Michael Schumann commented on SOLR-12798: ----------------------------------------- I wanted to chime in here because we have run into the problem of the body of large POST requests getting encoded in the URL in a different scenario and it would be nice if there was a solution for this. To work around the problem we have had to copy and modify Solr classes. Our use case is not a common one: we sometimes make query requests to a custom handler with a very large number of integer values encoded into a RoaringBitMap. On the client side it is not a big problem, we created a subclass of {{HttpSolrClient.Builder}} that set {{UseMultiPartPost}} to true. This is passed in to the {{LBHttpSolrClient}} which in turn is passed into {{CloudSolrClient}}. The problem that was harder to solve was in the {{HttpShardHandler}} on the Solr nodes, which ends up encoding the parameters in the URL. The work around we came up with was to duplicate and modify {{HttpShardHandler}} so we could again set {{UseMultiPartPost}} to true. We also had to subclass {{HttpShardHandlerFactory}} and {{HttpSolrClient.Builder.}} It would be great if there was a way to force the request both on the Solrj client side and in the requests made between the nodes to use multipart requests. > Structural changes in SolrJ since version 7.0.0 have effectively disabled > multipart post > ---------------------------------------------------------------------------------------- > > Key: SOLR-12798 > URL: https://issues.apache.org/jira/browse/SOLR-12798 > Project: Solr > Issue Type: Improvement > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrJ > Affects Versions: 7.4 > Reporter: Karl Wright > Assignee: Karl Wright > Priority: Major > Attachments: HOT Balloon Trip_Ultra HD.jpg, > SOLR-12798-approach.patch, SOLR-12798-reproducer.patch, no params in url.png, > solr-update-request.txt > > > Project ManifoldCF uses SolrJ to post documents to Solr. When upgrading from > SolrJ 7.0.x to SolrJ 7.4, we encountered significant structural changes to > SolrJ's HttpSolrClient class that seemingly disable any use of multipart > post. This is critical because ManifoldCF's documents often contain metadata > in excess of 4K that therefore cannot be stuffed into a URL. > The changes in question seem to have been performed by Paul Noble on > 10/31/2017, with the introduction of the RequestWriter mechanism. Basically, > if a request has a RequestWriter, it is used exclusively to write the > request, and that overrides the stream mechanism completely. I haven't > chased it back to a specific ticket. > ManifoldCF's usage of SolrJ involves the creation of > ContentStreamUpdateRequests for all posts meant for Solr Cell, and the > creation of UpdateRequests for posts not meant for Solr Cell (as well as for > delete and commit requests). For our release cycle that is taking place > right now, we're shipping a modified version of HttpSolrClient that ignores > the RequestWriter when dealing with ContentStreamUpdateRequests. We > apparently cannot use multipart for all requests because on the Solr side we > get "pfountz Should not get here!" errors on the Solr side when we do, which > generate HTTP error code 500 responses. That should not happen either, in my > opinion. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org