I had an unreachable Lucee server today, on a machine which is barely used. About 2 requests per minute come in, from pingdom.
After investigation, I found the following errors in requesttimeout.log (see attached)
The log says a request timeout occurred at
After this timeout, any next request also times out at
Which makes sense, because the function at IKStorageScopeSupport.java:213 is a synchronized function, so the follow-up requests are waiting forever.
After a restart of Tomcat, the same thing happened again 70 minutes later! Again, see the (same) attached log.
The web application in question has this.sessionstorage = "datasource Name"; and this.sessionCluster=true; set in Application.cfc.
The stack traces I added to this ticket before, are good enough, right? Or do you really want to get the same results again?
so far yes
in version 126.96.36.199 it seems that this code (https://github.com/lucee/Lucee/blob/188.8.131.52/core/src/main/java/lucee/runtime/type/scope/storage/IKStorageScopeSupport.java#L213) should be blocked on line 211 and not 213. are you sure this is the right version this stacktrace was produced in? i just want to be sure that i'm not haunting a ghost.
none of the implementations of IKHandler.loadData methods are synchronised so entering this methods should never be blocked in 184.108.40.206
sadly this change is not based on a ticket, i will investigate why this change was made and how we can improve it.
we stopped using synchronised with the method declaration anyway, we now only use synchronised code blocks, to limit the code in synchronised state.
we will for sure improve that code in that way.