You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2013/08/28 13:20:56 UTC
svn commit: r1518161 - in /lucene/dev/trunk/solr: ./
contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/
contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/
Author: shalin
Date: Wed Aug 28 11:20:56 2013
New Revision: 1518161
URL: http://svn.apache.org/r1518161
Log:
SOLR-5190: SolrEntityProcessor substitutes variables only once in child entities
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SolrEntityProcessor.java
lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1518161&r1=1518160&r2=1518161&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Wed Aug 28 11:20:56 2013
@@ -155,6 +155,9 @@ Bug Fixes
* SOLR-5112: Show full message in Admin UI Logging View (Matthew Keeney via
steffkes)
+* SOLR-5190: SolrEntityProcessor substitutes variables only once in child entities
+ (Harsh Chawla, shalin)
+
Optimizations
----------------------
Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SolrEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SolrEntityProcessor.java?rev=1518161&r1=1518160&r2=1518161&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SolrEntityProcessor.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SolrEntityProcessor.java Wed Aug 28 11:20:56 2013
@@ -71,8 +71,6 @@ public class SolrEntityProcessor extends
private String[] fields;
private String requestHandler;// 'qt' param
private int timeout = TIMEOUT_SECS;
-
- private boolean initDone = false;
/**
* Factory method that returns a {@link HttpClient} instance used for interfacing with a source Solr service.
@@ -122,28 +120,22 @@ public class SolrEntityProcessor extends
* external synchronization.
*/
private void buildIterator() {
- if (rowIterator == null) {
- // We could use an AtomicBoolean but there's no need since this method
- // would require anyway external synchronization
- if (!initDone) {
- initDone = true;
- SolrDocumentList solrDocumentList = doQuery(0);
+ if (rowIterator != null) {
+ SolrDocumentListIterator documentListIterator = (SolrDocumentListIterator) rowIterator;
+ if (!documentListIterator.hasNext() && documentListIterator.hasMoreRows()) {
+ SolrDocumentList solrDocumentList = doQuery(documentListIterator
+ .getStart() + documentListIterator.getSize());
if (solrDocumentList != null) {
rowIterator = new SolrDocumentListIterator(solrDocumentList);
}
}
- return;
- }
-
- SolrDocumentListIterator documentListIterator = (SolrDocumentListIterator) rowIterator;
- if (!documentListIterator.hasNext() && documentListIterator.hasMoreRows()) {
- SolrDocumentList solrDocumentList = doQuery(documentListIterator
- .getStart() + documentListIterator.getSize());
+ } else {
+ SolrDocumentList solrDocumentList = doQuery(0);
if (solrDocumentList != null) {
rowIterator = new SolrDocumentListIterator(solrDocumentList);
}
+ return;
}
-
}
protected SolrDocumentList doQuery(int start) {
Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java?rev=1518161&r1=1518160&r2=1518161&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java Wed Aug 28 11:20:56 2013
@@ -62,7 +62,7 @@ public class TestSolrEntityProcessorEndT
dbDoc.put("dbid_s", "1");
dbDoc.put("dbdesc_s", "DbDescription");
DB_DOCS.add(dbDoc);
-
+
Map<String,Object> solrDoc = new HashMap<String,Object>();
solrDoc.put("id", "1");
solrDoc.put("desc", "SolrDescription");
@@ -202,8 +202,19 @@ public class TestSolrEntityProcessorEndT
assertQ(req("*:*"), "//result[@numFound='0']");
try {
- MockDataSource.setIterator("select * from x", DB_DOCS.iterator());
- addDocumentsToSolr(SOLR_DOCS);
+ List<Map<String,Object>> DOCS = new ArrayList<Map<String,Object>>(DB_DOCS);
+ Map<String, Object> doc = new HashMap<String, Object>();
+ doc.put("dbid_s", "2");
+ doc.put("dbdesc_s", "DbDescription2");
+ DOCS.add(doc);
+ MockDataSource.setIterator("select * from x", DOCS.iterator());
+
+ DOCS = new ArrayList<Map<String,Object>>(SOLR_DOCS);
+ Map<String,Object> solrDoc = new HashMap<String,Object>();
+ solrDoc.put("id", "2");
+ solrDoc.put("desc", "SolrDescription2");
+ DOCS.add(solrDoc);
+ addDocumentsToSolr(DOCS);
runFullImport(getDihConfigTagsInnerEntity());
} catch (Exception e) {
LOG.error(e.getMessage(), e);
@@ -212,12 +223,15 @@ public class TestSolrEntityProcessorEndT
MockDataSource.clearCache();
}
- assertQ(req("*:*"), "//result[@numFound='1']");
+ assertQ(req("*:*"), "//result[@numFound='2']");
assertQ(req("id:1"), "//result/doc/str[@name='id'][.='1']",
"//result/doc/str[@name='dbdesc_s'][.='DbDescription']",
"//result/doc/str[@name='dbid_s'][.='1']",
"//result/doc/arr[@name='desc'][.='SolrDescription']");
-
+ assertQ(req("id:2"), "//result/doc/str[@name='id'][.='2']",
+ "//result/doc/str[@name='dbdesc_s'][.='DbDescription2']",
+ "//result/doc/str[@name='dbid_s'][.='2']",
+ "//result/doc/arr[@name='desc'][.='SolrDescription2']");
}
public void testFullImportWrongSolrUrl() {