Hi,

I made a test with veto at package level to try to see if the patch is
correct, if it's of any use. https://github.com/apache/openwebbeans/pull/30

Feel free to comment or just discard it.

On Mon, Jul 27, 2020 at 11:30 AM Mark Struberg <[email protected]> wrote:

> Should work as expected. I need to think through if we really need to walk
> into all superpackages in the while(true).
> Or if we should try to get those results from the cache as well.
>
> a.b.c.d.e.f.x1
> a.b.c.d.e.f.x2
>
> In that case the whole list up to f should already be cached for x2.
>
> LieGrue,
> strub
>
>
>
> Am 27.07.2020 um 11:19 schrieb Vicente Rossello <[email protected]>:
>
> Hi,
>
> That's what already did and times become as usual, but I'm not sure if it
> breaks something (I'm not using any veto). Tests in openwebbeans-impl do
> work with this change
>
> On Mon, Jul 27, 2020 at 11:14 AM Mark Struberg <[email protected]> wrote:
>
>> Hi Vincente!
>>
>> There is a bit code before that block which already checks the cache:
>>
>> Boolean result = packageVetoCache.get(previousPackage);
>> if (result != null && result)
>> {
>>     return result;
>> }
>>
>>
>> Imo it should also return if a False is cached.
>> can you please remove the && result and do a bench again?
>>
>> txs and LieGrue,
>> strub
>>
>>
>>
>> Am 27.07.2020 um 10:00 schrieb Vicente Rossello <[email protected]>:
>>
>> Hi,
>>
>> I've seen a startup performance regression since OWB 2.0.17 and latest
>> snapshot. Our boot times have increased from 10 to about 14 seconds (only
>> OWB side). I can see that it always try to load the same package-info's in:
>>
>> while (true)
>> {
>>     try // not always existing but enables to go further when getPackage is 
>> not available (graal)
>>     {
>>         pckge = classLoader.loadClass(previousPackage +
>>                 (previousPackage.isEmpty() ? "" :".") + 
>> "package-info").getPackage();
>>         break;
>>     }
>>     catch (Exception e)
>>     {
>>         if (previousPackage.isEmpty())
>>         {
>>             pckge = null;
>>             break;
>>         }
>>         packageVetoCache.put(previousPackage, false);
>>         idx = previousPackage.lastIndexOf('.');
>>         if (idx > 0)
>>         {
>>             previousPackage = previousPackage.substring(0, idx);
>>         }
>>         else
>>         {
>>             previousPackage = "";
>>         }
>>     }
>> }
>>
>>
>> I think that, in this loop, it should take into account the packageVetoCache 
>> (whether it's true or false). Is it correct? Do you want a PR with this 
>> correction?
>>
>>
>> Best regards,
>>
>> Vicente.
>>
>>
>>
>

Reply via email to