On Thu, Jan 12, 2023 at 10:21 AM Tobias Gierke <tobias.gie...@voipfuture.com.invalid> wrote:
> Hi Martin, > > I wonder why people create images of plain text to paste it in text > context (email) ... It just makes it hard to do anything with this text, > e.g. to copy/paste the relevant part! > > Good point, will try to better myself ;) > You did it again! :-) > > In your first email the CacheKey says that the scope is o.a.w.Application, > but here we see that it actually is > com.vodecc.voipmng....PageWithLoginScreenLayout > > The heap dump I'm talking about in my first e-mail is from one of our > largest customers and was provided to me by one of our support guys. > Because the code is running inside a highly secured internal network (telco > business), I cannot do any remote debugging there. So my debugger > screenshots are taken on my local dev machine running the same GIT tag. > There's only a single page in the whole application where those resources > (except for the PNG image which is used elsewhere as well) are being used - > and that is the application's login page. > > the "name" is "css/qrystal.css" > and there are no locale/style/variation at all in the url (link's href), > as expected > > I probably didn't explain this very well, the memory leak happens during > processing of the "redirect to login page" AJAX request triggered when a > user clicks a button on our "session expired" page (see below) and we > perform an internal redirect to the login page. > > > Does it help if you change the above to setResponsePage(WicketLoginPage.class, p) ? > also there is no page instance information in the css' href (pageId, > renderCount, behaviorId)... > the hashing 167344540504 is not related to the CacheKey > > I'd suggest you to put a conditional breakpoint at > WicketFilter#processFilter() and see whether there are requests to url that > contains both "o.a.w.Application" and "qrystal-login" > If this does not break then do the same in CacheKey constructor > > > 1.) Put a conditional breakpoint on "key.style != null" in > CachingResourceStreamLocator#updateCache() > > As I've said before, we're never calling WebSession#setStyle() so this > breakpoint should never trigger. > > 2.) After starting the application in debug mode, I enter the URL of a > mounted,protected (=login required) page into the browser's navigation bar > and am being redirected to our application's "Page expired/Login required" > page with the AJAX button mentioned above. > > 3.) Clicking the AJAX button immediately makes the debugger stop at the > "impossible" breakpoint > > > 3.) Going up the call stack to the WicketFilter class shows that the > request currently being processed is in fact the AJAX request triggered by > the "Go to login page" button > > > The "CacheKey.style" is "1.0" which matches what is present in the request > URL. > > So the memory leak happens during rendering the response for "onclick" > AJAX request, which is our login page. > I see! Can you reproduce this in a quickstart ?