[ 
https://issues.apache.org/jira/browse/SOLR-1162?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12709392#action_12709392
 ] 

Noble Paul commented on SOLR-1162:
----------------------------------

we need a revamp of the JavaBinUpdateRequestCodec .

The way the deserialization is done is not safe . 
{code:java}

          if (name.equals("params")) {
            NamedList parmsAsList = (NamedList)val;
            ModifiableSolrParams parms = namedListToSolrParams(parmsAsList);
            updateRequest.setParams(parms);
          }
          else if (name.equals("delById")) {
            List<String> delIds = (List<String>)val;
            streamer.deleteById(delIds);
          }
          else if (name.equals("delByQ")) {
            String delQuery = (String)val;
            streamer.deleteByQuery(delQuery);
          }
{code}

may break if there are other objects with these names . I can provide a true 
streaming unmarshaller for JavabinCodec

Let us change the method
{code:java}
public UpdateRequest unmarshal(InputStream is, final StreamingDocumentHandler 
handler)
{code}
to 
{code:java}
public void unmarshal(InputStream is, final StreamingDocumentHandler handler)
{code}
and make the handler mandatory. so it does not have to worry about the type of 
Object



> SolrJ UpdateRequest does not maintain order of operations when sending mixed 
> types of changes (updates, delete id, delete query, update iterator)
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-1162
>                 URL: https://issues.apache.org/jira/browse/SOLR-1162
>             Project: Solr
>          Issue Type: Improvement
>          Components: clients - java
>    Affects Versions: 1.3
>            Reporter: Jayson Minard
>         Attachments: Solr-1162.patch, Solr-1162.patch
>
>
> In SolrJ UpdateRequest object it maintains separate lists of documents to 
> add, delete, and delete queries so that the order of those operations is not 
> known to the caller.  It really should execute the items in the same order 
> they were added to the UpdateRequest.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to