I recently found these warnings in our logs. I am not an expert on threading or tomcat. Does anyone have some advice on how to debug this problem?
We are running a wicket application on a tomcat server. Let me know if any other information would be useful. Thanks in advance for any help.
[Jun 24, 2014 11:28:40] WARN [org.apache.wicket.page.PageAccessSynchronizer]
- Thread 'ajp- bio-8009-exec-26' failed to acquire lock to page with id '4',
attempted for 1 minute out of allowed 1 minute. The thread that holds the
lock has name 'ajp-bio-8009-exec-20'.
[Jun 24, 2014 11:28:40] WARN [org.apache.wicket.page.PageAccessSynchronizer]
- "ajp-bio-8009-exec-20" daemon prio=5 tid=40 state=RUNNABLE
I had the same problem once on a page with a very long database query. The query was expected to be long so the 1+ minute load time for that page was expected. But if I clicked to an other page, that page will load after the first one and will time-out if it doesn't start loading within a minute, and here I got the same error as you had.
I solved this by using Lazy loading of my long database query page. An example of AjaxLazyLoadPanel is here.
Second thing you can do is what svenmeier suggested and increase the timeout like so:
getRequestCycleSettings().setTimeout(Duration.minutes(3));
This will still make the second request wait for the first one but Wicket gives it more time.