Andi Vajda <[email protected]> wrote:
>
> On Mon, 27 Sep 2010, Bill Janssen wrote:
>
> > Here's a printout of what I'm seeing:
> >
> > UpLibQueryParser.parse('_query_language:nl janssen')...
> > => lucene.VERSION: 3.0.2 , jcc._jcc.JCC_VERSION 2.6
> > => Exception received is JavaError(<Throwable:
> > org.apache.jcc.PythonException: Query specifies language 'nl'
> > Traceback (most recent call last):
> > File "/u/python/uplib/indexing.py", line 591, in getFieldQuery
> > raise RequiresQueryLanguage(text)
> > __main__.RequiresQueryLanguage: Query specifies language 'nl'
> > >,)
>
> You are using --shared because the exception you're getting is
> PythonException.
>
> > Is there some way to check to see if lucene is using --shared at runtime?
>
> No direct way that I can think of at the moment.
>
> So, it looks like you're getting a JavaError that wraps a PythonException.
> Yet it's wrapped by a JavaError. This could mean that the test that
> checks if the PythonException instance is of class PythonException
> line 426 in JCCEnv.cpp is failing.
>
> As a hack, try changing that line to do a string compare on the class
> names instead. Or just force it to true, even.
OK, I tried that, no improvement. I used the 3.0.2 source distro.
Here's my hacked version of reportException:
void JCCEnv::reportException() const
{
JNIEnv *vm_env = get_vm_env();
jthrowable throwable = vm_env->ExceptionOccurred();
if (throwable)
{
if (!env->handlers)
vm_env->ExceptionDescribe();
#ifdef PYTHON
PythonGIL gil;
if (PyErr_Occurred())
{
/* _thr is PythonException ifdef _jcc_lib (shared mode)
* if not shared mode, _thr is RuntimeException
*/
jobject cls = (jobject) vm_env->GetObjectClass(throwable);
if (true)
{
#ifndef _jcc_lib
/* PythonException class is not available without shared mode.
* Python exception information thus gets lost and exception
* is reported via plain Java RuntimeException.
*/
PyErr_Clear();
throw _EXC_JAVA;
#else
throw _EXC_PYTHON;
#endif
}
}
#endif
throw _EXC_JAVA;
}
}
And here's what I see:
Exception received is JavaError(<Throwable: org.apache.jcc.PythonException:
Query specifies language 'nl'
Traceback (most recent call last):
File "/u/python/uplib/indexing.py", line 591, in getFieldQuery
raise RequiresQueryLanguage(text)
__main__.RequiresQueryLanguage: Query specifies language 'nl'
>,)
This implies that _jcc_lib (or PYTHON) is not #defined.
Bill