You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mk...@apache.org on 2017/06/03 18:41:34 UTC
lucene-solr:master: SOLR-8762: respond child docs in DIH debug
Repository: lucene-solr
Updated Branches:
refs/heads/master 2c9f8604c -> db2b19f6b
SOLR-8762: respond child docs in DIH debug
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/db2b19f6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/db2b19f6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/db2b19f6
Branch: refs/heads/master
Commit: db2b19f6ba7766cf42bde668f8ec4e7b237e6007
Parents: 2c9f860
Author: Mikhail Khludnev <mk...@apache.org>
Authored: Sat Jun 3 13:41:51 2017 +0300
Committer: Mikhail Khludnev <mk...@apache.org>
Committed: Sat Jun 3 21:36:52 2017 +0300
----------------------------------------------------------------------
solr/CHANGES.txt | 2 ++
.../solr/handler/dataimport/DebugInfo.java | 32 +++++++++++++++++++-
.../AbstractDataImportHandlerTestCase.java | 4 +--
.../dataimport/TestHierarchicalDocBuilder.java | 31 +++++++++++++------
4 files changed, 56 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/db2b19f6/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 3c887be..ff6ff46 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -315,6 +315,8 @@ Other Changes
* SOLR-8437: Improve RAMDirectory details in sample solrconfig files (Mark Miller, Varun Thacker)
+* SOLR-8762: return child docs in DIH debug (Gopikannan Venugopalsamy via Mikhail Khludnev)
+
================== 6.6.0 ==================
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/db2b19f6/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java
index 9bd217a..623832f 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DebugInfo.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.handler.dataimport;
+import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -25,7 +26,35 @@ import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.StrUtils;
public class DebugInfo {
- public List<SolrInputDocument> debugDocuments = new ArrayList<>(0);
+
+ private static final class ChildRollupDocs extends AbstractList<SolrInputDocument> {
+
+ private List<SolrInputDocument> delegate = new ArrayList<>();
+
+ @Override
+ public SolrInputDocument get(int index) {
+ return delegate.get(index);
+ }
+
+ @Override
+ public int size() {
+ return delegate.size();
+ }
+
+ public boolean add(SolrInputDocument e) {
+ SolrInputDocument transformed = e.deepCopy();
+ if (transformed.hasChildDocuments()) {
+ ChildRollupDocs childList = new ChildRollupDocs();
+ childList.addAll(transformed.getChildDocuments());
+ transformed.addField("_childDocuments_", childList);
+ transformed.getChildDocuments().clear();
+ }
+ return delegate.add(transformed);
+ }
+ }
+
+ public List<SolrInputDocument> debugDocuments = new ChildRollupDocs();
+
public NamedList<String> debugVerboseOutput = null;
public boolean verbose;
@@ -34,3 +63,4 @@ public class DebugInfo {
debugVerboseOutput = new NamedList<>();
}
}
+
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/db2b19f6/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java
index db02993..7b8ff88 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java
@@ -80,11 +80,11 @@ public abstract class AbstractDataImportHandlerTestCase extends
}
}
- protected void runFullImport(String dataConfig) throws Exception {
+ protected String runFullImport(String dataConfig) throws Exception {
LocalSolrQueryRequest request = lrf.makeRequest("command", "full-import",
"debug", "on", "clean", "true", "commit", "true", "dataConfig",
dataConfig);
- h.query("/dataimport", request);
+ return h.query("/dataimport", request);
}
protected void runDeltaImport(String dataConfig) throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/db2b19f6/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java
index 603980a..086d7be 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestHierarchicalDocBuilder.java
@@ -39,6 +39,7 @@ import org.apache.solr.common.util.StrUtils;
import org.apache.solr.handler.dataimport.config.ConfigNameConstants;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.util.TestHarness;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -118,7 +119,7 @@ public class TestHierarchicalDocBuilder extends AbstractDataImportHandlerTestCas
List<String> parentIds = createDataIterator("select * from PARENT", parentType, parentType, parentsNum);
Collections.shuffle(parentIds, random());
- String parentId1 = parentIds.get(0);
+ final String parentId1 = parentIds.get(0);
String parentId2 = parentIds.get(1);
//parent 1 children
@@ -129,21 +130,24 @@ public class TestHierarchicalDocBuilder extends AbstractDataImportHandlerTestCas
childrenNum += childrenIds.size();
// grand children of first parent first child
- String childId = childrenIds.get(0);
+ final String childId = childrenIds.get(0);
String description = "grandchild of first parent, child of " + childId + " child";
select = "select * from GRANDCHILD where parent_id='" + childId + "'";
List<String> grandChildrenIds = createDataIterator(select, grandChildType, description, atLeast(2));
grandChildrenNum += grandChildrenIds.size();
// grand children of first parent second child
- childId = childrenIds.get(1);
- description = "grandchild of first parent, child of " + childId + " child";
- select = "select * from GRANDCHILD where parent_id='" + childId + "'";
- List<String> grandChildrenIds2 = createDataIterator(select, grandChildType, description, atLeast(2));
+ {
+ String childId2 = childrenIds.get(1);
+ description = "grandchild of first parent, child of " + childId2 + " child";
+ select = "select * from GRANDCHILD where parent_id='" + childId2 + "'";
+ }
+ final List<String> grandChildrenIds2 = createDataIterator(select, grandChildType, description, atLeast(2));
grandChildrenNum += grandChildrenIds2.size();
- grandChildrenIds.addAll(grandChildrenIds2);
-
+ List<String> allGrandChildrenIds = new ArrayList<>(grandChildrenIds);
+ allGrandChildrenIds.addAll(grandChildrenIds2);
+
// third children of first parent has no grand children
// parent 2 children (no grand children)
@@ -155,7 +159,14 @@ public class TestHierarchicalDocBuilder extends AbstractDataImportHandlerTestCas
int totalDocsNum = parentsNum + childrenNum + grandChildrenNum;
- runFullImport(THREE_LEVEL_HIERARCHY_CONFIG);
+ String resp = runFullImport(THREE_LEVEL_HIERARCHY_CONFIG);
+ String xpath = "//arr[@name='documents']/lst/arr[@name='id' and .='"+parentId1+"']/../"+
+ "arr[@name='_childDocuments_']/lst/arr[@name='id' and .='"+childId+"']/../"+
+ "arr[@name='_childDocuments_']/lst/arr[@name='id' and .='"+grandChildrenIds.get(0)+"']";
+ String results = TestHarness.validateXPath(resp,
+ xpath);
+ assertTrue("Debug documents does not contain child documents\n"+resp+"\n"+ xpath+
+ "\n"+results, results == null);
assertTrue("Update request processor processAdd was not called", TestUpdateRequestProcessor.processAddCalled);
assertTrue("Update request processor processCommit was not callled", TestUpdateRequestProcessor.processCommitCalled);
@@ -169,7 +180,7 @@ public class TestHierarchicalDocBuilder extends AbstractDataImportHandlerTestCas
// let's check BlockJoin
// get first parent by any grand children
- String randomGrandChildId = grandChildrenIds.get(random().nextInt(grandChildrenIds.size()));
+ String randomGrandChildId = allGrandChildrenIds.get(random().nextInt(allGrandChildrenIds.size()));
Query query = createToParentQuery(parentType, FIELD_ID, randomGrandChildId);
assertSearch(query, FIELD_ID, parentId1);