[ https://issues.apache.org/jira/browse/SOLR-16567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17649593#comment-17649593 ]
ASF subversion and git services commented on SOLR-16567: -------------------------------------------------------- Commit e683af1c7bdece1d7100852323c0a32b12bfd566 in solr's branch refs/heads/jira/SOLR-16567 from Elia Porciani [ https://gitbox.apache.org/repos/asf?p=solr.git;h=e683af1c7bd ] SOLR-16567: KnnQueryParser support for both pre-filters and post-filters(cost>0) > java.lang.StackOverflowError when combining KnnQParser and > FunctionRangeQParser > ------------------------------------------------------------------------------- > > Key: SOLR-16567 > URL: https://issues.apache.org/jira/browse/SOLR-16567 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: query > Affects Versions: 9.1 > Environment: Solr Cloud with `solr:9.1` Docker image > Reporter: Gabriel Magno > Priority: Major > Attachments: create_example-solr_9_0.sh, create_example-solr_9_1.sh, > error_full.txt, response-error.json, run_query.sh > > Time Spent: 40m > Remaining Estimate: 0h > > Hello there! > I had a Solr 9.0 cluster running, using the new Dense Vector feature. > Recently I have migrated to Solr 9.1. Most of the things are working fine, > except for a special case I have here. > *Error Description* > The problem happens when I try making an Edismax query with a KNN sub-query > and a Function Range filter. For example, I try making this query. > * defType=edismax > * df=name > * q=the > * similarity_vector=\{!knn f=vector topK=10}[1.1,2.2,3.3,4.4] > * {!frange l=0.99}$similarity_vector > In other words, I want all the documents matching the term "the" in the > "name" field, and I filter to return only documents having a vector > similarity of at least 0.99. This query was working fine on Solr 9.0, but on > Solr 9.1, I get his error: > > {code:java} > java.lang.RuntimeException: java.lang.StackOverflowError at > org.apache.solr.servlet.HttpSolrCall.sendError(HttpSolrCall.java:840) at > org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:641) at > org.apache.solr.servlet.SolrDispatchFilter.dispatch(SolrDispatchFilter.java:250) > at > org.apache.solr.servlet.SolrDispatchFilter.lambda/usr/bin/zsh(SolrDispatchFilter.java:218) > at > org.apache.solr.servlet.ServletUtils.traceHttpRequestExecution2(ServletUtils.java:257) > at > org.apache.solr.servlet.ServletUtils.rateLimitRequest(ServletUtils.java:227) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:213) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:195) > at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) > ... (manually supressed for brevity) at > java.base/java.lang.Thread.run(Unknown Source)Caused by: > java.lang.StackOverflowError at > org.apache.solr.search.StrParser.getId(StrParser.java:172) at > org.apache.solr.search.StrParser.getId(StrParser.java:168) at > org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:100) > at > org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:65) > at org.apache.solr.search.QParser.getParser(QParser.java:364) at > org.apache.solr.search.QParser.getParser(QParser.java:334) at > org.apache.solr.search.QParser.getParser(QParser.java:321) at > org.apache.solr.search.QueryUtils.parseFilterQueries(QueryUtils.java:244) > at > org.apache.solr.search.neural.KnnQParser.getFilterQuery(KnnQParser.java:93) > at org.apache.solr.search.neural.KnnQParser.parse(KnnQParser.java:83) at > org.apache.solr.search.QParser.getQuery(QParser.java:188) at > org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:384) > at org.apache.solr.search.FunctionQParser.parse(FunctionQParser.java:94) > at org.apache.solr.search.QParser.getQuery(QParser.java:188) at > org.apache.solr.search.FunctionRangeQParserPlugin.parse(FunctionRangeQParserPlugin.java:53) > at org.apache.solr.search.QParser.getQuery(QParser.java:188) at > org.apache.solr.search.QueryUtils.parseFilterQueries(QueryUtils.java:246) > at > org.apache.solr.search.neural.KnnQParser.getFilterQuery(KnnQParser.java:93) > at org.apache.solr.search.neural.KnnQParser.parse(KnnQParser.java:83) at > org.apache.solr.search.QParser.getQuery(QParser.java:188) at > org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:384) > at org.apache.solr.search.FunctionQParser.parse(FunctionQParser.java:94) > at org.apache.solr.search.QParser.getQuery(QParser.java:188) at > org.apache.solr.search.FunctionRangeQParserPlugin.parse(FunctionRangeQParserPlugin.java:53) > at org.apache.solr.search.QParser.getQuery(QParser.java:188) ... > (manually supressed for brevity){code} > > The backtrace is much bigger, I'm attaching the raw Solr response in JSON > (which is truncated) in {_}*response-error.json*{_}, and the full error > message in _*error_full.txt*_ . Apparently there is an infinite loop on the > error message that same 9 backtrace entries are repeated ad-infinitum, so I > believe this is the reason the error message Solr gives is truncated. > *How to Reproduce the Error* > I was able to create an small reproducible example to replicate the error. It > creates a collection with two fields, and index 2 example documents. I > provide the bash scripts to create the collections, and also the script to > make the query. These are the scripts: > * {*}create_example-solr_9_0.sh{*}: creates the collection, the fields, > schema and index example documents for Solr 9.0. > * {*}create_example-solr_9_1.sh{*}: creates the collection, the fields, > schema and index example documents for Solr 9.1. > * {*}run_query.sh{*}: executes the query that will responde correctly on > Solr 9.0, and will return a Java Stack Overflow error on Solr 9.1. > I have created separated scripts for Solr 9.0 and Solr 9.1 because of the > change on the parameters of the Dense Vector field, which when from > codecFormat to knnAlgorithm. So the two scripts differ only when defyning the > vector field type. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org