Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-13178

ClassCastExceptions in o.a.s.request.json.ObjectUtil for valid JSON inputs that are not objects

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Duplicate
    • 7.5, 9.0
    • None
    • Server

    Description

      Requesting any of the following URLs gives a 500 error due to a ClassCastException in o.a.s.r.j.ObjectUtil.mergeObjects:

      The error response is caused by uncaught ClassCastExceptions, such as (for the first URL):

      {{ java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.Map}}
      at org.apache.solr.request.json.ObjectUtil.mergeObjects(ObjectUtil.java:108)
      at org.apache.solr.request.json.RequestUtil.mergeJSON(RequestUtil.java:269)
      at org.apache.solr.request.json.RequestUtil.processParams(RequestUtil.java:180)
      at org.apache.solr.util.SolrPluginUtils.setDefaults(SolrPluginUtils.java:167)
      at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:196)
      [...]

      The culprit seems to be the o.a.s.r.j.RequestUtil.mergeJSON method, in particular the following fragment:
              Object o = ObjectBuilder.fromJSON(jsonStr);
              // zero-length strings or comments can cause this to be null (and a zero-length string can result from a json content-type w/o a body)
              if (o != null) {
                ObjectUtil.mergeObjects(json, path, o, handler);
                      }

      Note that o is an Object representing a JSON value, while SOLR seems to expect that o holds a JSON object. But in the examples above, the JSON value is a number (represented by  a Long object) instead - this is, in fact, valid JSON.

      A possible fix could be to use the getObject method of ObjectUtil instead of blindly calling fromJSON.

      This bug was found using Diffblue Microservices Testing. Find more information on this test campaign.

      Attachments

        1. home.zip
          376 kB
          Johannes Kloos

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jkloos Johannes Kloos
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: