Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Duplicate
-
Affects Version/s: 1.8.2
-
Fix Version/s: EE-1.8.2.GA_P04
-
Component/s: Release
-
Labels:None
-
Environment:AIX, WebSphere Application Server v6.1
Description
When we call explicit session invalidation within our application, sometimes the thread stucks with the stacktrace attached below. These threads are staying in the wait() forever. And due to IBM's session implementation, this blocks further threads, which require session data as well.
at java/lang/Object.wait(Native Method)
at java/lang/Object.wait(Object.java:199(Compiled Code))
at edu/emory/mathcs/backport/java/util/concurrent/locks/ReentrantLock$NonfairSync.lock(ReentrantLock.java:199(Compiled Code))
at edu/emory/mathcs/backport/java/util/concurrent/locks/ReentrantLock.lock(ReentrantLock.java:481(Compiled Code))
at com/icesoft/faces/context/View.acquireLifecycleLock(View.java:231(Compiled Code))
at com/icesoft/faces/context/View.dispose(View.java:213(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/MainSessionBoundServlet$5.run(MainSessionBoundServlet.java:172(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/MainSessionBoundServlet.shutdown(MainSessionBoundServlet.java:196)
at com/icesoft/faces/webapp/http/servlet/SessionDispatcher.sessionShutdown(SessionDispatcher.java:105(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/SessionDispatcher.notifySessionShutdown(SessionDispatcher.java:164(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/SessionDispatcher.access$500(SessionDispatcher.java:30(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/SessionDispatcher$Listener.sessionDestroyed(SessionDispatcher.java:243(Compiled Code))
at com/icesoft/faces/util/event/servlet/ContextEventRepeater.sessionDestroyed(ContextEventRepeater.java:318(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/SessionContext.sessionDestroyedEvent(SessionContext.java:3652(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/SessionData.sessionUnbound(SessionData.java:1021(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/SessionContext.notifySessionInvalidated(SessionContext.java:1115(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/SessionData.invalidate(SessionData.java:624(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/HttpSessionFacade.invalidate(HttpSessionFacade.java:181(Compiled Code))
at com/ibm/_jsp/_error._jspService(_error.java:111)
We tried to exchange the backport-util-concurrent.jar to the latest version (3.1). We hoped that there may be some problem with the ReentrantLock implementation. But after a couple of days we again had the similar issue.
Could you please help us find a solution for this? What is the purpose of this lifecyclelock within the dispose? Or what event should bring it out of the lock?
Thanks for your help in advance!
at java/lang/Object.wait(Native Method)
at java/lang/Object.wait(Object.java:199(Compiled Code))
at edu/emory/mathcs/backport/java/util/concurrent/locks/ReentrantLock$NonfairSync.lock(ReentrantLock.java:199(Compiled Code))
at edu/emory/mathcs/backport/java/util/concurrent/locks/ReentrantLock.lock(ReentrantLock.java:481(Compiled Code))
at com/icesoft/faces/context/View.acquireLifecycleLock(View.java:231(Compiled Code))
at com/icesoft/faces/context/View.dispose(View.java:213(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/MainSessionBoundServlet$5.run(MainSessionBoundServlet.java:172(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/MainSessionBoundServlet.shutdown(MainSessionBoundServlet.java:196)
at com/icesoft/faces/webapp/http/servlet/SessionDispatcher.sessionShutdown(SessionDispatcher.java:105(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/SessionDispatcher.notifySessionShutdown(SessionDispatcher.java:164(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/SessionDispatcher.access$500(SessionDispatcher.java:30(Compiled Code))
at com/icesoft/faces/webapp/http/servlet/SessionDispatcher$Listener.sessionDestroyed(SessionDispatcher.java:243(Compiled Code))
at com/icesoft/faces/util/event/servlet/ContextEventRepeater.sessionDestroyed(ContextEventRepeater.java:318(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/SessionContext.sessionDestroyedEvent(SessionContext.java:3652(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/SessionData.sessionUnbound(SessionData.java:1021(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/SessionContext.notifySessionInvalidated(SessionContext.java:1115(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/SessionData.invalidate(SessionData.java:624(Compiled Code))
at com/ibm/ws/webcontainer/httpsession/HttpSessionFacade.invalidate(HttpSessionFacade.java:181(Compiled Code))
at com/ibm/_jsp/_error._jspService(_error.java:111)
We tried to exchange the backport-util-concurrent.jar to the latest version (3.1). We hoped that there may be some problem with the ReentrantLock implementation. But after a couple of days we again had the similar issue.
Could you please help us find a solution for this? What is the purpose of this lifecyclelock within the dispose? Or what event should bring it out of the lock?
Thanks for your help in advance!
Issue Links
- duplicates
-
ICE-5649 Deadlock on session invalidation
- Closed
Having the same issue...