Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-7953

Can we include the expression string in the stack frame for problems evaluating Lucene expressions?

Details

    • Improvement
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • None
    • None
    • modules/expressions
    • None
    • New

    Description

      I'm working with rather complex expressions to compute relevance, and when there is a problem, I see a stack trace like this:

      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>
      

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            mikemccand Michael McCandless
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: