[ 
https://issues.apache.org/jira/browse/SOLR-9661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15625220#comment-15625220
 ] 

Dennis Gove commented on SOLR-9661:
-----------------------------------

I've thrown together a simple test that shows this exception.

{code}
@Test
public void replaceToExplanation() throws Exception{
  StreamFactory factory = new StreamFactory().withFunctionName("replace", 
ReplaceOperation.class);
  StreamOperation operation = new ReplaceOperation("fieldA", 
StreamExpressionParser.parse("replace(null, withValue=foo)"), factory);

  StreamExpressionParameter expression = operation.toExpression(factory);
  Explanation explanation = operation.toExplanation(factory);
}
{code}

Obviously, the toExplanation(...) line throws an exception but so does the 
toExpression(...) line. I'm not sure why this hasn't come up before as 
toExpression is used extensively, particularly by the parallel stream.

> Explain of select that uses replace() throws exception
> ------------------------------------------------------
>
>                 Key: SOLR-9661
>                 URL: https://issues.apache.org/jira/browse/SOLR-9661
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Gus Heck
>
> {code}
> select(
>    search(test, q="table:article ", fl="edge_id", sort="edge_id desc", 
> rows=10),
>    edge_id,
>    replace(type,null, withValue="1")
> )
> {code}
> as a streaming expression produced this stack trace:
> {code}
> ERROR (qtp1989972246-17) [c:test s:shard1 r:core_node1 
> x:test_shard1_replica1] o.a.s.s.HttpSolrCall null:java.io.IOException: Unable 
> to find function name for class 
> 'org.apache.solr.client.solrj.io.ops.ReplaceWithValueOperation'
>       at 
> org.apache.solr.client.solrj.io.stream.expr.StreamFactory.getFunctionName(StreamFactory.java:335)
>       at 
> org.apache.solr.client.solrj.io.ops.ReplaceWithValueOperation.toExpression(ReplaceWithValueOperation.java:108)
>       at 
> org.apache.solr.client.solrj.io.ops.ReplaceOperation.toExpression(ReplaceOperation.java:81)
>       at 
> org.apache.solr.client.solrj.io.stream.SelectStream.toExpression(SelectStream.java:148)
>       at 
> org.apache.solr.client.solrj.io.stream.SelectStream.toExplanation(SelectStream.java:164)
>       at 
> org.apache.solr.client.solrj.io.stream.PushBackStream.toExplanation(PushBackStream.java:56)
>       at 
> org.apache.solr.client.solrj.io.stream.ComplementStream.toExplanation(ComplementStream.java:132)
>       at 
> org.apache.solr.client.solrj.io.stream.PushBackStream.toExplanation(PushBackStream.java:56)
>       at 
> org.apache.solr.client.solrj.io.stream.ComplementStream.toExplanation(ComplementStream.java:132)
>       at 
> org.apache.solr.client.solrj.io.stream.RankStream.toExplanation(RankStream.java:142)
>       at 
> org.apache.solr.client.solrj.io.stream.PushBackStream.toExplanation(PushBackStream.java:56)
>       at 
> org.apache.solr.client.solrj.io.stream.MergeStream.toExplanation(MergeStream.java:136)
>       at 
> org.apache.solr.client.solrj.io.stream.HashJoinStream.toExplanation(HashJoinStream.java:174)
>       at 
> org.apache.solr.client.solrj.io.stream.SelectStream.toExplanation(SelectStream.java:159)
>       at 
> org.apache.solr.client.solrj.io.stream.RankStream.toExplanation(RankStream.java:142)
>       at 
> org.apache.solr.client.solrj.io.stream.SelectStream.toExplanation(SelectStream.java:159)
>       at 
> org.apache.solr.handler.StreamHandler.handleRequestBody(StreamHandler.java:205)
>       at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:154)
>       at org.apache.solr.core.SolrCore.execute(SolrCore.java:2089)
>       at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:652)
>       at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:459)
>       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:1668)
>       at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
>       at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>       at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>       at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
>       at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1160)
>       at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
>       at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>       at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1092)
>       at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>       at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
>       at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119)
>       at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
>       at org.eclipse.jetty.server.Server.handle(Server.java:518)
>       at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)
>       at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244)
>       at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
>       at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
>       at 
> org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
>       at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:246)
>       at 
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:156)
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
>       at java.lang.Thread.run(Thread.java:745)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to