You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rj...@apache.org on 2014/04/22 21:45:59 UTC

svn commit: r1589272 - in /lucene/dev/trunk/solr: ./ core/src/java/org/apache/solr/update/ core/src/test-files/solr/collection1/conf/ core/src/test/org/apache/solr/update/ example/solr/collection1/conf/

Author: rjernst
Date: Tue Apr 22 19:45:58 2014
New Revision: 1589272

URL: http://svn.apache.org/r1589272
Log:
SOLR-5999: Add checkIntegrityAtMerge support to solrconfig.xml

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java
    lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig.xml
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java
    lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1589272&r1=1589271&r2=1589272&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Tue Apr 22 19:45:58 2014
@@ -101,6 +101,12 @@ Upgrading from Solr 4.8
 Detailed Change List
 ----------------------
 
+New Features
+----------------------
+
+* SOLR-5999: Add checkIntegrityAtMerge support to solrconfig.xml.
+  (Varun Thacker via Ryan Ernst)
+
 Bug Fixes
 ----------------------
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java?rev=1589272&r1=1589271&r2=1589272&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java Tue Apr 22 19:45:58 2014
@@ -78,6 +78,8 @@ public class SolrIndexConfig {
   public final static String LOCK_TYPE_SINGLE = "single";
   public final static String LOCK_TYPE_NONE   = "none";
 
+  public final boolean checkIntegrityAtMerge;
+
   /**
    * Internal constructor for setting defaults based on Lucene Version
    */
@@ -96,6 +98,7 @@ public class SolrIndexConfig {
     mergeSchedulerInfo = null;
     defaultMergePolicyClassName = TieredMergePolicy.class.getName();
     mergedSegmentWarmerInfo = null;
+    checkIntegrityAtMerge = false;
   }
   
   /**
@@ -167,6 +170,8 @@ public class SolrIndexConfig {
     if (mergedSegmentWarmerInfo != null && solrConfig.nrtMode == false) {
       throw new IllegalArgumentException("Supplying a mergedSegmentWarmer will do nothing since nrtMode is false");
     }
+
+    checkIntegrityAtMerge = solrConfig.getBool(prefix + "/checkIntegrityAtMerge", def.checkIntegrityAtMerge);
   }
 
   /*
@@ -227,6 +232,8 @@ public class SolrIndexConfig {
       iwc.setMergedSegmentWarmer(warmer);
     }
 
+    iwc.setCheckIntegrityAtMerge(checkIntegrityAtMerge);
+
     return iwc;
   }
 

Modified: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig.xml?rev=1589272&r1=1589271&r2=1589272&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig.xml Tue Apr 22 19:45:58 2014
@@ -26,5 +26,6 @@
     <maxIndexingThreads>123</maxIndexingThreads>
     <infoStream>true</infoStream>
     <mergePolicy class="org.apache.solr.util.RandomMergePolicy" />
+    <checkIntegrityAtMerge>true</checkIntegrityAtMerge>
   </indexConfig>
 </config>

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java?rev=1589272&r1=1589271&r2=1589272&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java Tue Apr 22 19:45:58 2014
@@ -17,19 +17,21 @@ package org.apache.solr.update;
  * limitations under the License.
  */
 
-import java.io.File;
-
-import org.apache.solr.core.TestMergePolicyConfig;
-
+import org.apache.lucene.index.ConcurrentMergeScheduler;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.SimpleMergedSegmentWarmer;
 import org.apache.lucene.index.TieredMergePolicy;
-import org.apache.lucene.index.ConcurrentMergeScheduler;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.core.SolrConfig;
+import org.apache.solr.core.TestMergePolicyConfig;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.IndexSchemaFactory;
 import org.junit.Test;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.IOException;
 
 /**
  * Testcase for {@link SolrIndexConfig}
@@ -75,7 +77,19 @@ public class SolrIndexConfigTest extends
     assertEquals("ms.maxThreadCount", 42, ms.getMaxThreadCount());
 
   }
-  
+
+  @Test
+  public void testCheckIntegrityAtMerge() throws Exception {
+    SolrConfig solrConfig = new SolrConfig("solr" + File.separator
+        + "collection1", "solrconfig-indexconfig.xml", null);
+    SolrIndexConfig solrIndexConfig = new SolrIndexConfig(solrConfig, null, null);
+    assertNotNull(solrIndexConfig.checkIntegrityAtMerge);
+    assertTrue(solrIndexConfig.checkIntegrityAtMerge);
+    IndexSchema indexSchema = IndexSchemaFactory.buildIndexSchema("schema.xml", solrConfig);
+    IndexWriterConfig iwc = solrIndexConfig.toIndexWriterConfig(indexSchema);
+    assertTrue(iwc.getCheckIntegrityAtMerge());
+  }
+
   public void testMergedSegmentWarmerIndexConfigCreation() throws Exception {
     SolrConfig solrConfig = new SolrConfig("solr" + File.separator
         + "collection1", "solrconfig-warmer.xml", null);

Modified: lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml?rev=1589272&r1=1589271&r2=1589272&view=diff
==============================================================================
--- lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml (original)
+++ lucene/dev/trunk/solr/example/solr/collection1/conf/solrconfig.xml Tue Apr 22 19:45:58 2014
@@ -323,6 +323,13 @@
          this is enabled here, and controlled through log4j.properties.
       -->
      <infoStream>true</infoStream>
+    
+    <!--
+        Use true to enable this safety check, which can help
+        reduce the risk of propagating index corruption from older segments 
+        into new ones, at the expense of slower merging.
+    -->
+     <checkIntegrityAtMerge>false</checkIntegrityAtMerge>
   </indexConfig>