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

Jens Zurawski <[email protected]> Fri, 27 Oct 2023 13:12:08 +0200
Newsgroups gmane.comp.java.openejb.user
Message-ID <[email protected]>
Thanks Richard (and Vicente),

I've changed to JDK 8 and now the builds are successful (both 8.0.6 and 
8.0.8).

I'll script me some test scripts to ease the build, run and test for 
every bisect step.
A build needs around 3 to 4 minutes. Running a test with my application 
will need some manual interaction and checks, I guess also something 
around 4 minutes. This sums up to roughly 8 minutes per step.

I've started a bisect and it told me:
git bisect good 20441eb
git bisect bad 4c8a616
Bisecting: 136 revisions left to test after this (roughly 7 steps)

That means, if everything works fine, I should be able to identify the 
commit after about an hour? (That's cool.... why nobody has told me 
about git bisect before? ;-) )

Anyway, I will have to find some time for this, maybe I need a couple of 
days to find some.
I will let you know about the outcome.

cu
Jens


Am 27.10.2023 um 11:50 schrieb Richard Zowalla:
> Hi,
>
> you need Java/JDK 8 to build TomEE 8.
>
> The Maven command is
>
> mvn --fail-at-end clean install -pl tomee/apache-tomee -am -
> Dfile.encoding=UTF-8 -DskipTests=true
>
> You will find the tar.gz/zip in ./tomee/apache-tomee/target
>
> Gruß
> Richard
>
> P.S. 8.0.7 is here: https://archive.apache.org/dist/tomee/tomee-8.0.7/
>
> Am Freitag, dem 27.10.2023 um 10:50 +0200 schrieb Jens Zurawski:
>> 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
>>>>>>>>>>
>>>>>>>>>>
>>>>>>