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

SolrCloud doesn't distribute null values

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • None
    • None

    Description

      When trying to overwrite field values in SolrCloud using doc.setField(fieldName, null) it produces inconsistent behavior depending on the routing of the document to a specific shard. The binary format that is sent in preserves the null, but when the DistributedProcessor forwards the message to replicas it writes the message to XML using ClientUtils.writeVal(..) which drops any null value from the XML representation. This was especially problematic when a custom processor was initially placed after the distributed processor using the previously mentioned setField(null) approach but then moved ahead of the DistributedProcessor which no longer works as expected. It appears that I now need to updated the code to: doc.setField(fieldName, Collections.singletonMap("set", null)) for it to properly distribute throughout the cloud due to the XML restrictions. The fact that the custom processor needs to change depending on it's location in reference to the DistributedProcessor is a drag. I believe there should be a requirement that you can take a SolrInputDocument -> toXml -> toSolrInputDocument and assert that the two SolrInputDocuments are equivalent, instead of a lossy translation to XML.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              sdavids Steve Davids
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: