Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 90545 invoked from network); 22 Feb 2010 17:28:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 22 Feb 2010 17:28:50 -0000 Received: (qmail 87181 invoked by uid 500); 22 Feb 2010 17:28:50 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 87116 invoked by uid 500); 22 Feb 2010 17:28:50 -0000 Mailing-List: contact java-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-commits@lucene.apache.org Received: (qmail 87107 invoked by uid 99); 22 Feb 2010 17:28:50 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Feb 2010 17:28:50 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.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; Mon, 22 Feb 2010 17:28:48 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 1AD5323889B9; Mon, 22 Feb 2010 17:28:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r912672 - /lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java Date: Mon, 22 Feb 2010 17:28:27 -0000 To: java-commits@lucene.apache.org From: mikemccand@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100222172827.1AD5323889B9@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mikemccand Date: Mon Feb 22 17:28:26 2010 New Revision: 912672 URL: http://svn.apache.org/viewvc?rev=912672&view=rev Log: LUCENE-2275: don't get TermDocs/IndexSearcher when applying deletes unless we actually have terms & queries to delete Modified: lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java Modified: lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java?rev=912672&r1=912671&r2=912672&view=diff ============================================================================== --- lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java (original) +++ lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java Mon Feb 22 17:28:26 2010 @@ -986,25 +986,27 @@ assert checkDeleteTerm(null); // Delete by term - TermDocs docs = reader.termDocs(); - try { - for (Entry entry: deletesFlushed.terms.entrySet()) { - Term term = entry.getKey(); - // LUCENE-2086: we should be iterating a TreeMap, - // here, so terms better be in order: - assert checkDeleteTerm(term); - docs.seek(term); - int limit = entry.getValue().getNum(); - while (docs.next()) { - int docID = docs.doc(); - if (docIDStart+docID >= limit) - break; - reader.deleteDocument(docID); - any = true; + if (deletesFlushed.terms.size() > 0) { + TermDocs docs = reader.termDocs(); + try { + for (Entry entry: deletesFlushed.terms.entrySet()) { + Term term = entry.getKey(); + // LUCENE-2086: we should be iterating a TreeMap, + // here, so terms better be in order: + assert checkDeleteTerm(term); + docs.seek(term); + int limit = entry.getValue().getNum(); + while (docs.next()) { + int docID = docs.doc(); + if (docIDStart+docID >= limit) + break; + reader.deleteDocument(docID); + any = true; + } } + } finally { + docs.close(); } - } finally { - docs.close(); } // Delete by docID @@ -1017,23 +1019,28 @@ } // Delete by query - IndexSearcher searcher = new IndexSearcher(reader); - for (Entry entry : deletesFlushed.queries.entrySet()) { - Query query = entry.getKey(); - int limit = entry.getValue().intValue(); - Weight weight = query.weight(searcher); - Scorer scorer = weight.scorer(reader, true, false); - if (scorer != null) { - while(true) { - int doc = scorer.nextDoc(); - if (((long) docIDStart) + doc >= limit) - break; - reader.deleteDocument(doc); - any = true; + if (deletesFlushed.queries.size() > 0) { + IndexSearcher searcher = new IndexSearcher(reader); + try { + for (Entry entry : deletesFlushed.queries.entrySet()) { + Query query = entry.getKey(); + int limit = entry.getValue().intValue(); + Weight weight = query.weight(searcher); + Scorer scorer = weight.scorer(reader, true, false); + if (scorer != null) { + while(true) { + int doc = scorer.nextDoc(); + if (((long) docIDStart) + doc >= limit) + break; + reader.deleteDocument(doc); + any = true; + } + } } + } finally { + searcher.close(); } } - searcher.close(); return any; }