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

    https://github.com/apache/lucene-solr/pull/443#discussion_r214542110
  
    --- Diff: 
solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
 ---
    @@ -57,12 +58,34 @@
     
       static final char PATH_SEP_CHAR = '/';
       static final char NUM_SEP_CHAR = '#';
    +  private static final ThreadLocal<Boolean> transformerInitialized = new 
ThreadLocal<Boolean>(){
    +    @Override
    +    protected Boolean initialValue() {
    +      this.set(false);
    +      return false;
    +    }
    +  };
       private static final BooleanQuery rootFilter = new BooleanQuery.Builder()
           .add(new BooleanClause(new MatchAllDocsQuery(), 
BooleanClause.Occur.MUST))
           .add(new BooleanClause(new 
DocValuesFieldExistsQuery(NEST_PATH_FIELD_NAME), 
BooleanClause.Occur.MUST_NOT)).build();
     
       @Override
       public DocTransformer create(String field, SolrParams params, 
SolrQueryRequest req) {
    +    if(transformerInitialized.get()) {
    +      // this is a recursive call by SolrReturnFields see 
#createChildDocTransformer
    +      return new DocTransformer.NoopFieldTransformer();
    +    } else {
    +      try {
    +        // transformer is yet to be initialized in this thread, create it
    +        transformerInitialized.set(true);
    +        return createChildDocTransformer(field, params, req);
    +      } finally {
    +        transformerInitialized.remove();
    --- End diff --
    
    Hmm; maybe clearer to set(false)


---

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

Reply via email to