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

Michael McCandless commented on LUCENE-7953:
--------------------------------------------

Thanks for the explanation [~thetaphi]!

bq. Instead, I would only suggest that any exception thrown by the 
ExpressionValueSource's ctor maybe preserves the expression as part of the 
message.

I like this approach; so maybe in {{ExpressionValueSource}} ctor, if there is 
an exception calling {{getDoubleValuesSource}}, we could catch that and throw a 
new exception with the expression in its message, with the inner exception as 
its cause, maybe.

> Can we include the expression string in the stack frame for problems 
> evaluating Lucene expressions?
> ---------------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-7953
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7953
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/expressions
>            Reporter: Michael McCandless
>            Priority: Minor
>
> I'm working with rather complex expressions to compute relevance, and when 
> there is a problem, I see a stack trace like this:
> {noformat}
> Server error:
> java.lang.IllegalArgumentException: field "is_prime" has type bin, which 
> cannot be used in an expression
>         at 
> com.amazon.lucene.Searcher$IndexBindings.getDoubleValuesSource(Searcher.java:373)
>         at 
> com.amazon.lucene.Searcher$QueryBindings.getDoubleValuesSource(Searcher.java:302)
>         at 
> org.apache.lucene.expressions.ExpressionValueSource.<init>(ExpressionValueSource.java:45)
>         at 
> org.apache.lucene.expressions.Expression.getDoubleValuesSource(Expression.java:97)
>         at 
> com.amazon.lucene.Searcher$IndexBindings.getDoubleValuesSource(Searcher.java:378)
>         at 
> com.amazon.lucene.Searcher$QueryBindings.getDoubleValuesSource(Searcher.java:302)
>         at 
> org.apache.lucene.expressions.ExpressionValueSource.<init>(ExpressionValueSource.java:45)
>         at 
> org.apache.lucene.expressions.Expression.getDoubleValuesSource(Expression.java:97)
>         at 
> com.amazon.lucene.Searcher$IndexBindings.getDoubleValuesSource(Searcher.java:378)
>         at 
> com.amazon.lucene.Searcher$QueryBindings.getDoubleValuesSource(Searcher.java:302)
>         at 
> org.apache.lucene.expressions.ExpressionValueSource.<init>(ExpressionValueSource.java:45)
>         at 
> org.apache.lucene.expressions.Expression.getDoubleValuesSource(Expression.java:97)
>         at 
> com.amazon.lucene.Searcher$IndexBindings.getDoubleValuesSource(Searcher.java:378)
>         at 
> com.amazon.lucene.Searcher$QueryBindings.getDoubleValuesSource(Searcher.java:302)
>         at 
> com.amazon.lucene.http.SearchA9Handler.handleInner(SearchA9Handler.java:459)
>         at 
> com.amazon.lucene.http.SearchA9Handler.handle(SearchA9Handler.java:99)
>         at <server>
> {noformat}
> It's my code that's throwing the exception, but it would sure be nice if all 
> the intermediate stack frames in the exception would include the expression 
> text (or maybe some smallish prefix of it, in case it's gigantic), because I 
> think here I have 3 levels of expression, and it'd be nice to know which 
> sub-expressions, sub-sub-expressions, etc., led to the offensive {{is_prime}} 
> field.
> I don't know how to do this, but e.g. I know our randomizedtesting lib is 
> able to modify stack to insert test seeds, so it seems to be possible.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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

Reply via email to