Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 9338 invoked from network); 26 Nov 2010 11:52:00 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 26 Nov 2010 11:52:00 -0000 Received: (qmail 40827 invoked by uid 500); 26 Nov 2010 11:52:00 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 40601 invoked by uid 500); 26 Nov 2010 11:51:58 -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 40592 invoked by uid 99); 26 Nov 2010 11:51:56 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 26 Nov 2010 11:51:56 +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; Fri, 26 Nov 2010 11:51:55 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 6D8F523889E1; Fri, 26 Nov 2010 11:50:24 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1039322 - in /lucene/java/branches/lucene_2_9/src: java/org/apache/lucene/index/TermVectorsReader.java java/org/apache/lucene/index/TermVectorsTermsWriter.java test/org/apache/lucene/index/TestIndexWriter.java Date: Fri, 26 Nov 2010 11:50:24 -0000 To: java-commits@lucene.apache.org From: mikemccand@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101126115024.6D8F523889E1@eris.apache.org> Author: mikemccand Date: Fri Nov 26 11:50:23 2010 New Revision: 1039322 URL: http://svn.apache.org/viewvc?rev=1039322&view=rev Log: LUCENE-2776: don't create term vectors files if no doc uses term vectors Modified: lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsReader.java lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/index/TestIndexWriter.java Modified: lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsReader.java URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsReader.java?rev=1039322&r1=1039321&r2=1039322&view=diff ============================================================================== --- lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsReader.java (original) +++ lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsReader.java Fri Nov 26 11:50:23 2010 @@ -107,8 +107,13 @@ class TermVectorsReader implements Clone // docs assert numTotalDocs >= size + docStoreOffset: "numTotalDocs=" + numTotalDocs + " size=" + size + " docStoreOffset=" + docStoreOffset; } - } else + } else { + // If all documents flushed in a segment had hit + // non-aborting exceptions, it's possible that + // FieldInfos.hasVectors returns true yet the term + // vector files don't exist. format = 0; + } this.fieldInfos = fieldInfos; success = true; Modified: lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java?rev=1039322&r1=1039321&r2=1039322&view=diff ============================================================================== --- lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java (original) +++ lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/index/TermVectorsTermsWriter.java Fri Nov 26 11:50:23 2010 @@ -53,12 +53,13 @@ final class TermVectorsTermsWriter exten synchronized void flush(Map threadsAndFields, final SegmentWriteState state) throws IOException { - if (state.numDocsInStore > 0) { - // It's possible that all documents seen in this segment - // hit non-aborting exceptions, in which case we will - // not have yet init'd the TermVectorsWriter: - initTermVectorsWriter(); - } + // NOTE: it's possible that all documents seen in this segment + // hit non-aborting exceptions, in which case we will + // not have yet init'd the TermVectorsWriter. This is + // actually OK (unlike in the stored fields case) + // because, although IieldInfos.hasVectors() will return + // true, the TermVectorsReader gracefully handles + // non-existence of the term vectors files. if (tvx != null) { Modified: lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/index/TestIndexWriter.java URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1039322&r1=1039321&r2=1039322&view=diff ============================================================================== --- lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/index/TestIndexWriter.java (original) +++ lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/index/TestIndexWriter.java Fri Nov 26 11:50:23 2010 @@ -4907,4 +4907,39 @@ public class TestIndexWriter extends Bas dir.close(); } + + public void testNoUnwantedTVFiles() throws Exception { + + Directory dir = new MockRAMDirectory(); + IndexWriter indexWriter = new IndexWriter(dir, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED); + indexWriter.setRAMBufferSizeMB(0.01); + indexWriter.setUseCompoundFile(false); + + String BIG="alskjhlaksjghlaksjfhalksvjepgjioefgjnsdfjgefgjhelkgjhqewlrkhgwlekgrhwelkgjhwelkgrhwlkejg"; + BIG=BIG+BIG+BIG+BIG; + + for (int i=0; i<2; i++) { + Document doc = new Document(); + doc.add(new Field("id", Integer.toString(i)+BIG, Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS)); + doc.add(new Field("str", Integer.toString(i)+BIG, Field.Store.YES, Field.Index.NOT_ANALYZED)); + doc.add(new Field("str2", Integer.toString(i)+BIG, Field.Store.YES, Field.Index.ANALYZED)); + doc.add(new Field("str3", Integer.toString(i)+BIG, Field.Store.YES, Field.Index.ANALYZED_NO_NORMS)); + indexWriter.addDocument(doc); + } + + indexWriter.close(); + + _TestUtil.checkIndex(dir); + + assertNoUnreferencedFiles(dir, "no tv files"); + String[] files = dir.listAll(); + for(int idx=0;idx