Github user dsmiley commented on a diff in the pull request:

    https://github.com/apache/lucene-solr/pull/455#discussion_r223243871
  
    --- Diff: 
solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java
 ---
    @@ -461,5 +466,33 @@ private static boolean isChildDoc(Object obj) {
         }
         return objValues.iterator().next() instanceof SolrDocumentBase;
       }
    +
    +  private void removeObj(Collection original, Object toRemove, String 
fieldName) {
    +    if(isChildDoc(toRemove)) {
    +      removeChildDoc(original, (SolrInputDocument) toRemove);
    +    } else {
    +      original.remove(getNativeFieldValue(fieldName, toRemove));
    +    }
    +  }
    +
    +  private static void removeChildDoc(Collection original, 
SolrInputDocument docToRemove) {
    +    for(SolrInputDocument doc: (Collection<SolrInputDocument>) original) {
    +      if(isDerivedFromDoc(doc, docToRemove)) {
    +        original.remove(doc);
    --- End diff --
    
    eh... I'm not sure if it's as simple as `original.remove(doc)` since if it 
was, we wouldn't need the method `isDerivedFromDoc`.  Assuming we do need that 
"derived" predicate method, then we probably need to call remove on an iterator 
here.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to