FAQ
Hi all,

I’m in a bit of a cul de sac with an issue, hope you can help.

I am creating a custom UpdateRequestProcessor. The Solr documentation details that I need to write a factory class subclassing UpdateRequestProcessorFactory and this should return an instance of my class that subclasses UpdateRequestProcessor.

I have done this, and I have created a JAR.

I have deployed the JAR into Tomcat’s lib folder where Solr is running.

I have modified the solrconfig to include my class correctly.

On startup Solr finds my class but does not believe it conforms to being a UpdateRequestProcessorFactory.

SEVERE: org.apache.solr.common.SolrException: Error Instantiating UpdateRequestProcessorFactory, com.acme.solr.update.processor.URLRewriteUpdateRequestProcessorFactory is not a org.apache.solr.update.processor.UpdateRequestProcessorFactory
  at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:421)

Things I have tried:

- Ensured that I am compiling my JAR with the exact JDK that is running Solr.
- Downloaded Solr 3.6.2 and copied one of the Solr built-in processors, renamed it, compiled it and tried to use it - SAME issue.
- Created a test that uses the same code as the Solr code that is failing (namely, isAssignableFrom):

             Class clazz = Class.forName("com.acme.solr.update.processor.URLRewriteUpdateRequestProcessorFactory");
             boolean isA = UpdateRequestProcessorFactory.class.isAssignableFrom(clazz);
             System.out.println(isA);

Print’s “true” - i.e. it’s perfectly OK!

I include my simple processor here:

package com.acme.solr.update.processor;

public class URLRewriteUpdateRequestProcessorFactory extends UpdateRequestProcessorFactory
{
     @Override
     public UpdateRequestProcessor getInstance(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next) {
         return new URLRewriteProcessor(next);
     }
}

class URLRewriteProcessor extends UpdateRequestProcessor
{
     public URLRewriteProcessor(UpdateRequestProcessor next)
     {
         super(next);
     }

     @Override
     public void processAdd(AddUpdateCommand cmd) throws IOException
     {
         SolrInputDocument doc = cmd.getSolrInputDocument();
         doc.setField("foo", "bar");

         super.processAdd(cmd);
     }
}

At this point I am at a loss and would appreciate any assistance or ideas to try.

Cheers

Search Discussions

Discussion Posts

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 1 of 3 | next ›
Discussion Overview
groupsolr-user @
categorieslucene
postedSep 19, '14 at 7:44p
activeSep 20, '14 at 10:54a
posts3
users2
websitelucene.apache.org...

People

Translate

site design / logo © 2018 Grokbase