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]