Re: Very slow JSF Development Mode on tomee 8.x newer than 8.0.6

Jens Zurawski <[email protected]> Fri, 27 Oct 2023 10:50:22 +0200
Newsgroups gmane.comp.java.openejb.user
Message-ID <[email protected]>
Hi Richard,

to identify the "bad" version was easy. I didn't find a 8.0.7 release on 
the download page, so I started with 8.0.8. And this version already has 
the slow dev mode. So for my problem I can say:
good: 8.0.6
bad: 8.0.8

Now, I think, I need a little help from you. I tried to build a TomEE 
out of git (I've cloned the github repository 
https://github.com/apache/tomee.git). I've tried these two commits:
20441eb (tag: tomee-8.0.6)
4c8a616 (tag: tomee-project-8.0.8)

But the build fails every time on "TomEE :: Container :: Core" with:

[INFO] BUILD FAILURE
[INFO] 
------------------------------------------------------------------------
[INFO] Total time:  01:19 min
[INFO] Finished at: 2023-10-27T10:29:40+02:00
[INFO] 
------------------------------------------------------------------------
[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-compiler-plugin:3.6.2:compile 
(default-compile) on project openejb-core: Compilation failure: 
Compilation failure:
[ERROR] 
/sandbox/tomee/container/openejb-core/src/main/java/org/apache/openejb/core/OrbFactory.java:[21,21] 
package org.omg.CORBA does not exist
[ERROR] 
/sandbox/tomee/container/openejb-core/src/main/java/org/apache/openejb/core/OrbFactory.java:[24,12] 
cannot find symbol
[ERROR]   symbol:   class ORB
[ERROR]   location: class org.apache.openejb.core.OrbFactory

I've tried to build with:
mvn clean install

My build environment is a linux ubuntu 20.04.6 LTS VM with:
git 2.25.1
Maven 3.6.3
java 14.0.2

Is it some easy thing to fix, or do I have to switch some versions of my 
environment?

cu
Jens

Am 26.10.2023 um 19:48 schrieb Richard Zowalla:
> Hi,
>
> without knowing code or having a reproducer, it might be not that
> obvious to find a reason / answer for the "academic problem" ;-)
>
> If you really want to boil it down, I recommend the following approach:
>
> (1) From your description it seems, that 8.0.6 is the last known "good"
> version.
>
> (2) You've investigated versions starting from 8.0.12 onwards, which
> seems to be "bad".
>
> Following the approach recommended by Jonathan:
>
> - Can you check if it happens in 8.0.7 (8.0.8, ...) until we find the
> first "bad" released version?
>
> - If we have that, you could start a "git bisect" session between 8.0.6
> and the first version, which is known to be bad (reducing the amount of
> needed bisect cycles dramatically), so we find a commit / reason (if it
> is in TomEE).
>
> - It would involve some quick builds without executing tests (~10-15min
> each) for each bisect step and testing on your side.
>
> Don't know if your inner monk is willing to go that route, but I am
> happy to help with the related Maven commands for quick building :)
>
> Gruß
> Richard
>
>
>
>
>
> Am Donnerstag, dem 26.10.2023 um 18:00 +0200 schrieb Jens Zurawski:
>> Hi Vicente,
>>
>> thank you for the tip. This is a good workaround. When I switch to
>> Production mode and insert this configuration, it reloads the view
>> from
>> the file if it has changed. This means, I can use a decent version of
>> TomEE in my dev environment.
>>
>> However, it doesn't completely solve my problem, as the error
>> reporting
>> isn't as verbose as in Dev mode as far as I can see. But I have to
>> check, maybe it's enough for my development.
>>
>> And, well.... the academic problem: "Why is it still broken in Dev
>> mode?" still runs circles through my brain ;-) Because if it's a
>> problem
>> of my coding, it might be a good idea to change this, before it might
>> get a problem on Production mode, too, at some time in the future.
>>
>> But anyway, you've helped me a good step forward, thanks.
>> cu
>> Jens
>>
>>
>> Am 26.10.2023 um 17:04 schrieb Vicente Rossello:
>>> We are using the production stage with
>>> javax.faces.FACELETS_REFRESH_PERIOD
>>> = 1. It's faster and more similar to production, just try it if it
>>> solves
>>> your problem
>>>
>>> On Thu, Oct 26, 2023 at 4:18 PM Jens Zurawski <[email protected]>
>>> wrote:
>>>
>>>> The one bundled with TomEE.
>>>> myfaces 2.3.7 on TomEE 8.0.6
>>>> and  e.g. myfaces 2.3.9 on TomEE 8.0.12
>>>>
>>>> Am 26.10.2023 um 16:08 schrieb Richard Zowalla:
>>>>> Which JSF lib are you using?
>>>>>
>>>>> Am 26. Oktober 2023 16:00:57 MESZ schrieb Jens Zurawski
>>>>> <[email protected]
>>>>> :
>>>>>> Thank you for your quick reply, Jonathan.
>>>>>>
>>>>>> It is good to know, that normally the Dev mode should work as
>>>>>> fast as
>>>> before even with 8.0.15. So it obviously has something to do with
>>>> my
>>>> environment, configuration and/or code.
>>>>>> And also thank you for the reference to tomitribe.
>>>>>> Unfortunately I'm
>>>> the only developer on this project, and it will be difficult to
>>>> convince my
>>>> customer to an additional support subscription, because he on
>>>> production
>>>> doesn't have issues ;-) But, ok, that's my problem, and maybe
>>>> I'll consult
>>>> tomitribe in the future for other projects.
>>>>>> So, I'm afraid, for the near future I'm on my own to solve
>>>>>> this
>>>> problem. Therefore any hints to restrict the places where I
>>>> should take a
>>>> look will be more than welcome.
>>>>>> I'm a senior programmer with 20 years of experience in Java
>>>>>> programming
>>>> (SE and JSP). But I'm relative new to JSF/JavaEE/JakartaEE and
>>>> sometimes I
>>>> have a hard time to understand which component of the whole stack
>>>> is
>>>> responsible for what.
>>>>>> The project meanwhile has over a 1/4 million lines of code
>>>>>> (most of
>>>> them in the back-end, but also the front-end is big enough to not
>>>> trace
>>>> through every lane if I want to get to the point in this life :-D
>>>> ).
>>>>>> The application now runs for nearly 2 years on the customers
>>>>>> site and
>>>> is very reliable and fast in its daily usage. Apart from
>>>> occasional updates
>>>> every few month, it will never be restarted or need any manual
>>>> maintenance
>>>> at all. So I assume the code is not the badest on earth. At least
>>>> because
>>>> of that I'm able to out-rule things like memory leaks, gc issues
>>>> or
>>>> bottlenecks (max Heap is never reached, neither half of it, even
>>>> after
>>>> running for month).
>>>>>> Of course there could be aspects of JSF which I may not have
>>>>>> understood
>>>> correctly until now. But because there are so many new things to
>>>> a JSF
>>>> beginner like me, I'm running out of ideas what this could be. It
>>>> is
>>>> something that worked well 'til TomEE 8.0.6 (Prod and Dev mode)
>>>> and
>>>> suddenly don't work anymore on 8.0.12 in Dev mode (but still
>>>> works great in
>>>> Prod mode). There are only minor versions in-between. So I think
>>>> there were
>>>> no revolutionary changes anywhere. My hope was (and still is),
>>>> that anybody
>>>> here on the list might have had a similar problem and has solved
>>>> it, or
>>>> maybe someone knows about some changes in Dev mode which could
>>>> explain such
>>>> behaviour (don't know, maybe xml parsing or component tree
>>>> generation has
>>>> changed, or scope handling of managed beans, or whatever could
>>>> cause some
>>>> code to be entered far more often than before, or some cache/pool
>>>> was
>>>> removed or has different behaviour... such things). Then it would
>>>> be far
>>>> more easy for me to track down the real problem.
>>>>>> Anyway, when I get some spare time (currently have some
>>>>>> deadlines in
>>>> sight), I'll try to build a small test case. Either I can get a
>>>> grip on the
>>>> issue myself on doing this, or I can supply it to anyone who
>>>> might want to
>>>> have a look at it.
>>>>>> cu
>>>>>> Jens
>>>>>>
>>>>>>
>>>>>>
>>>>>> Am 26.10.2023 um 14:01 schrieb Jonathan S. Fisher:
>>>>>>>> newer versions are so incredibly slow in dev mode
>>>>>>> I can assure you that Dev/Prod mode works very very swiftly
>>>>>>> on 8.0.15
>>>>>>> for sizable applications. For example, I have a giant
>>>>>>> application
>>>>>>> (thousands of LOC, 50+ jsf views) that has sub-8ms response
>>>>>>> times
>>>>>>> (minus database time). More than likely they are doing
>>>>>>> something they
>>>>>>> should not be doing with JSF apis and are causing problems.
>>>>>>>
>>>>>>> I would check the obvious things first with VisualVM: heap
>>>>>>> size, gc
>>>>>>> frequency, etc. You can also run their profiler and see if
>>>>>>> you can
>>>>>>> spot anything immediately obvious.
>>>>>>>
>>>>>>> After that, the easiest way to locate the code slowing you
>>>>>>> down is
>>>>>>> bisection. Cut half the code out, run, and continue cutting
>>>>>>> until you
>>>>>>> can locate the problematic code. Then after that, isolate a
>>>>>>> test case
>>>>>>> where flipping a boolean flag triggers the issue and post
>>>>>>> the results
>>>>>>> here.
>>>>>>>
>>>>>>> I would get ahold of: https://www.tomitribe.com who are
>>>>>>> literal
>>>>>>> experts in this stuff. They offer professional services to
>>>>>>> handle
>>>>>>> exactly these situations and can work directly in your
>>>>>>> codebase to
>>>>>>> help you find and fix the problem.
>>>>>>>
>>>>>>> On Thu, Oct 26, 2023 at 5:48 AM Jens Zurawski
>>>>>>> <[email protected]> wrote:
>>>>>>>> Hi altogether,
>>>>>>>>
>>>>>>>> I'm new to this list and hope it's the right place to ask
>>>>>>>> this
>>>> question.
>>>>>>>> If not, and someone know the right place to ask this,
>>>>>>>> please give
>>>> advise.
>>>>>>>> I'm developing a big JSF Application for a customer. It's
>>>>>>>> a long
>>>> running
>>>>>>>> project and development and when I started with it, TomEE
>>>>>>>> 8.0.6 was
>>>> the
>>>>>>>> most recent Version of TomEE. The switch to Jakarta is
>>>>>>>> planned for
>>>> next
>>>>>>>> year, so I'm still on the 8.x path for the time being and
>>>>>>>> wasn't able
>>>> to
>>>>>>>> test if this problem still exists in the 9.x branch.
>>>>>>>>
>>>>>>>> The problem:
>>>>>>>> On the customers site I'm with the latest TomEE version
>>>>>>>> 8.0.15
>>>> (running
>>>>>>>> on Java 11) and everything works fine, because it is
>>>>>>>> running in
>>>>>>>> production mode. But in my development environment I'm
>>>>>>>> still stuck
>>>> with
>>>>>>>> 8.0.6, because there I need the development mode
>>>>>>>> (javax.faces.PROJECT_STAGE: Development). I need to be
>>>>>>>> able to see
>>>>>>>> changes in facelets without restarting everything
>>>>>>>> everytime, and to
>>>> get
>>>>>>>> more detailed error messages.
>>>>>>>> My attempts to update my dev TomEE to something newer
>>>>>>>> than 8.0.6 all
>>>>>>>> failed, because all (at least all I've tested so far)
>>>>>>>> newer versions
>>>> are
>>>>>>>> so incredibly slow in dev mode, that it's unbearable to
>>>>>>>> use the
>>>>>>>> application. Several very looong seconds on every request
>>>>>>>> (even the
>>>>>>>> little AJAX requests in a view) is simply not a practical
>>>>>>>> environment.
>>>>>>>> After switching to Production mode everything works very
>>>>>>>> fast, and all
>>>>>>>> my views have response times of very few ms (even the big
>>>>>>>> ones with
>>>> max.
>>>>>>>> around 400ms). When switching back to Development mode I
>>>>>>>> have response
>>>>>>>> times of up to 30s on big views. Not with 8.0.6, there
>>>>>>>> even in
>>>>>>>> development mode it's reasonable fast in not getting
>>>>>>>> higher than 1s.
>>>>>>>>
>>>>>>>> My question:
>>>>>>>> What causes this enormous performance degradation? I'm
>>>>>>>> hoping, it is
>>>>>>>> just a configuration which now has another default value
>>>>>>>> or the like.
>>>> If
>>>>>>>> yes, maybe someone can point me in the right direction of
>>>>>>>> where to
>>>> find
>>>>>>>> this configuration? If it's not a configuration thing:
>>>>>>>> what can I do
>>>> to
>>>>>>>> get around this?
>>>>>>>>
>>>>>>>> I haven't tested all Versions of TomEE from 8.0.6 to
>>>>>>>> 8.0.15, so I
>>>> can't
>>>>>>>> say at what version exactly this behaviour changes. If it
>>>>>>>> helps or is
>>>>>>>> needed, I can make some tests to find the exact version
>>>>>>>> where this
>>>>>>>> happens. Versions I've already tested are: 8.0.12, 8.0.13
>>>>>>>> and 8.0.15.
>>>>>>>> All of them are very slow in dev mode. If you need more
>>>>>>>> information,
>>>>>>>> I'll try to provide it.
>>>>>>>>
>>>>>>>> Thanks in advance for any help
>>>>>>>> cu
>>>>>>>> Jens
>>>>>>>>
>>>>>>>>
>>>> --
>>>> jens zurawski
>>>> diegurus - zurawski zurawski poppl rohland GbR
>>>> juister straße 3
>>>> 65199 wiesbaden
>>>>
>>>> kaspersweg 7b
>>>> 26131 oldenburg
>>>>
>>>> internet http://www.diegurus.de
>>>>
>>>> tel +49(0)611 72437966
>>>>
>>>>
>>>> CONFIDENTIALITY NOTICE: This e-mail message is intended only for
>>>> the
>>>> person or entity to which it is addressed and may contain
>>>> confidential
>>>> and/or privileged material. Any unauthorized review, use,
>>>> disclosure or
>>>> distribution is prohibited. If you are not the intended
>>>> recipient,
>>>> please contact the sender by reply e-mail and destroy all copies
>>>> of the
>>>> original message.  If you are the intended recipient but do not
>>>> wish to
>>>> receive communications through this medium, please so advise the
>>>> sender
>>>> immediately.
>>>>
>>>>