Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 10369 invoked from network); 16 Dec 2009 18:23:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 16 Dec 2009 18:23:50 -0000 Received: (qmail 94107 invoked by uid 500); 16 Dec 2009 18:23:50 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 94025 invoked by uid 500); 16 Dec 2009 18:23: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 94016 invoked by uid 99); 16 Dec 2009 18:23:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 16 Dec 2009 18:23:49 +0000 X-ASF-Spam-Status: No, hits=-2.6 required=5.0 tests=AWL,BAYES_00 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; Wed, 16 Dec 2009 18:23:45 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4217F238897F; Wed, 16 Dec 2009 18:23:25 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r891363 - in /lucene/java/trunk: CHANGES.txt src/java/org/apache/lucene/index/IndexWriter.java src/test/org/apache/lucene/index/TestIndexWriterReader.java Date: Wed, 16 Dec 2009 18:23:25 -0000 To: java-commits@lucene.apache.org From: mikemccand@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20091216182325.4217F238897F@eris.apache.org> Author: mikemccand Date: Wed Dec 16 18:23:24 2009 New Revision: 891363 URL: http://svn.apache.org/viewvc?rev=891363&view=rev Log: LUCENE-2158: don't lose deletions during NRT reopen at high indexing rates Modified: lucene/java/trunk/CHANGES.txt lucene/java/trunk/src/java/org/apache/lucene/index/IndexWriter.java lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriterReader.java Modified: lucene/java/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=891363&r1=891362&r2=891363&view=diff ============================================================================== --- lucene/java/trunk/CHANGES.txt (original) +++ lucene/java/trunk/CHANGES.txt Wed Dec 16 18:23:24 2009 @@ -59,6 +59,9 @@ * LUCENE-2104: NativeFSLock.release() would silently fail if the lock is held by another thread/process. (Shai Erera via Uwe Schindler) + +* LUCENE-2158: At high indexing rates, NRT reader could temporarily + lose deletions. (Mike McCandless) New features Modified: lucene/java/trunk/src/java/org/apache/lucene/index/IndexWriter.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/IndexWriter.java?rev=891363&r1=891362&r2=891363&view=diff ============================================================================== --- lucene/java/trunk/src/java/org/apache/lucene/index/IndexWriter.java (original) +++ lucene/java/trunk/src/java/org/apache/lucene/index/IndexWriter.java Wed Dec 16 18:23:24 2009 @@ -398,12 +398,13 @@ // this method is called: poolReaders = true; - flush(true, true, true); + flush(true, true, false); // Prevent segmentInfos from changing while opening the // reader; in theory we could do similar retry logic, // just like we do when loading segments_N synchronized(this) { + applyDeletes(); return new ReadOnlyDirectoryReader(this, segmentInfos, termInfosIndexDivisor); } } @@ -3653,7 +3654,6 @@ } if (flushDeletes) { - flushDeletesCount++; applyDeletes(); } @@ -4422,6 +4422,7 @@ // Apply buffered deletes to all segments. private final synchronized boolean applyDeletes() throws CorruptIndexException, IOException { assert testPoint("startApplyDeletes"); + flushDeletesCount++; SegmentInfos rollback = (SegmentInfos) segmentInfos.clone(); boolean success = false; boolean changed; Modified: lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriterReader.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriterReader.java?rev=891363&r1=891362&r2=891363&view=diff ============================================================================== --- lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriterReader.java (original) +++ lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriterReader.java Wed Dec 16 18:23:24 2009 @@ -866,4 +866,34 @@ r.close(); dir.close(); } + + public void testDeletesNumDocs() throws Throwable { + Directory dir = new MockRAMDirectory(); + final IndexWriter w = new IndexWriter(dir, new WhitespaceAnalyzer(), + IndexWriter.MaxFieldLength.LIMITED); + Document doc = new Document(); + doc.add(new Field("field", "a b c", Field.Store.NO, Field.Index.ANALYZED)); + Field id = new Field("id", "", Field.Store.NO, Field.Index.NOT_ANALYZED); + doc.add(id); + id.setValue("0"); + w.addDocument(doc); + id.setValue("1"); + w.addDocument(doc); + IndexReader r = w.getReader(); + assertEquals(2, r.numDocs()); + r.close(); + + w.deleteDocuments(new Term("id", "0")); + r = w.getReader(); + assertEquals(1, r.numDocs()); + r.close(); + + w.deleteDocuments(new Term("id", "1")); + r = w.getReader(); + assertEquals(0, r.numDocs()); + r.close(); + + w.close(); + dir.close(); + } }