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

Atomic update including set null=true throws uniqueKey error depending on order

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 4.0, 4.1
    • Fix Version/s: 4.3, 6.0
    • Component/s: clients - java, update
    • Labels:
      None

      Description

      There seems to be a field order issue going on when setting a field to null with a partial update. I am running the nightly Solr 4.1.0.2013.01.11.08.23.02 build. Ran into this issue using the nightly build version of Solrj, including the null field fix from Solr-4133.

      Null first, unique field second (this is what is being generated by Solrj)

      curl 'http://localhost/solr/update?commit=true' -H 'Content-type:text/xml' -d '<add><doc boost="1.0">
      <field name="timestamp" update="set" null="true"/><field name="id">test</field>
      </doc></add>'
      
      <?xml version="1.0" encoding="UTF-8"?>
      <response>
      <lst name="responseHeader"><int name="status">400</int><int name="QTime">0</int></lst><lst name="error"><str name="msg">Document is missing mandatory uniqueKey field: id</str><int name="code">400</int></lst>
      </response>
      

      id first, then null field

      curl 'http://localhost/solr/update?commit=true' -H 'Content-type:text/xml' -d '<add><doc boost="1.0">
      <field name="id">test</field>
      <field name="timestamp" update="set" null="true"/>
      </doc></add>'
      
      <response>
      <lst name="responseHeader"><int name="status">0</int><int name="QTime">30</int></lst>
      </response>
      

      Real value first, then id

      curl 'http://localhost/solr/update?commit=true' -H 'Content-type:text/xml' -d '<add><doc boost="1.0">
      <field name="timestamp" update="set">1970-01-01T00:00:00Z</field>
      <field name="id">test</field>
      </doc></add>'
      
      <?xml version="1.0" encoding="UTF-8"?>
      <response>
      <lst name="responseHeader"><int name="status">0</int><int name="QTime">28</int></lst>
      </response>
      

      Unfortunately it is doing this field ordering every atomic update request via Solrj I do now.

        Attachments

        1. SOLR-4297.patch
          2 kB
          Shalin Shekhar Mangar

          Activity

            People

            • Assignee:
              shalinmangar Shalin Shekhar Mangar
              Reporter:
              bbpennel Ben Pennell
            • Votes:
              2 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: