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

SolrCloud doesn't distribute null values

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      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

            • Assignee:
              Unassigned
              Reporter:
              sdavids Steve Davids

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment