I made an issue and attached some patches:
https://issues.apache.org/jira/browse/OPENJPA-1741

On Wed, Jul 21, 2010 at 9:44 AM, David Minor <[email protected]> wrote:
> Would it also make sense for getPathOrConstant() to call
> isSeenVariable() prior to attempting the class lookup? That seems to
> work for a query like:
>
> "select do from DomainObject do where do.uid > 10 and do.length < 4"
>
> but wouldn't work as well for a query like
>
> "select do.anotherObject from DomainObject do where
> do.anotherObject.uid > 10 and do.length < 4".
>
> Both of these queries result in 9 failed class load attempts during parsing.
>
>
>>
>> -----Original Message-----
>> From: Jean-Baptiste BRIAUD -- Novlog [mailto:[email protected]]
>> Sent: Tuesday, July 20, 2010 11:57 PM
>> To: [email protected]
>> Subject: Re: JPQL class lookup performance
>>
>> Hi David,
>>
>> Very interesting !
>> In fact, one stack trace per class not found is enough, no need to
>> repeat the error.
>> A cache (a simple Map ?) should be OK.
>>
>> On 20 juil. 2010, at 21:08, David Minor wrote:
>>
>>> Hi,
>>>
>>> In some performance analysis (via periodic thread dumps), we've
>>> noticed that roughly 1/4 of our openjpa threads are in
>>> JPQLExpressionBuilder's getPathOrConstant(), attempting to lookup
>>> classes. And 1/3 of those are busy filling in stack traces because the
>>
>>> path isn't a class.
>>>
>>> The lookup ultimately occurs in QueryImpl.toClass() via
>>> QueryImpl.classForName(), which tries a few variations for each
>>> lookup. Is it possible to cache the results of these lookups somewhere
>>
>>> to improve performance?
>>>
>>> We're using version 1.2.1, although the code in question doesn't seem
>>> to have changed.
>>>
>>> --
>>> _____________
>>> David Minor
>>
>>
>>
>>
>>
>
>
>
> --
> _____________
> David Minor
>



-- 
_____________
David Minor

Reply via email to