Return-Path: X-Original-To: apmail-lucene-commits-archive@www.apache.org Delivered-To: apmail-lucene-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1A3E61053F for ; Thu, 12 Sep 2013 17:47:12 +0000 (UTC) Received: (qmail 65431 invoked by uid 500); 12 Sep 2013 17:45:12 -0000 Mailing-List: contact commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@lucene.apache.org Delivered-To: mailing list commits@lucene.apache.org Received: (qmail 65099 invoked by uid 99); 12 Sep 2013 17:44:32 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Sep 2013 17:44:32 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Sep 2013 17:44:30 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8D9DE23888D7; Thu, 12 Sep 2013 17:44:10 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1522680 - in /lucene/dev/trunk/solr: core/src/java/org/apache/solr/update/ core/src/test/org/apache/solr/update/ solrj/src/java/org/apache/solr/client/solrj/util/ solrj/src/java/org/apache/solr/common/ solrj/src/java/org/apache/solr/common... Date: Thu, 12 Sep 2013 17:44:10 -0000 To: commits@lucene.apache.org From: yonik@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130912174410.8D9DE23888D7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: yonik Date: Thu Sep 12 17:44:09 2013 New Revision: 1522680 URL: http://svn.apache.org/r1522680 Log: SOLR-5148: optimization - lazy create child doc list Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java?rev=1522680&r1=1522679&r2=1522680&view=diff ============================================================================== --- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java (original) +++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java Thu Sep 12 17:44:09 2013 @@ -197,8 +197,11 @@ public class AddUpdateCommand extends Up } private void recUnwrapp(List unwrappedDocs, SolrInputDocument currentDoc) { - for (SolrInputDocument child : currentDoc.getChildDocuments()) { - recUnwrapp(unwrappedDocs, child); + List children = currentDoc.getChildDocuments(); + if (children != null) { + for (SolrInputDocument child : children) { + recUnwrapp(unwrappedDocs, child); + } } unwrappedDocs.add(currentDoc); } Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java?rev=1522680&r1=1522679&r2=1522680&view=diff ============================================================================== --- lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java (original) +++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java Thu Sep 12 17:44:09 2013 @@ -424,7 +424,8 @@ public class AddBlockUpdateTest extends assertEquals("v2", result.getFieldValue("parent_f2")); List resultChilds = result.getChildDocuments(); - assertEquals(childsNum, resultChilds.size()); + int resultChildsSize = resultChilds == null ? 0 : resultChilds.size(); + assertEquals(childsNum, resultChildsSize); for (int childIndex = 0; childIndex < childsNum; ++childIndex) { SolrInputDocument child = resultChilds.get(childIndex); @@ -433,7 +434,9 @@ public class AddBlockUpdateTest extends } List grandChilds = child.getChildDocuments(); - assertEquals(childIndex * 2, grandChilds.size()); + int grandChildsSize = grandChilds == null ? 0 : grandChilds.size(); + + assertEquals(childIndex * 2, grandChildsSize); for (int grandIndex = 0; grandIndex < childIndex * 2; ++grandIndex) { SolrInputDocument grandChild = grandChilds.get(grandIndex); assertFalse(grandChild.hasChildDocuments()); Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java?rev=1522680&r1=1522679&r2=1522680&view=diff ============================================================================== --- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java (original) +++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java Thu Sep 12 17:44:09 2013 @@ -133,9 +133,11 @@ public class ClientUtils } } } - - for (SolrInputDocument childDocument : doc.getChildDocuments()) { - writeXML(childDocument, writer); + + if (doc.hasChildDocuments()) { + for (SolrInputDocument childDocument : doc.getChildDocuments()) { + writeXML(childDocument, writer); + } } writer.write(""); Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java?rev=1522680&r1=1522679&r2=1522680&view=diff ============================================================================== --- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java (original) +++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java Thu Sep 12 17:44:09 2013 @@ -43,12 +43,10 @@ public class SolrInputDocument implement public SolrInputDocument() { _fields = new LinkedHashMap(); - _childDocuments = new ArrayList(); } public SolrInputDocument(Map fields) { _fields = fields; - _childDocuments = new ArrayList(); } /** @@ -60,9 +58,7 @@ public class SolrInputDocument implement if( _fields != null ) { _fields.clear(); } - if (_childDocuments != null) { - _childDocuments.clear(); - } + _childDocuments = null; } /////////////////////////////////////////////////////////////////// @@ -198,7 +194,9 @@ public class SolrInputDocument implement @Override public String toString() { - return "SolrInputDocument(fields: " + _fields.values() + ", childs: " + _childDocuments + ")"; + return "SolrInputDocument(fields: " + _fields.values() + + ( _childDocuments == null ? "" : (", children: " + _childDocuments) ) + + ")"; } public SolrInputDocument deepCopy() { @@ -208,11 +206,13 @@ public class SolrInputDocument implement clone._fields.put(fieldEntry.getKey(), fieldEntry.getValue().deepCopy()); } clone._documentBoost = _documentBoost; - - clone._childDocuments = new ArrayList(_childDocuments.size()); - for (SolrInputDocument child : _childDocuments) { - clone._childDocuments.add(child.deepCopy()); - } + + if (_childDocuments != null) { + clone._childDocuments = new ArrayList(_childDocuments.size()); + for (SolrInputDocument child : _childDocuments) { + clone._childDocuments.add(child.deepCopy()); + } + } return clone; } @@ -277,6 +277,9 @@ public class SolrInputDocument implement } public void addChildDocument(SolrInputDocument child) { + if (_childDocuments == null) { + _childDocuments = new ArrayList(); + } _childDocuments.add(child); } @@ -285,7 +288,8 @@ public class SolrInputDocument implement addChildDocument(child); } } - + + /** Returns the list of child documents, or null if none. */ public List getChildDocuments() { return _childDocuments; } Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java?rev=1522680&r1=1522679&r2=1522680&view=diff ============================================================================== --- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java (original) +++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java Thu Sep 12 17:44:09 2013 @@ -387,7 +387,8 @@ public class JavaBinCodec { public void writeSolrInputDocument(SolrInputDocument sdoc) throws IOException { writeTag(SOLRINPUTDOC, sdoc.size()); - writeTag(SOLRINPUTDOC_CHILDS, sdoc.getChildDocuments().size()); + List children = sdoc.getChildDocuments(); + writeTag(SOLRINPUTDOC_CHILDS, children==null ? 0 : children.size()); writeFloat(sdoc.getDocumentBoost()); for (SolrInputField inputField : sdoc.values()) { if (inputField.getBoost() != 1.0f) { @@ -396,8 +397,10 @@ public class JavaBinCodec { writeExternString(inputField.getName()); writeVal(inputField.getValue()); } - for (SolrInputDocument child : sdoc.getChildDocuments()) { - writeSolrInputDocument(child); + if (children != null) { + for (SolrInputDocument child : sdoc.getChildDocuments()) { + writeSolrInputDocument(child); + } } }