You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2014/03/07 04:55:06 UTC

svn commit: r1575155 - in /maven/indexer/branches/lucene-4.6/indexer-core/src: main/java/org/apache/maven/index/context/ main/java/org/apache/maven/index/packer/ main/java/org/apache/maven/index/updater/ test/java/org/apache/maven/index/

Author: olamy
Date: Fri Mar  7 03:55:06 2014
New Revision: 1575155

URL: http://svn.apache.org/r1575155
Log:
Fix field metadatacorruption on copy of lucene index

Modified:
    maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
    maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
    maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
    maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java
    maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java

Modified: maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
URL: http://svn.apache.org/viewvc/maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java?rev=1575155&r1=1575154&r2=1575155&view=diff
==============================================================================
--- maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java (original)
+++ maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java Fri Mar  7 03:55:06 2014
@@ -67,11 +67,11 @@ public class DefaultIndexingContext
 
     public static final String FLD_DESCRIPTOR = "DESCRIPTOR";
 
-    private static final String FLD_DESCRIPTOR_CONTENTS = "NexusIndex";
+    public static final String FLD_DESCRIPTOR_CONTENTS = "NexusIndex";
 
-    private static final String FLD_IDXINFO = "IDXINFO";
+    public static final String FLD_IDXINFO = "IDXINFO";
 
-    private static final String VERSION = "1.0";
+    public static final String VERSION = "1.0";
 
     private static final Term DESCRIPTOR_TERM = new Term( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS );
 

Modified: maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
URL: http://svn.apache.org/viewvc/maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java?rev=1575155&r1=1575154&r2=1575155&view=diff
==============================================================================
--- maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java (original)
+++ maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java Fri Mar  7 03:55:06 2014
@@ -26,18 +26,23 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
 import java.util.TimeZone;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
-
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.StoredField;
+import org.apache.lucene.document.StringField;
+import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.CorruptIndexException;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.MultiFields;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.store.Directory;
@@ -47,6 +52,7 @@ import org.apache.lucene.store.IndexInpu
 import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.util.Bits;
 import org.apache.maven.index.ArtifactInfo;
+import org.apache.maven.index.context.DefaultIndexingContext;
 import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.context.IndexUtils;
 import org.apache.maven.index.context.IndexingContext;
@@ -334,7 +340,22 @@ public class DefaultIndexPacker
             {
                 if ( liveDocs == null || liveDocs.get(i) )
                 {
-                    w.addDocument( updateLegacyDocument( r.document( i ), context ) );
+                    Document legacyDocument = r.document( i );
+                    Document updatedLegacyDocument = updateLegacyDocument( legacyDocument, context );
+                    
+                    //Lucene does not return metadata for stored documents, so we need to fix that
+                    for (IndexableField indexableField : updatedLegacyDocument.getFields())
+                    {
+                        if(indexableField.name().equals(DefaultIndexingContext.FLD_DESCRIPTOR))
+                        {
+                            updatedLegacyDocument = new Document();
+                            updatedLegacyDocument.add(new StringField(DefaultIndexingContext.FLD_DESCRIPTOR, DefaultIndexingContext.FLD_DESCRIPTOR_CONTENTS, Field.Store.YES));
+                            updatedLegacyDocument.add( new StringField( DefaultIndexingContext.FLD_IDXINFO, DefaultIndexingContext.VERSION + ArtifactInfo.FS + context.getRepositoryId(), Field.Store.YES) );
+                            break;
+                        }
+                    }
+                    
+                    w.addDocument( updatedLegacyDocument );
                 }
             }
 

Modified: maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
URL: http://svn.apache.org/viewvc/maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java?rev=1575155&r1=1575154&r2=1575155&view=diff
==============================================================================
--- maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java (original)
+++ maven/indexer/branches/lucene-4.6/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java Fri Mar  7 03:55:06 2014
@@ -43,10 +43,13 @@ import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
 import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.document.StringField;
 import org.apache.lucene.index.CorruptIndexException;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.MultiFields;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
@@ -54,6 +57,8 @@ import org.apache.lucene.store.IOContext
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.util.Bits;
+import org.apache.maven.index.ArtifactInfo;
+import org.apache.maven.index.context.DefaultIndexingContext;
 import org.apache.maven.index.context.DocumentFilter;
 import org.apache.maven.index.context.IndexUtils;
 import org.apache.maven.index.context.IndexingContext;
@@ -351,7 +356,21 @@ public class DefaultIndexUpdater
             {
                 if (liveDocs == null || liveDocs.get(i) )
                 {
-                    w.addDocument( IndexUtils.updateDocument( r.document( i ), context ) );
+                    Document sourceDocument = r.document( i );
+                    Document targetDocument = IndexUtils.updateDocument( sourceDocument, context );
+                    
+                    //Lucene does not return metadata for stored documents, so we need to fix that
+                    for (IndexableField indexableField : targetDocument.getFields())
+                    {
+                        if(indexableField.name().equals(DefaultIndexingContext.FLD_DESCRIPTOR))
+                        {
+                            targetDocument = new Document();
+                            targetDocument.add(new StringField(DefaultIndexingContext.FLD_DESCRIPTOR, DefaultIndexingContext.FLD_DESCRIPTOR_CONTENTS, Field.Store.YES));
+                            targetDocument.add( new StringField( DefaultIndexingContext.FLD_IDXINFO, DefaultIndexingContext.VERSION + ArtifactInfo.FS + context.getRepositoryId(), Field.Store.YES) );
+                            break;
+                        }
+                    }
+                    w.addDocument( targetDocument );
                 }
             }
 

Modified: maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java
URL: http://svn.apache.org/viewvc/maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java?rev=1575155&r1=1575154&r2=1575155&view=diff
==============================================================================
--- maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java (original)
+++ maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/AbstractNexusIndexerTest.java Fri Mar  7 03:55:06 2014
@@ -19,13 +19,15 @@ package org.apache.maven.index;
  * under the License.
  */
 
+import java.io.File;
 import java.io.IOException;
 import java.util.Collection;
-
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.PrefixQuery;
 import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.RAMDirectory;
+import org.apache.lucene.store.SimpleFSDirectory;
 import org.apache.maven.index.ArtifactInfo;
 import org.apache.maven.index.FlatSearchRequest;
 import org.apache.maven.index.FlatSearchResponse;
@@ -45,6 +47,7 @@ public abstract class AbstractNexusIndex
     protected void setUp()
         throws Exception
     {
+//        indexDir = new SimpleFSDirectory(new File("/tmp/nexus-test"));
         super.setUp();
         // FileUtils.deleteDirectory( indexDir );
         nexusIndexer = lookup( NexusIndexer.class );

Modified: maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
URL: http://svn.apache.org/viewvc/maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java?rev=1575155&r1=1575154&r2=1575155&view=diff
==============================================================================
--- maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java (original)
+++ maven/indexer/branches/lucene-4.6/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java Fri Mar  7 03:55:06 2014
@@ -511,7 +511,6 @@ public class FullIndexNexusIndexerTest
             }
         }
         
-        assertThat(response.getReturnedHitsCount(), is(5));
         assertThat(response.getTotalHitsCount(), is(5));
 
         assertEquals( "found in jcl104-over-slf4j and commons-logging", 5, response.getTotalHits() );