Class TolerantUpdateProcessorFactory
- java.lang.Object
-
- org.apache.solr.update.processor.UpdateRequestProcessorFactory
-
- org.apache.solr.update.processor.TolerantUpdateProcessorFactory
-
- All Implemented Interfaces:
UpdateRequestProcessorFactory.RunAlways
,NamedListInitializedPlugin
,SolrCoreAware
public class TolerantUpdateProcessorFactory extends UpdateRequestProcessorFactory implements SolrCoreAware, UpdateRequestProcessorFactory.RunAlways
Suppresses errors for individual add/delete commands within a single request. Instead of failing on the first error, at mostmaxErrors
errors (or unlimited if-1==maxErrors
) are logged and recorded the batch continues. The client will receive astatus==200
response, which includes a list of errors that were tolerated.If more then
maxErrors
occur, the first exception recorded will be re-thrown, Solr will respond withstatus==5xx
orstatus==4xx
(depending on the underlying exceptions) and it won't finish processing any more updates in the request. (ie: subsequent update commands in the request will not be processed even if they are valid).maxErrors
is an int value that can be specified in the configuration and/or overridden per request. If unset, it will default toInteger.MAX_VALUE
. Specifying an explicit value of-1
is supported as shorthand forInteger.MAX_VALUE
, all other negative integer values are not supported.An example configuration would be:
<updateRequestProcessorChain name="tolerant-chain"> <processor class="solr.TolerantUpdateProcessorFactory"> <int name="maxErrors">10</int> </processor> <processor class="solr.RunUpdateProcessorFactory" /> </updateRequestProcessorChain>
The
maxErrors
parameter in the above chain could be overwritten per request, for example:curl http://localhost:8983/update?update.chain=tolerant-chain&maxErrors=100 -H "Content-Type: text/xml" -d @myfile.xml
NOTE: The behavior of this UpdateProcessofFactory in conjunction with indexing operations while a Shard Split is actively in progress is not well defined (or sufficiently tested). Users of this update processor are encouraged to either disable it, or pause updates, while any shard splitting is in progress (see SOLR-8881 for more details.)
- Since:
- 6.1.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.update.processor.UpdateRequestProcessorFactory
UpdateRequestProcessorFactory.RunAlways
-
-
Constructor Summary
Constructors Constructor Description TolerantUpdateProcessorFactory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description UpdateRequestProcessor
getInstance(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next)
void
inform(SolrCore core)
void
init(org.apache.solr.common.util.NamedList<?> args)
init
will be called just once, immediately after creation.
-
-
-
Method Detail
-
init
public void init(org.apache.solr.common.util.NamedList<?> args)
Description copied from interface:NamedListInitializedPlugin
init
will be called just once, immediately after creation.Source of the initialization arguments will typically be solrconfig.xml, but will ultimately depends on the plugin itself
- Specified by:
init
in interfaceNamedListInitializedPlugin
- Parameters:
args
- non-null list of initialization parameters (may be empty)
-
inform
public void inform(SolrCore core)
- Specified by:
inform
in interfaceSolrCoreAware
-
getInstance
public UpdateRequestProcessor getInstance(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next)
- Specified by:
getInstance
in classUpdateRequestProcessorFactory
-
-