Yue Yu created SOLR-17221:
-----------------------------

             Summary: Http2SolrClient merges case sensitive solr params
                 Key: SOLR-17221
                 URL: https://issues.apache.org/jira/browse/SOLR-17221
             Project: Solr
          Issue Type: Bug
      Security Level: Public (Default Security Level. Issues are Public)
          Components: SolrJ
    Affects Versions: 9.5.0
            Reporter: Yue Yu


In solr9.5.0/solrj9.5.0,  the multi-shard requests are sent through 
Http2SolrClient, and this function composes the actual Jetty Request object:
{code:java}
private Request fillContentStream(
      Request req,
      Collection<ContentStream> streams,
      ModifiableSolrParams wparams,
      boolean isMultipart)
      throws IOException {
    if (isMultipart) {
      // multipart/form-data
      try (MultiPartRequestContent content = new MultiPartRequestContent()) {
        Iterator<String> iter = wparams.getParameterNamesIterator();
        while (iter.hasNext()) {
          String key = iter.next();
          String[] vals = wparams.getParams(key);
          if (vals != null) {
            for (String val : vals) {
              content.addFieldPart(key, new StringRequestContent(val), null);
            }
          }
        }
        if (streams != null) {
          for (ContentStream contentStream : streams) {
            String contentType = contentStream.getContentType();
            if (contentType == null) {
              contentType = "multipart/form-data"; // default
            }
            String name = contentStream.getName();
            if (name == null) {
              name = "";
            }
            HttpFields.Mutable fields = HttpFields.build(1);
            fields.add(HttpHeader.CONTENT_TYPE, contentType);
            content.addFilePart(
                name,
                contentStream.getName(),
                new InputStreamRequestContent(contentStream.getStream()),
                fields);
          }
        }
        req.body(content);
      }
    } else {
      // application/x-www-form-urlencoded
      Fields fields = new Fields();
      Iterator<String> iter = wparams.getParameterNamesIterator();
      while (iter.hasNext()) {
        String key = iter.next();
        String[] vals = wparams.getParams(key);
        if (vals != null) {
          for (String val : vals) {
            fields.add(key, val);
          }
        }
      }
      req.body(new FormRequestContent(fields, FALLBACK_CHARSET));
    }

    return req;
  } {code}
The problem is the use of this class *Fields fields = new Fields();*  where 
caseSensitive=false by default, this leads to case sensitive solr params being 
merged together. For example f.case_sensitive_field.facet.limit=5 & 
f.CASE_SENSITIVE_FIELD.facet.limit=99

Not sure if this is intentional for some reason?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to