You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2013/10/28 13:53:06 UTC
svn commit: r1536341 - in /lucene/dev/trunk/solr: ./
core/src/java/org/apache/solr/update/processor/
core/src/test-files/solr/collection1/conf/
core/src/test/org/apache/solr/update/processor/
Author: yonik
Date: Mon Oct 28 12:53:05 2013
New Revision: 1536341
URL: http://svn.apache.org/r1536341
Log:
SOLR-5395: add RunAlways marker interface for update processor facctories
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorFactory.java
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-transformers.xml
lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/processor/UpdateRequestProcessorFactoryTest.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1536341&r1=1536340&r2=1536341&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Mon Oct 28 12:53:05 2013
@@ -103,6 +103,11 @@ New Features
* SOLR-5027: CollapsingQParserPlugin for high performance field collapsing on high cardinality fields.
(Joel Bernstein)
+* SOLR-5395: Added a RunAlways marker interface for UpdateRequestProcessorFactory
+ implementations indicating that they should not be removed in later stages
+ of distributed updates (usually signalled by the update.distrib parameter)
+ (yonik)
+
Bug Fixes
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java?rev=1536341&r1=1536340&r2=1536341&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorChain.java Mon Oct 28 12:53:05 2013
@@ -75,7 +75,7 @@ import java.util.ArrayList;
* <code>UpdateRequestProcessorFactory</code>. If a chain includes
* <code>RunUpdateProcessorFactory</code> but does not include a
* <code>DistributingUpdateProcessorFactory</code>, it will be added
- * automaticly by {@link #init init()}.
+ * automatically by {@link #init init()}.
* </p>
*
* @see UpdateRequestProcessorFactory
@@ -195,8 +195,8 @@ public final class UpdateRequestProcesso
if (factory instanceof DistributingUpdateProcessorFactory) {
afterDistrib = false;
}
- } else if (!(factory instanceof LogUpdateProcessorFactory)) { // TODO: use a marker interface for this?
- // skip anything that is not the log factory
+ } else if (!(factory instanceof UpdateRequestProcessorFactory.RunAlways)) {
+ // skip anything that doesn't have the marker interface
continue;
}
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorFactory.java?rev=1536341&r1=1536340&r2=1536341&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/processor/UpdateRequestProcessorFactory.java Mon Oct 28 12:53:05 2013
@@ -33,7 +33,14 @@ import org.apache.solr.util.plugin.SolrC
* @since solr 1.3
*/
public abstract class UpdateRequestProcessorFactory implements NamedListInitializedPlugin
-{
+{
+
+ /** A marker interface for UpdateRequestProcessorFactory implementations indicating that
+ * the factory should be used even if the update.distrib parameter would otherwise cause
+ * it to not be run.
+ */
+ public interface RunAlways {}
+
@Override
public void init( NamedList args )
{
Modified: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-transformers.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-transformers.xml?rev=1536341&r1=1536340&r2=1536341&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-transformers.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-transformers.xml Mon Oct 28 12:53:05 2013
@@ -62,6 +62,7 @@
<updateRequestProcessorChain name="distrib-chain-explicit">
<!-- explicit test using processors before and after distrib -->
<processor class="solr.CustomUpdateRequestProcessorFactory" />
+ <processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.DistributedUpdateProcessorFactory" />
<processor class="solr.RemoveBlankFieldUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
@@ -69,6 +70,7 @@
<updateRequestProcessorChain name="distrib-chain-implicit">
<!-- implicit test w/o distrib declared -->
<processor class="solr.CustomUpdateRequestProcessorFactory" />
+ <processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RemoveBlankFieldUpdateProcessorFactory" />
<!-- distrib should be injected here -->
<processor class="solr.RunUpdateProcessorFactory" />
@@ -76,6 +78,7 @@
<updateRequestProcessorChain name="distrib-chain-noop">
<!-- explicit test using noop distrib -->
<processor class="solr.CustomUpdateRequestProcessorFactory" />
+ <processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.NoOpDistributingUpdateProcessorFactory" />
<processor class="solr.RemoveBlankFieldUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/processor/UpdateRequestProcessorFactoryTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/processor/UpdateRequestProcessorFactoryTest.java?rev=1536341&r1=1536340&r2=1536341&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/processor/UpdateRequestProcessorFactoryTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/processor/UpdateRequestProcessorFactoryTest.java Mon Oct 28 12:53:05 2013
@@ -78,7 +78,7 @@ public class UpdateRequestProcessorFacto
assertNotNull(name, chain);
// either explicitly, or because of injection
- assertEquals(name + " chain length", 4,
+ assertEquals(name + " chain length", 5,
chain.getFactories().length);
// Custom comes first in all three of our chains
@@ -93,7 +93,20 @@ public class UpdateRequestProcessorFacto
assertFalse(name + " post distrib proc should not be a CustomUpdateRequestProcessor: "
+ proc.getClass().getName(),
proc instanceof CustomUpdateRequestProcessor);
-
+
+ int n=0;
+ boolean foundLog = false;
+ for (;;) {
+ n++;
+ if (proc instanceof LogUpdateProcessor) {
+ foundLog = true;
+ }
+ proc = proc.next;
+ if (proc == null) break;
+ }
+
+ assertTrue( n < chain.getFactories().length ); // some processors should have been dropped
+ assertTrue( foundLog ); // make sure the marker interface was successful in keeping the log processor
}