Hi all,

I've got a ManifoldCF user who is posting content to Solr using the MCF
Solr output connector.  This connector uses SolrJ under the covers -- a
fairly recent version -- but also has overridden some classes to insure
that multipart form posts will be used for most content.

The problem is that, for a specific document, the user is getting an
ArrayIndexOutOfBounds exception in Solr, as follows:

>>>>>>
2017-06-14T08:25:16,546 - ERROR [qtp862890654-69725:SolrException@148] -
{collection=c:documentum_manifoldcf_stg,
core=x:documentum_manifoldcf_stg_shard1_replica1,
node_name=n:**********:8983_solr, replica=r:core_node1, shard=s:shard1} -
java.lang.StringIndexOutOfBoundsException: String index out of range: -296
        at java.lang.String.substring(String.java:1911)
        at
org.apache.solr.request.macro.MacroExpander._expand(MacroExpander.java:143)
        at
org.apache.solr.request.macro.MacroExpander.expand(MacroExpander.java:93)
        at
org.apache.solr.request.macro.MacroExpander.expand(MacroExpander.java:59)
        at
org.apache.solr.request.macro.MacroExpander.expand(MacroExpander.java:45)
        at
org.apache.solr.request.json.RequestUtil.processParams(RequestUtil.java:157)
        at
org.apache.solr.util.SolrPluginUtils.setDefaults(SolrPluginUtils.java:172)
        at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:152)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:2102)
        at
org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654)
        at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:460)
        at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:257)
        at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:208)
        at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
        at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
        at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
        at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
        at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:499)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
        at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
        at java.lang.Thread.run(Thread.java:745)
<<<<<<

It looks worrisome to me that there's now possibly some kind of "macro
expansion" that is being triggered within parameters being sent to Solr.
Can anyone tell me either how to (a) disable this feature, or (b) how the
MCF Solr output connector should escape parameters being posted so that
Solr does not attempt any macro expansion?  If the latter, I also need to
know when this feature appeared, since obviously whether or not to do the
escaping will depend on the precise version of the Solr instance involved.

I'm also quite concerned that considerations of backwards compatibility may
have been lost at some point with Solr, since heretofore I could count on
older versions of SolrJ working with newer versions of Solr.  Please
clarify what the current policy is....


Thanks,
Karl

Reply via email to